#186 관리자 > 회원 관리 목록에서 선택된 회원들에 대한 일괄 그룹 설정 기능 추가

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3481 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2008-01-07 08:56:39 +00:00
parent 6e9c022dc7
commit 1fe9c2c88e
15 changed files with 197 additions and 0 deletions

View file

@ -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" />

View file

@ -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';

View file

@ -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';

View file

@ -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 = 'イメージ名を登録することができません。';

View file

@ -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 = '이미지 이름을 등록할 수가 없습니다';

View file

@ -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 = 'Марка не может быть зарегистрирована';

View file

@ -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 = '不能登录用户图标!';

View file

@ -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 금지 아이디 추가
**/

View file

@ -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');
}
}
?>

View 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>

View 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>

View 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>

View file

@ -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();
}

View 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> &nbsp;</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>

View file

@ -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">