mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-25 21:32:51 +09:00
#186 관리자 > 회원 관리 목록에서 선택된 회원들에 대한 일괄 그룹 설정 기능 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3481 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
6e9c022dc7
commit
1fe9c2c88e
15 changed files with 197 additions and 0 deletions
|
|
@ -32,6 +32,7 @@
|
|||
<action name="dispMemberAdminInfo" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminInsertJoinForm" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminDeniedIDList" type="view" standalone="true" />
|
||||
<action name="dispMemberAdminManageGroup" type="view" standalone="true" />
|
||||
|
||||
<action name="getMemberMenu" type="model" standalone="true" />
|
||||
<action name="getMemberAdminColorset" type="model" standalone="true" />
|
||||
|
|
@ -79,6 +80,7 @@
|
|||
<action name="procMemberAdminInsertConfig" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateMembersGroup" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertJoinForm" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminUpdateJoinForm" type="controller" standalone="true" />
|
||||
<action name="procMemberAdminInsertDeniedID" type="controller" standalone="true" />
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@
|
|||
$lang->msg_allow_message_to_friend = "Failed to send because receiver only allows friends' messages";
|
||||
$lang->msg_disallow_message = 'Failed to send because receiver rejects message reception';
|
||||
$lang->msg_insert_group_name = 'Please input name of group';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_profile_image = 'Profile image could not be registered';
|
||||
$lang->msg_not_uploaded_image_name = 'Image name could not be registered';
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@
|
|||
$lang->msg_allow_message_to_friend = "Falló el envío por permitir sólo mensajes de sus amigos";
|
||||
$lang->msg_disallow_message = 'Falló el envío por ser usuario rechazado para recibir mensajes';
|
||||
$lang->msg_insert_group_name = 'Por favor ingresar el nombre del grupo';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = 'Imagen del nombre no puede ser registrado';
|
||||
$lang->msg_not_uploaded_image_mark = 'Imagen de marca no puede ser resistrado';
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@
|
|||
$lang->msg_allow_message_to_friend = '友達からのみメッセージを受信できるように設定したユーザであるため、送信できませんでした。';
|
||||
$lang->msg_disallow_message = 'メッセージの受信を拒否している受信者であるため、送信できませんでした。';
|
||||
$lang->msg_insert_group_name = 'グループ名を入力してください。';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_profile_image = 'プロフィールイメージを登録することができません。';
|
||||
$lang->msg_not_uploaded_image_name = 'イメージ名を登録することができません。';
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@
|
|||
$lang->msg_allow_message_to_friend = '친구에게만 쪽지 수신을 허용한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->msg_disallow_message = '쪽지 수신을 거부한 사용자라서 쪽지 발송을 하지 못했습니다';
|
||||
$lang->msg_insert_group_name = '그룹명을 입력해 주세요';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_profile_image = '프로필 이미지를 등록할 수가 없습니다';
|
||||
$lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다';
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@
|
|||
$lang->msg_allow_message_to_friend = "Отправка провалена, поскольку получатель принимает сообщения только от друзей";
|
||||
$lang->msg_disallow_message = 'Отправка провалена, поскольку получатель отклоняет прием сообщений';
|
||||
$lang->msg_insert_group_name = 'Пожалуйста, введите имя группы';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = 'Имя изображения не может быть зарегистрировано';
|
||||
$lang->msg_not_uploaded_image_mark = 'Марка не может быть зарегистрирована';
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@
|
|||
$lang->msg_allow_message_to_friend = '因其为只允许接收好友短消息的用户,所以不能发送短消息。';
|
||||
$lang->msg_disallow_message = '因其为拒绝接收短消息的用户,所以不能发送短消息。';
|
||||
$lang->msg_insert_group_name = '请输入组名称';
|
||||
$lang->msg_check_group = '그룹을 선택해 주세요';
|
||||
|
||||
$lang->msg_not_uploaded_image_name = '不能登录昵称图像!';
|
||||
$lang->msg_not_uploaded_image_mark = '不能登录用户图标!';
|
||||
|
|
|
|||
|
|
@ -201,6 +201,55 @@
|
|||
$this->setMessage($msg_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 선택된 회원들의 그룹을 일괄 변경
|
||||
**/
|
||||
function procMemberAdminUpdateMembersGroup() {
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl) return new Object(-1,'msg_invalid_request');
|
||||
$member_srls = explode(',',$member_srl);
|
||||
|
||||
$group_srl = Context::get('group_srl');
|
||||
$group_srls = explode('|@|', $group_srl);
|
||||
if(!$group_srl) return new Object(-1,'msg_check_group');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->begin();
|
||||
|
||||
// 선택된 회원들의 그룹을 삭제
|
||||
$args->member_srl = $member_srl;
|
||||
$output = executeQuery('member.deleteMembersGroup', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
|
||||
// 선택된 그룹으로 추가
|
||||
$group_count = count($group_srls);
|
||||
$member_count = count($member_srls);
|
||||
for($j=0;$j<$group_count;$j++) {
|
||||
$group_srl = (int)trim($group_srls[$j]);
|
||||
if(!$group_srl) continue;
|
||||
for($i=0;$i<$member_count;$i++) {
|
||||
$member_srl = (int)trim($member_srls[$i]);
|
||||
if(!$member_srl) continue;
|
||||
|
||||
$args = null;
|
||||
$args->member_srl = $member_srl;
|
||||
$args->group_srl = $group_srl;
|
||||
|
||||
$output = executeQuery('member.addMemberToGroup', $args);
|
||||
if(!$output->toBool()) {
|
||||
$oDB->rollback();
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
}
|
||||
$oDB->commit();
|
||||
|
||||
$this->setMessage('success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 아이디 추가
|
||||
**/
|
||||
|
|
|
|||
|
|
@ -203,5 +203,22 @@
|
|||
$this->setTemplateFile('denied_id_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 그룹 일괄 변경
|
||||
**/
|
||||
function dispMemberAdminManageGroup() {
|
||||
// 선택된 회원 목록을 구함
|
||||
$args->member_srl = trim(Context::get('member_srls'));
|
||||
$output = executeQueryArray('member.getMembers', $args);
|
||||
Context::set('member_list', $output->data);
|
||||
|
||||
// 회원 그룹 목록을 구함
|
||||
$oMemberModel = &getModel('member');
|
||||
Context::set('member_groups', $oMemberModel->getGroups());
|
||||
|
||||
$this->setLayoutFile('popup_layout');
|
||||
$this->setTemplateFile('manage_member_group');
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
9
modules/member/queries/deleteMembersGroup.xml
Normal file
9
modules/member/queries/deleteMembersGroup.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<query id="deleteMembersGroup" action="delete">
|
||||
<tables>
|
||||
<table name="member_group_member" />
|
||||
</tables>
|
||||
<conditions>
|
||||
<condition operation="over" column="group_srl" default="0" />
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
14
modules/member/queries/getMembers.xml
Normal file
14
modules/member/queries/getMembers.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<query id="getMembers" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="in" column="member_srl" var="member_srl" />
|
||||
</conditions>
|
||||
<navigation>
|
||||
<index var="sort_index" default="member_srl" order="desc" />
|
||||
</navigation>
|
||||
</query>
|
||||
8
modules/member/tpl/filter/manage_member_group.xml
Normal file
8
modules/member/tpl/filter/manage_member_group.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<filter name="manage_member_group" module="member" act="procMemberAdminUpdateMembersGroup">
|
||||
<form />
|
||||
<response callback_func="completeUpdateMemberGroup">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="page" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -282,3 +282,29 @@ function doDisplaySkinColorset(ret_obj) {
|
|||
var new_height = xHeight("member_colorset");
|
||||
if(typeof(fixAdminLayoutFooter)=="function") fixAdminLayoutFooter(new_height - old_height);
|
||||
}
|
||||
|
||||
/* 그룹 일괄 변경 */
|
||||
function doManageMemberGroup() {
|
||||
var fo_obj = xGetElementById("member_fo");
|
||||
var member_srl = new Array();
|
||||
|
||||
if(typeof(fo_obj.cart.length)=='undefined') {
|
||||
if(fo_obj.cart.checked) member_srl[member_srl.length] = fo_obj.cart.value;
|
||||
} else {
|
||||
var length = fo_obj.cart.length;
|
||||
for(var i=0;i<length;i++) {
|
||||
if(fo_obj.cart[i].checked) member_srl[member_srl.length] = fo_obj.cart[i].value;
|
||||
}
|
||||
}
|
||||
|
||||
if(member_srl.length<1) return;
|
||||
|
||||
var url = './?module=member&act=dispMemberAdminManageGroup&member_srls='+member_srl.join(',');
|
||||
winopen(url, 'manageMemberGroup','scrollbars=no,width=400,height=500,toolbars=no');
|
||||
}
|
||||
|
||||
/* 그룹 일괄 변경 후 */
|
||||
function completeUpdateMemberGroup(ret_obj) {
|
||||
alert(ret_obj['message']);
|
||||
window.close();
|
||||
}
|
||||
|
|
|
|||
53
modules/member/tpl/manage_member_group.html
Normal file
53
modules/member/tpl/manage_member_group.html
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<!--%import("filter/manage_member_group.xml")-->
|
||||
<!--%import("js/member_admin.js")-->
|
||||
|
||||
<div id="popHeadder">
|
||||
<h3>{$lang->cmd_member_group} ({$lang->target} : {count($member_list)})</h3>
|
||||
</div>
|
||||
|
||||
<form action="./" method="get" id="fo_management" onsubmit="return procFilter(this, manage_member_group);">
|
||||
<input type="hidden" name="member_srl" value="{$member_srls}" />
|
||||
|
||||
<div id="popBody">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<tr>
|
||||
<td>
|
||||
<!--@foreach($group_list as $key => $val)-->
|
||||
<!--@if($val->is_admin != 'Y')-->
|
||||
<div class="fl"><input type="checkbox" value="{$key}" name="group_srl" id="member_group_{$key}"/> <label for="member_group_{$key}">{$val->title}</label> </div>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if(count($member_list))-->
|
||||
<tr>
|
||||
<td class="tCenter">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_apply}" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<tr>
|
||||
<th scope="col">{$lang->user_id}</th>
|
||||
<th scope="col">{$lang->nick_name}</th>
|
||||
<th scope="col">{$lang->signup_date}</th>
|
||||
</tr>
|
||||
<!--@foreach($member_list as $key => $val)-->
|
||||
<tr>
|
||||
<td>{$val->user_id}</td>
|
||||
<td><div class="member_{$val->member_srl}">{$val->nick_name}</div></td>
|
||||
<td>{zdate($val->regdate, "Y-m-d H:i")}</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="popFooter">
|
||||
<div class="tCenter gap1">
|
||||
<a href="#" onclick="window.close(); return false;" class="button"><span>{$lang->cmd_close}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
|
@ -3,9 +3,11 @@
|
|||
<!--%import("css/member_list.css")-->
|
||||
|
||||
<!-- 목록 -->
|
||||
<form method="get" action="./" id="member_fo">
|
||||
<table cellspacing="0" class="adminTable">
|
||||
<!--@if($lang_type == 'ko')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -15,6 +17,7 @@
|
|||
|
||||
<!--@else if($lang_type == 'en')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -24,6 +27,7 @@
|
|||
|
||||
<!--@else if($lang_type == 'zh-CN')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -33,6 +37,7 @@
|
|||
|
||||
<!--@else if($lang_type == 'jp')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -42,6 +47,7 @@
|
|||
|
||||
<!--@else if($lang_type == 'es')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -51,6 +57,7 @@
|
|||
|
||||
<!--@else if($lang_type == 'ru')-->
|
||||
<col width="50" />
|
||||
<col width="30" />
|
||||
<col />
|
||||
<col width="160" />
|
||||
<col />
|
||||
|
|
@ -61,6 +68,7 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col">{$lang->no}</th>
|
||||
<th scope="col"><input type="checkbox" onclick="checkboxSelectAll(this.form, 'cart'); return false;"/></th>
|
||||
<th scope="col">{$lang->user_id}</th>
|
||||
<th scope="col">{$lang->user_name}</th>
|
||||
<th scope="col">{$lang->nick_name}</th>
|
||||
|
|
@ -73,6 +81,7 @@
|
|||
<!--@foreach($member_list as $no => $val)-->
|
||||
<tr>
|
||||
<td class="tahoma">{$no}</td>
|
||||
<td><input type="checkbox" name="cart" value="{$val->member_srl}"/></td>
|
||||
<td class="blue">
|
||||
<a href="{getUrl('act','dispMemberAdminInfo','member_srl',$val->member_srl)}">{htmlspecialchars($val->user_id)}</a>
|
||||
<!--@if($val->denied == 'Y')--><span class="denied">{$lang->denied}</span><!--@end-->
|
||||
|
|
@ -89,6 +98,9 @@
|
|||
</table>
|
||||
|
||||
<!-- 버튼 -->
|
||||
<div class="fl gap1">
|
||||
<a href="#" onclick="doManageMemberGroup(); return false;" class="button"><span>{$lang->cmd_member_group}</span></a>
|
||||
</div>
|
||||
<div class="fr gap1">
|
||||
<a href="{getUrl('act','dispMemberAdminInsert','member_srl','')}" class="button"><span>{$lang->cmd_make}</span></a>
|
||||
</div>
|
||||
|
|
@ -105,6 +117,7 @@
|
|||
<!--@end-->
|
||||
<a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="goToLast"><img src="../../admin/tpl/images/bottomGotoLast.gif" alt="{$lang->last_page}" width="7" height="5" /></a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- 검색 -->
|
||||
<form action="./" method="get" class="adminSearch">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue