diff --git a/common/lang/ko.lang.php b/common/lang/ko.lang.php index b924458e4..62a2127ef 100644 --- a/common/lang/ko.lang.php +++ b/common/lang/ko.lang.php @@ -27,6 +27,7 @@ $lang->cmd_logout = '로그아웃'; $lang->cmd_signup = '가입'; $lang->cmd_modify_member_info = '회원정보 수정'; + $lang->cmd_modify_member_password = '비밀번호 변경'; $lang->cmd_view_member_info = '회원정보 보기'; $lang->cmd_leave = '탈퇴'; $lang->cmd_move = '이동'; diff --git a/modules/board/skins/default/list.html b/modules/board/skins/default/list.html index 111ece10e..90b867a1f 100644 --- a/modules/board/skins/default/list.html +++ b/modules/board/skins/default/list.html @@ -30,7 +30,7 @@ [ - {$lang->cmd_modify_member_info} | + {$lang->cmd_view_member_info} | {$lang->cmd_logout} ] diff --git a/modules/member/conf/module.xml b/modules/member/conf/module.xml index b9676a2f6..318b87636 100644 --- a/modules/member/conf/module.xml +++ b/modules/member/conf/module.xml @@ -3,6 +3,7 @@ + @@ -21,6 +22,7 @@ + diff --git a/modules/member/lang/ko.lang.php b/modules/member/lang/ko.lang.php index f40468819..480a772c3 100644 --- a/modules/member/lang/ko.lang.php +++ b/modules/member/lang/ko.lang.php @@ -61,6 +61,7 @@ $lang->msg_exists_email_address = '이미 존재하는 메일주소입니다. 다른 메일주소를 입력해주세요'; $lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요'; $lang->msg_signup_disabled = '회원 가입을 하실 수 없습니다'; + $lang->msg_already_logged = '이미 회원 가입을 하신 상태입니다'; $lang->msg_not_uploaded_image_name = '이미지 이름을 등록할 수가 없습니다'; $lang->msg_not_uploaded_image_mark = '이미지 마크를 등록할 수가 없습니다'; diff --git a/modules/member/member.class.php b/modules/member/member.class.php index 12e993660..60ba5fe92 100644 --- a/modules/member/member.class.php +++ b/modules/member/member.class.php @@ -15,6 +15,7 @@ $oModuleController = &getController('module'); $oModuleController->insertActionForward('member', 'view', 'dispMemberInfo'); $oModuleController->insertActionForward('member', 'view', 'dispMemberSignUpForm'); + $oModuleController->insertActionForward('member', 'view', 'dispMemberModifyInfo'); $oModuleController->insertActionForward('member', 'view', 'dispMemberLoginForm'); $oModuleController->insertActionForward('member', 'view', 'dispMemberLogout'); $oModuleController->insertActionForward('member', 'view', 'dispMemberAdminList'); @@ -29,6 +30,7 @@ $oModuleController->insertActionForward('member', 'model', 'getmemberMenu'); $oModuleController->insertActionForward('member', 'controller', 'procMemberLogin'); $oModuleController->insertActionForward('member', 'controller', 'procMemberLogout'); + $oModuleController->insertActionForward('member', 'controller', 'procMemberInsert'); $oModuleController->insertActionForward('member', 'controller', 'procMemberInsertImageName'); $oModuleController->insertActionForward('member', 'controller', 'procMemberInsertImageMark'); $oModuleController->insertActionForward('member', 'controller', 'procMemberDeleteImageName'); diff --git a/modules/member/member.controller.php b/modules/member/member.controller.php index a0b4fcba5..65fa79997 100644 --- a/modules/member/member.controller.php +++ b/modules/member/member.controller.php @@ -75,7 +75,7 @@ **/ function procMemberAdminInsert() { // 필수 정보들을 미리 추출 - $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','description','group_srl_list'); // 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제 $all_args = Context::getRequestVars(); @@ -281,6 +281,53 @@ $this->setMessage($msg_code); } + /** + * @brief 회원 가입 or 정보 수정 + **/ + function procMemberInsert() { + // 필수 정보들을 미리 추출 + $args = Context::gets('member_srl','user_id','user_name','nick_name','email_address','password','allow_mailing','signature'); + + // 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제 + $all_args = Context::getRequestVars(); + unset($all_args->module); + unset($all_args->act); + unset($all_args->is_admin); + unset($all_args->description); + unset($all_args->group_srl_list); + + // 모든 request argument에서 필수 정보만 제외 한 후 추가 데이터로 입력 + $extra_vars = delObjectVars($all_args, $args); + $args->extra_vars = serialize($extra_vars); + + // member_srl이 넘어오면 원 회원이 있는지 확인 + if($args->member_srl) { + // 멤버 모델 객체 생성 + $oMemberModel = &getModel('member'); + + // 회원 정보 구하기 + $member_info = $oMemberModel->getMemberInfoByMemberSrl($args->member_srl); + + // 만약 원래 회원이 없으면 새로 입력하기 위한 처리 + if($member_info->member_srl != $args->member_srl) unset($args->member_srl); + } + + // member_srl의 값에 따라 insert/update + if(!$args->member_srl) { + $output = $this->insertMember($args); + $msg_code = 'success_registed'; + } else { + $output = $this->updateMember($args); + $msg_code = 'success_updated'; + } + + if(!$output->toBool()) return $output; + + $this->add('member_srl', $args->member_srl); + $this->setMessage($msg_code); + } + + /** * @brief 이미지 이름을 추가 **/ diff --git a/modules/member/member.model.php b/modules/member/member.model.php index a931f1e4f..c66b3a44b 100644 --- a/modules/member/member.model.php +++ b/modules/member/member.model.php @@ -52,7 +52,7 @@ if($mid) { // 회원 정보 보기 $menu_str = Context::getLang('cmd_view_member_info'); - $menu_url = sprintf('./?mid=%s&act=dispSignUpForm&member_srl=%s', $mid, $member_srl); + $menu_url = sprintf('./?mid=%s&act=dispMemberInfo&member_srl=%s', $mid, $member_srl); $menu_list[] = sprintf('%s,move_url(\'%s\')', $menu_str, $menu_url); // 아이디로 검색 diff --git a/modules/member/member.view.php b/modules/member/member.view.php index 2e41267e0..78e53883a 100644 --- a/modules/member/member.view.php +++ b/modules/member/member.view.php @@ -65,12 +65,47 @@ $this->initNormal(); $oMemberModel = &getModel('member'); - $this->member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); - Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info)); + + $member_srl = Context::get('member_srl'); + if(!$member_srl && Context::get('is_logged')) { + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + } elseif(!$member_srl) { + return $this->dispMemberSignUpForm(); + } + + $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); + unset($member_info->password); + unset($member_info->email_id); + unset($member_info->email_host); + unset($member_info->email_address); + + if(!$member_info->member_srl) return $this->dispMemberSignUpForm(); + + Context::set('member_info', $member_info); + Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info)); $this->setTemplateFile('member_info'); } + /** + * @brief 회원 가입 폼 출력 + **/ + function dispMemberSignUpForm() { + $this->initNormal(); + + $oMemberModel = &getModel('member'); + + // 로그인한 회원일 경우 해당 회원의 정보를 받음 + if($oMemberModel->isLogged()) return $this->stop('msg_already_logged'); + + // 회원가입을 중지시켰을 때는 에러 표시 + if($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled'); + + // 템플릿 파일 지정 + $this->setTemplateFile('signup_form'); + } + /** * @brief 회원 가입 폼 출력 **/ diff --git a/modules/member/skins/default/filter/insert.xml b/modules/member/skins/default/filter/insert.xml index 91b0d8299..0804d9fe4 100644 --- a/modules/member/skins/default/filter/insert.xml +++ b/modules/member/skins/default/filter/insert.xml @@ -1,4 +1,4 @@ - + diff --git a/modules/member/skins/default/insert_member.html b/modules/member/skins/default/insert_member.html index 9cbff768a..3adecb61a 100644 --- a/modules/member/skins/default/insert_member.html +++ b/modules/member/skins/default/insert_member.html @@ -1,5 +1,4 @@ - diff --git a/modules/member/skins/default/member_info.html b/modules/member/skins/default/member_info.html index ef183a6ab..3cc7ebc5f 100644 --- a/modules/member/skins/default/member_info.html +++ b/modules/member/skins/default/member_info.html @@ -51,8 +51,15 @@ + - {$lang->description} - {$member_info->description} + + + + + + + +