git-svn-id: http://xe-core.googlecode.com/svn/trunk@224 201d5d3c-b55e-5fd7-737f-ddc643e51545

This commit is contained in:
zero 2007-03-05 02:48:10 +00:00
parent f9e9b8d4b2
commit 1a108fae7f
12 changed files with 133 additions and 106 deletions

View file

@ -5,7 +5,7 @@
**/ **/
// xml handler을 이용하는 user function // xml handler을 이용하는 user function
function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg) { function exec_xml(module, act, params, callback_func, response_tags, callback_func_arg, fo_obj) {
var oXml = new xml_handler(); var oXml = new xml_handler();
oXml.reset(); oXml.reset();
for(var key in params) { for(var key in params) {
@ -19,11 +19,11 @@ function exec_xml(module, act, params, callback_func, response_tags, callback_fu
var waiting_obj = document.getElementById('waitingforserverresponse'); var waiting_obj = document.getElementById('waitingforserverresponse');
waiting_obj.style.visibility = 'visible'; waiting_obj.style.visibility = 'visible';
oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg); oXml.request(xml_response_filter, oXml, callback_func, response_tags, callback_func_arg, fo_obj);
} }
// 결과 처리 후 callback_func에 넘겨줌 // 결과 처리 후 callback_func에 넘겨줌
function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg) { function xml_response_filter(oXml, callback_func, response_tags, callback_func_arg, fo_obj) {
var xmlDoc = oXml.getResponseXml(); var xmlDoc = oXml.getResponseXml();
if(!xmlDoc) return; if(!xmlDoc) return;
@ -35,7 +35,7 @@ function xml_response_filter(oXml, callback_func, response_tags, callback_func_a
return; return;
} }
callback_func(ret_obj, response_tags, callback_func_arg); callback_func(ret_obj, response_tags, callback_func_arg, fo_obj);
} }
// xml handler // xml handler
@ -70,7 +70,7 @@ function zGetXmlHttp() {
return null; return null;
} }
function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg) { function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj) {
var rd = ""; var rd = "";
rd += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" rd += "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
@ -88,7 +88,7 @@ function xml_handlerRequest(callBackFunc, xmlObj, callBackFunc2, response_tags,
this.obj_xmlHttp.abort(); this.obj_xmlHttp.abort();
this.obj_xmlHttp = this.getXmlHttp(); this.obj_xmlHttp = this.getXmlHttp();
} }
this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg)}; this.obj_xmlHttp.onreadystatechange = function () {callBackFunc(xmlObj, callBackFunc2, response_tags, callback_func_arg, fo_obj)};
this.obj_xmlHttp.open('POST', this.xml_path, true); this.obj_xmlHttp.open('POST', this.xml_path, true);
this.obj_xmlHttp.send(rd); this.obj_xmlHttp.send(rd);
} }

View file

@ -269,7 +269,7 @@ function XmlJsFilterProc(confirm_msg) {
this.user_func(this.fo_obj, params); this.user_func(this.fo_obj, params);
return true; return true;
} }
exec_xml(this.module, this.act, params, this.user_func, response, params); exec_xml(this.module, this.act, params, this.user_func, response, params, this.fo_obj);
} }
// form proc // form proc

View file

@ -25,6 +25,7 @@
$lang->cmd_login = '로그인'; $lang->cmd_login = '로그인';
$lang->cmd_logout = '로그아웃'; $lang->cmd_logout = '로그아웃';
$lang->cmd_signup = '가입'; $lang->cmd_signup = '가입';
$lang->cmd_modify_member_info = '회원정보 수정';
$lang->cmd_leave = '탈퇴'; $lang->cmd_leave = '탈퇴';
$lang->cmd_move = '이동'; $lang->cmd_move = '이동';
$lang->cmd_move_up = '위로'; $lang->cmd_move_up = '위로';

View file

