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
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();
oXml.reset();
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');
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에 넘겨줌
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();
if(!xmlDoc) return;
@ -35,7 +35,7 @@ function xml_response_filter(oXml, callback_func, response_tags, callback_func_a
return;
}
callback_func(ret_obj, response_tags, callback_func_arg);
callback_func(ret_obj, response_tags, callback_func_arg, fo_obj);
}
// xml handler
@ -70,7 +70,7 @@ function zGetXmlHttp() {
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 = "";
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 = 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.send(rd);
}

View file

@ -269,7 +269,7 @@ function XmlJsFilterProc(confirm_msg) {
this.user_func(this.fo_obj, params);
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

View file

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

View file

@ -309,8 +309,10 @@
* @brief 회원가입폼
**/
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호출후 템플릿 가로챔
$oMemberView = &getView('member');

View file

@ -27,9 +27,15 @@
<a href="{getUrl('act','dispRss')}">rss</a>
<!--@end-->
<!--@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-->
<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-->
<!--@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>

View file

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

View file

@ -69,10 +69,11 @@
* @brief 사용자 추가 (관리자용)
**/
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');
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제
$all_args = Context::getRequestVars();
unset($all_args->page);
unset($all_args->module);
unset($all_args->act);
@ -103,8 +104,6 @@
if(!$output->toBool()) return $output;
$this->add('member_srl',$output->get('member_srl'));
$this->add('page',Context::get('page'));
$this->setMessage($msg_code);
}
@ -321,12 +320,23 @@
$output = $oDB->executeQuery('member.insertMember', $args);
if(!$output->toBool()) return $output;
// 기본 그룹을 입력
$default_group = $oMemberModel->getDefaultGroup();
// 입력된 그룹 값이 없으면 기본 그룹의 값을 등록
if(!$args->group_srl_list) {
$default_group = $oMemberModel->getDefaultGroup();
// 기본 그룹에 추가
$output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl);
if(!$output->toBool()) return $output;
// 기본 그룹에 추가
$output = $this->addMemberToGroup($args->member_srl,$default_group->group_srl);
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);
return $output;
@ -368,15 +378,19 @@
$output = $oDB->executeQuery('member.updateMember', $args);
if(!$output->toBool()) return $output;
// 그룹에 추가
$output = $oDB->executeQuery('member.deleteMemberGroupMember', $args);
if(!$output->toBool()) return $output;
$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($args->group_srl_list) {
$group_srl_list = explode('|@|', $args->group_srl_list);
// 일단 해당 회원의 모든 그룹 정보를 삭제
$output = $oDB->executeQuery('member.deleteMemberGroupMember', $args);
if(!$output->toBool()) return $output;
// 하나 하나 루프를 돌면서 입력
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);

View file

@ -294,6 +294,37 @@
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 한개의 가입항목을 가져옴
**/

View file

@ -40,17 +40,18 @@
* @brief 회원 가입 출력
**/
function dispSignUpForm() {
// 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member');
$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);
// 로그인한 회원일 경우 해당 회원의 정보를 받음
if($oMemberModel->isLogged()) {
$logged_info = Context::get('logged_info');
$member_srl = $logged_info->member_srl;
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
Context::set('member_info',$member_info);
}
// 추가 가입폼 목록을 받음
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
// 템플릿 파일 지정
$this->setTemplatePath($this->module_path.'skins/default');
@ -95,16 +96,8 @@
**/
function dispMemberInfo() {
// 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member');
$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);
}
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
$this->setTemplateFile('member_info');
}
@ -113,16 +106,7 @@
**/
function dispMemberInsert() {
// 추가 가입폼 목록을 받음
$oMemberModel = &getModel('member');
$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);
}
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
// 템플릿 파일 지정
$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">
<form>
<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="nick_name" required="true" minlength="2" maxlength="20" />
<node target="email_address" required="true" minlength="1" maxlength="200" filter="email"/>
</form>
<parameter>
<param name="page" target="page" />
<param name="member_srl" target="member_srl" />
<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="nick_name" target="nick_name" />
<param name="email_address" target="email_address" />
<param name="allow_mailing" target="allow_mailing" />
<param name="denied" target="denied" />
<param name="is_admin" target="is_admin" />
<param name="description" target="description" />
<param name="group_srl_list" target="group_srl_list" />
<param name="email_address" target="email_address" />
</parameter>
<response callback_func="completeInsert">
<tag name="error" />
<tag name="message" />
<tag name="member_srl" />
<tag name="page" />
</response>
</filter>

View file

@ -1,4 +1,5 @@
<!--%import("filter/insert.xml")-->
<!--%import("js/member.js")-->
<div>
<!--@if(!$member_srl)-->
@ -9,8 +10,10 @@
</div>
<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="member_srl" value="{$member_srl}" />
<input type="hidden" name="member_srl" value="{$member_info->member_srl}" />
<!--@if($member_info->member_srl)-->
<input type="hidden" name="user_id" value="{$member_info->user_id}" />
<!--@end-->
@ -32,11 +35,19 @@
<td>{$lang->about_user_id}</td>
</tr>
<tr>
<th>{$lang->password}</th>
<th rowspan="3">{$lang->password1}</th>
<td>
<input type="password" name="password" value="" />
<input type="password" name="password1" value="" />
</td>
</tr>
<tr>
<td>
<input type="password" name="password2" value="" /> {$lang->password2}
</td>
</tr>
<tr>
<td>{$lang->about_password}</td>
</tr>
<tr>
<th rowspan="2">{$lang->user_name}</th>
<td>
@ -68,39 +79,6 @@
<tr>
<td>{$lang->about_allow_mailing}</td>
</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>
<!--@if($extend_form_list)-->
@ -198,11 +176,7 @@
<table border="1">
<tr>
<td colspan="2">
<!--@if($member_srl)-->
<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="button" value="{$lang->cmd_cancel}" onclick="location.href='{getUrl('act','')}'" />
<input type="submit" value="{$lang->cmd_registration}" accesskey="s" />
</td>
</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="./";
}