RadarURL

회원가입폼 별도로 추가 구현하기

by 똑띠 posted Jan 08, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄

우선 act 등록
XE는 act 값에 의해서 process들이 정의가 되는데 회원가입을 처리하는 act는 dispMemberAdminInsert 이다.
추가로 구현하는 부분은 act 값을 편하게 dispMemberAdminInsert2 로 하기로 한다.
dispMemberAdminInsert2 값은 ./modules/member/conf/module.xml 에서 등록할수 있다.
<action name="dispMemberAdminInsert" type="view" standalone="true" />
 <action name="dispMemberAdminInsert2" type="view" standalone="true" />
이런식으로 하나더 등록하면 된다.

act값이 등록되었으면 해당 값이 처리되는 부분에 대해서 정의가 되어야 한다.
./modules/member/member.admin.view.php 파일을 열어서 아래 소스를 추가한다.
        /**
         * @brief 회원 정보 입력 화면 출력-mcs용
         **/
        function dispMemberAdminInsert2() {
            // 추가 가입폼 목록을 받음
            $oMemberModel = &getModel('member');
            Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
            $member_info = Context::get('member_info');
            $member_info->signature = $oMemberModel->getSignature($this->member_info->member_srl);
            Context::set('member_info', $member_info);
            // 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
            if($this->member_info->member_srl) {
                $oEditorModel = &getModel('editor');
                $option->primary_key_name = 'member_srl';
                $option->content_key_name = 'signature';
                $option->allow_fileupload = false;
                $option->enable_autosave = false;
                $option->enable_default_component = true;
                $option->enable_component = false;
                $option->resizable = false;
                $option->height = 200;
                $editor = $oEditorModel->getEditor($this->member_info->member_srl, $option);
                Context::set('editor', $editor);     }
            // 템플릿 파일 지정
            $this->setTemplateFile('insert_member2');
           }

여기를 추가하게 되면 act=dispMemberAdminInsert2 이면 insert_member2.html 파일이 보여지게 되는것이다.

즉, 회원 생성화면을 확인 할수 있는것이다.
물론  insert_member.html을 복사하여  insert_member2.html 란 이름으로 저장을 해 놓아야 한다.
insert_member2.html 파일에서는

<filter name="insert" module="member" act="procMemberAdminInsert" extend_filter="member.getJoinFormList" confirm_msg_code="confirm_submit" >
    <form>
        <node target="user_id" required="true" minlength="3" maxlength="20" />
        <node target="user_name" required="true" minlength="2" maxlength="40" />
        <node target="nick_name" required="true" minlength="2" maxlength="40" />
        <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="user_name" target="user_name" />
        <param name="nick_name" target="nick_name" />
        <param name="homepage" target="homepage" />
        <param name="blog" target="blog" />
        <param name="birthday" target="birthday" />
        <param name="email_address" target="email_address" />
        <param name="allow_mailing" target="allow_mailing" />
        <param name="allow_message" target="allow_message" />
        <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="signature" target="signature" />
        <param name="limit_date" target="limit_date" />
    </parameter>
    <response callback_func="completeInsert2">
        <tag name="error" />
        <tag name="message" />
        <tag name="member_srl" />
        <tag name="page" />
    </response>
</filter>
이와 같이 completeInsert2 라는 함수를 호출하도록 한다.
회원 생성화면을 따로 만들었으니 이젠 저장을 눌렀을때 처리되는 부분을 확인해 보자.


저장을 눌렀을때 해당 값이 DB에 저장되게 하는 부분은 /modules/member/tpl/js/member_admin.js 파일에서
호출할 completeInsert2 함수를 별도로 정의한다.

/* 사용자 추가 */
function completeInsert2(ret_obj) {
    var error = ret_obj['error'];
    var message = ret_obj['message'];
    var member_srl = ret_obj['member_srl'];
    var page = ret_obj['page'];
    alert(message);
    var url = current_url.setQuery('act','dispMemberAdminInfo2').setQuery('member_srl',member_srl);
    if(page) url = url.setQuery('page', page);
    location.href = url;
}
 이와 같이 추가 시켜 준다.
저장된 다음 실행될 부분은 dispMemberAdminInfo2 이다.

 


 마지막으로 dispMemberAdminInfo2  부분에 대한 정의를 한다.
/modules/member/member.admin.view.php 파일에서 아래와 같이 소스를 추가한다.

   /**
         * @brief display member information
         **/
        function dispMemberAdminInfo2() {
            $oMemberModel = &getModel('member');
            $oModuleModel = &getModel('module');
            $member_config = $oModuleModel->getModuleConfig('member');
            Context::set('member_config', $member_config);
            Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($this->member_info));
            $this->setTemplateFile('member_info2');
        }

 마지막으로 결과를 보여줄 페이지를 /modules/member/tpl/member_info2.html 파일을 만들어서 보여주면 끝이다.