@ -309,8 +309,10 @@
* @brief 회원가입폼 * @brief 회원가입폼
**/ **/
function dispSignUpForm() { function dispSignUpForm() {
// 이미 로그인되어 있으면 메인 컨텐츠 노출 // 이미 로그인되어 있으면 로그인 한 회원의 정보를 세팅하여 정보 수정을 시킴
if(Context::get('is_logged')) return $this->dispContent(); if(Context::get('is_logged')) {
Context::set('member_info', Context::get('logged_info'));
}
// member view 객체 생성후 dispSignUpForm method호출후 템플릿 가로챔 // member view 객체 생성후 dispSignUpForm method호출후 템플릿 가로챔
$oMemberView = &getView('member'); $oMemberView = &getView('member');

View file

@ -27,9 +27,15 @@
<a href="{getUrl('act','dispRss')}">rss</a> <a href="{getUrl('act','dispRss')}">rss</a>
<!--@end--> <!--@end-->
<!--@if($is_logged)--> <!--@if($is_logged)-->
<a href="{getUrl('act','dispLogout')}">[{$lang->cmd_logout}]</a> [
<a href="{getUrl('act','dispSignUpForm')}">{$lang->cmd_modify_member_info}</a> |
<a href="{getUrl('act','dispLogout')}">{$lang->cmd_logout}</a>
]
<!--@else--> <!--@else-->
<a href="{getUrl('act','dispLogin')}">[{$lang->cmd_login}]</a> [
<a href="{getUrl('act','dispSignUpForm')}">{$lang->cmd_signup}</a> |
<a href="{getUrl('act','dispLogin')}">{$lang->cmd_login}</a>
]
<!--@end--> <!--@end-->
<!--@if($logged_info->is_admin=='Y')--> <!--@if($logged_info->is_admin=='Y')-->
<a href="{getUrl('module','admin','mo','board','act','dispAdminBoardInfo','module_srl',$module_srl,'mid','')}" target="_blank">[{$lang->cmd_management}]</a> <a href="{getUrl('module','admin','mo','board','act','dispAdminBoardInfo','module_srl',$module_srl,'mid','')}" target="_blank">[{$lang->cmd_management}]</a>

View file

@ -60,6 +60,7 @@
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요'; $lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요';
$lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다'; $lang->about_user_id = '사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다';
$lang->about_password = '비밀번호는 6~20자로 되어야 합니다';
$lang->about_user_name = '이름은 2~20자 이내여야 합니다'; $lang->about_user_name = '이름은 2~20자 이내여야 합니다';
$lang->about_nick_name = '닉네임은 2~20자 이내여야 합니다'; $lang->about_nick_name = '닉네임은 2~20자 이내여야 합니다';
$lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다'; $lang->about_allow_mailing = '메일링 가입이 체크되지 않으면 단체메일 발송시 메일을 받지 않습니다';

View file

@ -69,10 +69,11 @@
* @brief 사용자 추가 (관리자용) * @brief 사용자 추가 (관리자용)
**/ **/
function procInsert() { function procInsert() {
// 일단 입력된 값들을 모두 받아서 db 입력항목과 그외 것으로 분리 // 필수 정보들을 미리 추출
$args = Context::gets('member_srl','user_id','user_name','nick_name','email_address','password','allow_mailing','denied','is_admin','signature','profile_image','image_nick','image_mark','description','group_srl_list'); $args = Context::gets('member_srl','user_id','user_name','nick_name','email_address','password','allow_mailing','denied','is_admin','signature','profile_image','image_nick','image_mark','description','group_srl_list');
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
$all_args = Context::getRequestVars(); $all_args = Context::getRequestVars();
unset($all_args->page);
unset($all_args->module); unset($all_args->module);
unset($all_args->act); unset($all_args->act);
@ -103,8 +104,6 @@
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
$this->add('member_srl',$output->get('member_srl'));
$this->add('page',Context::get('page'));
$this->setMessage($msg_code); $this->setMessage($msg_code);
} }
@ -321,13 +320,24 @@
$output = $oDB->executeQuery('member.insertMember', $args); $output = $oDB->executeQuery('member.insertMember', $args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// 기본 그룹을 입력 // 입력된 그룹 값이 없으면 기본 그룹의 값을 등록
if(!$args->group_srl_list) {
$default_group = $oMemberModel->getDefaultGroup(); $default_group = $oMemberModel->getDefaultGroup();
// 기본 그룹에 추가 // 기본 그룹에 추가
$output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl); $output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// 입력된 그룹 값이 있으면 해당 그룹의 값을 등록
} else {
$group_srl_list = explode('|@|', $args->group_srl_list);
for($i=0;$i<count($group_srl_list);$i++) {
$output = $this->addMemberToGroup($args->member_srl,$group_srl_list[$i]);
if(!$output->toBool()) return $output;
}
}
$output->add('member_srl', $args->member_srl); $output->add('member_srl', $args->member_srl);
return $output; return $output;
} }
@ -368,16 +378,20 @@
$output = $oDB->executeQuery('member.updateMember', $args); $output = $oDB->executeQuery('member.updateMember', $args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
// 그룹에 추가 // 그룹 정보가 있으면 그룹 정보를 변경
if($args->group_srl_list) {
$group_srl_list = explode('|@|', $args->group_srl_list);
// 일단 해당 회원의 모든 그룹 정보를 삭제
$output = $oDB->executeQuery('member.deleteMemberGroupMember', $args); $output = $oDB->executeQuery('member.deleteMemberGroupMember', $args);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
$group_srl_list = explode('|@|', $args->group_srl_list); // 하나 하나 루프를 돌면서 입력
for($i=0;$i<count($group_srl_list);$i++) { for($i=0;$i<count($group_srl_list);$i++) {
$output = $this->addMemberToGroup($args->member_srl,$group_srl_list[$i]); $output = $this->addMemberToGroup($args->member_srl,$group_srl_list[$i]);
if(!$output->toBool()) return $output; if(!$output->toBool()) return $output;
} }
}
$output->add('member_srl', $args->member_srl); $output->add('member_srl', $args->member_srl);
return $output; return $output;

View file

@ -294,6 +294,37 @@
return $this->join_form_list; return $this->join_form_list;
} }
/**
* @brief 추가 회원가입폼과 특정 회원의 정보를 조합 (회원정보 수정등에 사용)
**/
function getCombineJoinForm($member_info) {
$extend_form_list = $this->getJoinFormlist();
if(!$extend_form_list) return;
foreach($extend_form_list as $srl => $item) {
$column_name = $item->column_name;
$value = $member_info->{$column_name};
// 추가 확장폼의 종류에 따라 값을 변경
switch($item->column_type) {
case 'checkbox' :
if($value && !is_array($value)) $value = array($value);
break;
case 'text' :
case 'homepage' :
case 'email_address' :
case 'tel' :
case 'textarea' :
case 'select' :
case 'kr_zip' :
break;
}
$extend_form_list[$srl]->value = $value;
}
return $extend_form_list;
}
/** /**
* @brief 한개의 가입항목을 가져옴 * @brief 한개의 가입항목을 가져옴
**/ **/

View file

@ -40,18 +40,19 @@
* @brief 회원 가입 출력 * @brief 회원 가입 출력
**/ **/
function dispSignUpForm() { function dispSignUpForm() {
// 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member'); $oMemberModel = &getModel('member');
$extend_form_list = $oMemberModel->getJoinFormlist();
if($extend_form_list) { // 로그인한 회원일 경우 해당 회원의 정보를 받음
foreach($extend_form_list as $srl => $item) { if($oMemberModel->isLogged()) {
$column_name = $item->column_name; $logged_info = Context::get('logged_info');
$value = $this->member_info->{$column_name}; $member_srl = $logged_info->member_srl;
$extend_form_list[$srl]->value = $this->member_info->{$column_name}; $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
} Context::set('member_info',$member_info);
Context::set('extend_form_list', $extend_form_list);
} }
// 추가 가입폼 목록을 받음
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
// 템플릿 파일 지정 // 템플릿 파일 지정
$this->setTemplatePath($this->module_path.'skins/default'); $this->setTemplatePath($this->module_path.'skins/default');
$this->setTemplateFile('insert_member'); $this->setTemplateFile('insert_member');
@ -95,16 +96,8 @@
**/ **/
function dispMemberInfo() { function dispMemberInfo() {
// 추가 가입폼 목록을 받음 // 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member'); Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
$extend_form_list = $oMemberModel->getJoinFormlist();
if($extend_form_list) {
foreach($extend_form_list as $srl => $item) {
$column_name = $item->column_name;
$value = $this->member_info->{$column_name};
$extend_form_list[$srl]->value = $this->member_info->{$column_name};
}
Context::set('extend_form_list', $extend_form_list);
}
$this->setTemplateFile('member_info'); $this->setTemplateFile('member_info');
} }
@ -113,16 +106,7 @@
**/ **/
function dispMemberInsert() { function dispMemberInsert() {
// 추가 가입폼 목록을 받음 // 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member'); Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
$extend_form_list = $oMemberModel->getJoinFormlist();
if($extend_form_list) {
foreach($extend_form_list as $srl => $item) {
$column_name = $item->column_name;
$value = $this->member_info->{$column_name};
$extend_form_list[$srl]->value = $this->member_info->{$column_name};
}
Context::set('extend_form_list', $extend_form_list);
}
// 템플릿 파일 지정 // 템플릿 파일 지정
$this->setTemplateFile('insert_member'); $this->setTemplateFile('insert_member');

View file

@ -1,28 +1,23 @@
<filter name="insert" module="member" act="procInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit"> <filter name="insert" module="member" act="procInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit">
<form> <form>
<node target="user_id" required="true" minlength="3" maxlength="20" filter="userid" /> <node target="user_id" required="true" minlength="3" maxlength="20" filter="userid" />
<node target="password1" required="true" minlength="6" maxlength="20" />
<node target="password2" required="true" minlength="6" maxlength="20" equalto="password1" />
<node target="user_name" required="true" minlength="2" maxlength="20" /> <node target="user_name" required="true" minlength="2" maxlength="20" />
<node target="nick_name" required="true" minlength="2" maxlength="20" /> <node target="nick_name" required="true" minlength="2" maxlength="20" />
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/> <node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
</form> </form>
<parameter> <parameter>
<param name="page" target="page" />
<param name="member_srl" target="member_srl" /> <param name="member_srl" target="member_srl" />
<param name="user_id" target="user_id" /> <param name="user_id" target="user_id" />
<param name="password" target="password" /> <param name="password" target="password1" />
<param name="user_name" target="user_name" /> <param name="user_name" target="user_name" />
<param name="nick_name" target="nick_name" /> <param name="nick_name" target="nick_name" />
<param name="email_address" target="email_address" />
<param name="allow_mailing" target="allow_mailing" /> <param name="allow_mailing" target="allow_mailing" />
<param name="denied" target="denied" /> <param name="email_address" target="email_address" />
<param name="is_admin" target="is_admin" />
<param name="description" target="description" />
<param name="group_srl_list" target="group_srl_list" />
</parameter> </parameter>
<response callback_func="completeInsert"> <response callback_func="completeInsert">
<tag name="error" /> <tag name="error" />
<tag name="message" /> <tag name="message" />
<tag name="member_srl" />
<tag name="page" />
</response> </response>
</filter> </filter>

View file

@ -1,4 +1,5 @@
<!--%import("filter/insert.xml")--> <!--%import("filter/insert.xml")-->
<!--%import("js/member.js")-->
<div> <div>
<!--@if(!$member_srl)--> <!--@if(!$member_srl)-->
@ -9,8 +10,10 @@
</div> </div>
<form id="fo_insert_member" action="./" method="get" onsubmit="return procFilter(this, insert)"> <form id="fo_insert_member" action="./" method="get" onsubmit="return procFilter(this, insert)">
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="document_srl" value="{$document_srl}" />
<input type="hidden" name="page" value="{$page}" /> <input type="hidden" name="page" value="{$page}" />
<input type="hidden" name="member_srl" value="{$member_srl}" /> <input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<!--@if($member_info->member_srl)--> <!--@if($member_info->member_srl)-->
<input type="hidden" name="user_id" value="{$member_info->user_id}" /> <input type="hidden" name="user_id" value="{$member_info->user_id}" />
<!--@end--> <!--@end-->
@ -32,11 +35,19 @@
<td>{$lang->about_user_id}</td> <td>{$lang->about_user_id}</td>
</tr> </tr>
<tr> <tr>
<th>{$lang->password}</th> <th rowspan="3">{$lang->password1}</th>
<td> <td>
<input type="password" name="password" value="" /> <input type="password" name="password1" value="" />
</td> </td>
</tr> </tr>
<tr>
<td>
<input type="password" name="password2" value="" /> {$lang->password2}
</td>
</tr>
<tr>
<td>{$lang->about_password}</td>
</tr>
<tr> <tr>
<th rowspan="2">{$lang->user_name}</th> <th rowspan="2">{$lang->user_name}</th>
<td> <td>
@ -68,39 +79,6 @@
<tr> <tr>
<td>{$lang->about_allow_mailing}</td> <td>{$lang->about_allow_mailing}</td>
</tr> </tr>
<tr>
<th rowspan="2">{$lang->denied}</th>
<td><input type="checkbox" name="denied" value="Y" <!--@if($member_info->denied=='Y')-->checked="true"<!--@end-->/></td>
</tr>
<tr>
<td>{$lang->about_denied}</td>
</tr>
<tr>
<th rowspan="2">{$lang->is_admin}</th>
<td><input type="checkbox" name="is_admin" value="Y" <!--@if($member_info->is_admin=='Y')-->checked="true"<!--@end-->/></td>
</tr>
<tr>
<td>{$lang->about_is_admin}</td>
</tr>
<tr>
<th rowspan="2">{$lang->description}</th>
<td><textarea name="description">{htmlspecialchars($member_info->description)}</textarea></td>
</tr>
<tr>
<td>{$lang->about_description}</td>
</tr>
<tr>
<th rowspan="2">{$lang->group}</th>
<td>
<!--@foreach($group_list as $key=>$val)-->
<input type="checkbox" name="group_srl_list" value="{$key}" id="group_{$key}" <!--@if($member_info->group_list[$key])-->checked="true"<!--@end-->/>
<label for="group_{$key}">{$val->title}</label>
<!--@end-->
</td>
</tr>
<tr>
<td>{$lang->about_group}</td>
</tr>
</table> </table>
<!--@if($extend_form_list)--> <!--@if($extend_form_list)-->
@ -198,11 +176,7 @@
<table border="1"> <table border="1">
<tr> <tr>
<td colspan="2"> <td colspan="2">
<!--@if($member_srl)--> <input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','')}'" />
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispMemberInfo')}';return false;" />
<!--@else-->
<input type="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','dispMemberList')}';return false;" />
<!--@end-->
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" /> <input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
</td> </td>
</tr> </tr>

View file

@ -0,0 +1,19 @@
/* 사용자 추가 */
function completeInsert(ret_obj, response_tags, args, fo_obj) {
var error = ret_obj['error'];
var message = ret_obj['message'];
alert(message);
var url = new Array();
var mid = fo_obj.mid.value;
var document_srl = fo_obj.document_srl.value;
var page = fo_obj.page.value;
if(mid) url[url.length] = "mid="+mid;
if(document_srl) url[url.length] = "document_srl="+document_srl;
if(page) url[url.length] = "page="+page;
if(url.length>0) location.href="./?"+url.join("&");
else location.href="./";
}