mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-26 14:49:56 +09:00
merge sandbox to trunk for 1.4.4
git-svn-id: http://xe-core.googlecode.com/svn/trunk@7723 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
200d63636c
commit
b8299c8a65
683 changed files with 70982 additions and 69716 deletions
|
|
@ -1,33 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">회원 관리</title>
|
||||
<title xml:lang="zh-CN">会员管理</title>
|
||||
<title xml:lang="jp">会員 管理</title>
|
||||
<title xml:lang="en">Member Management</title>
|
||||
<title xml:lang="vi">Quản lý thành viên</title>
|
||||
<title xml:lang="es">Usuario Gestión</title>
|
||||
<title xml:lang="ru">Управление пользователями</title>
|
||||
<title xml:lang="zh-TW">會員 管理</title>
|
||||
<description xml:lang="ko">회원 관리 및 회원 관련 설정등을 하는 모듈입니다.</description>
|
||||
<description xml:lang="zh-CN">对会员进行管理及相关设置的模块。</description>
|
||||
<description xml:lang="jp">会員管理及び会員関連設定などを行うモジュールです。</description>
|
||||
<description xml:lang="en">This module is for managing or configuring members.</description>
|
||||
<description xml:lang="vi">Module này dành cho việc quản lý và tạo thành viên.</description>
|
||||
<description xml:lang="es">Este módulo es para el manejo y la configuración de los usuarios.</description>
|
||||
<description xml:lang="ru">Этот модуль служит для управления и конфигурирования пользователей.</description>
|
||||
<description xml:lang="zh-TW">對會員進行管理與相關設置的模組。</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
<category>member</category>
|
||||
|
||||
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||
<name xml:lang="ko">zero</name>
|
||||
<name xml:lang="vi">zero</name>
|
||||
<name xml:lang="zh-CN">zero</name>
|
||||
<name xml:lang="jp">zero</name>
|
||||
<name xml:lang="en">zero</name>
|
||||
<name xml:lang="es">zero</name>
|
||||
<name xml:lang="ru">zero</name>
|
||||
<name xml:lang="zh-TW">zero</name>
|
||||
</author>
|
||||
</module>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">회원 관리</title>
|
||||
<title xml:lang="zh-CN">会员管理</title>
|
||||
<title xml:lang="jp">会員 管理</title>
|
||||
<title xml:lang="en">Member Management</title>
|
||||
<title xml:lang="vi">Quản lý thành viên</title>
|
||||
<title xml:lang="es">Usuario Gestión</title>
|
||||
<title xml:lang="ru">Управление пользователями</title>
|
||||
<title xml:lang="zh-TW">會員 管理</title>
|
||||
<description xml:lang="ko">회원 관리 및 회원 관련 설정등을 하는 모듈입니다.</description>
|
||||
<description xml:lang="zh-CN">对会员进行管理及相关设置的模块。</description>
|
||||
<description xml:lang="jp">会員管理及び会員関連設定などを行うモジュールです。</description>
|
||||
<description xml:lang="en">This module is for managing or configuring members.</description>
|
||||
<description xml:lang="vi">Module này dành cho việc quản lý và tạo thành viên.</description>
|
||||
<description xml:lang="es">Este módulo es para el manejo y la configuración de los usuarios.</description>
|
||||
<description xml:lang="ru">Этот модуль служит для управления и конфигурирования пользователей.</description>
|
||||
<description xml:lang="zh-TW">對會員進行管理與相關設置的模組。</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
<category>member</category>
|
||||
|
||||
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
|
||||
<name xml:lang="ko">NHN</name>
|
||||
<name xml:lang="vi">NHN</name>
|
||||
<name xml:lang="zh-CN">NHN</name>
|
||||
<name xml:lang="jp">NHN</name>
|
||||
<name xml:lang="en">NHN</name>
|
||||
<name xml:lang="es">NHN</name>
|
||||
<name xml:lang="ru">NHN</name>
|
||||
<name xml:lang="zh-TW">NHN</name>
|
||||
</author>
|
||||
</module>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<action name="dispMemberScrappedDocument" type="view" standalone="true" />
|
||||
<action name="dispMemberSavedDocument" type="view" standalone="true" />
|
||||
<action name="dispMemberFindAccount" type="view" standalone="true" />
|
||||
<action name="dispMemberGetTempPassword" type="view" standalone="true" />
|
||||
<action name="dispMemberResendAuthMail" type="view" standalone="true" />
|
||||
<action name="dispSavedDocumentList" type="view" standalone="true" />
|
||||
|
||||
|
|
@ -61,6 +62,7 @@
|
|||
<action name="procMemberDeleteSavedDocument" type="controller" standalone="true" />
|
||||
|
||||
<action name="procMemberFindAccount" type="controller" standalone="true" />
|
||||
<action name="procMemberFindAccountByQuestion" type="controller" standalone="true" />
|
||||
<action name="procMemberAuthAccount" type="controller" standalone="true" />
|
||||
<action name="procMemberUpdateAuthMail" type="controller" standalone="true" />
|
||||
<action name="procMemberResendAuthMail" type="controller" standalone="true" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file en.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief English Language Pack (Only Basic Things)
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = 'The account is not activated.';
|
||||
$lang->invalid_user_id= "You have entered an invalid ID";
|
||||
$lang->invalid_password = 'You have entered an invalid password';
|
||||
$lang->invalid_new_password = 'New password must not be the same as old one.';
|
||||
$lang->allow_mailing = 'Join Mailing';
|
||||
$lang->denied = 'Prohibited';
|
||||
$lang->is_admin = 'Superadmin Permission';
|
||||
|
|
@ -209,4 +210,26 @@
|
|||
|
||||
$lang->about_resend_auth_mail = 'You can request for activation mail if you have not activated before';
|
||||
$lang->no_article = 'There exists no article';
|
||||
|
||||
$lang->find_account_question = 'Question for a temporary password.';
|
||||
$lang->about_find_account_question = 'You can get a temporary password by your ID, email address, and the answer for the question you set.';
|
||||
$lang->find_account_question_items = array(''
|
||||
,'What is your alternate email address?'
|
||||
,'What is your favorite thing?'
|
||||
,'What elementary school did you graduate?'
|
||||
,'Where is your hometown?'
|
||||
,'What is your ideal match?'
|
||||
,"What is your mother's name?"
|
||||
,"What is your father's name?"
|
||||
,'What is your favorite color?'
|
||||
,'What is your favorite food?'
|
||||
);
|
||||
$lang->temp_password = 'Temporary password';
|
||||
$lang->cmd_get_temp_password = 'Get a temporary password';
|
||||
$lang->about_get_temp_password = 'Change your password after you logged in.';
|
||||
$lang->msg_question_not_exists = 'You haven`t set your question for a temporary password.';
|
||||
$lang->msg_answer_not_matches = 'Your answer for the question is not correct.';
|
||||
|
||||
$lang->change_password_date = 'Password renewal cycle';
|
||||
$lang->about_change_password_date = 'If you set a value to this, you will be notified to change your password periodically. (if set to 0, disabled)';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file es.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief Spanish Language Pack (Only Basic Things)
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = 'No está certificado';
|
||||
$lang->invalid_user_id= "Este ID no existe";
|
||||
$lang->invalid_password = 'Contraseña incorrecta';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->allow_mailing = 'Registro del envío de mail';
|
||||
$lang->denied = 'Prohibido';
|
||||
$lang->is_admin = 'Atribución del administrador superior';
|
||||
|
|
@ -207,4 +208,29 @@
|
|||
|
||||
$lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.';
|
||||
$lang->no_article = 'There exists no article';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file fr.lang.php
|
||||
* @author zero (zero@nzeo.com) Traduit par Pierre Duvent (PierreDuvent@gmail.com)
|
||||
* @author NHN (developers@xpressengine.com) Traduit par Pierre Duvent (PierreDuvent@gmail.com)
|
||||
* @brief Paquet du langage en français pour le module de Membre
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = 'Le compte n\'est pas encore certifié.';
|
||||
$lang->invalid_user_id= "C'est un compte qui n'existe pas.";
|
||||
$lang->invalid_password = 'C\'est un mot de passe invalide';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->allow_mailing = 'Inscrire au Mailing';
|
||||
$lang->denied = 'Arrêté à utiliser';
|
||||
$lang->is_admin = 'Permission Superadministrative';
|
||||
|
|
@ -211,4 +212,29 @@
|
|||
|
||||
$lang->about_resend_auth_mail = 'You can request for authentication mail if you have failed before.';
|
||||
$lang->no_article = 'There exists no article';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/member/jp.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻訳:RisaPapa、ミニミ、liahona
|
||||
* @author NHN (developers@xpressengine.com) 翻訳:RisaPapa、ミニミ、liahona
|
||||
* @brief 日本語言語パッケージ(基本的な内容のみ)
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = '認証出来ませんでした。';
|
||||
$lang->invalid_user_id= '存在しないユーザIDです。';
|
||||
$lang->invalid_password = '無効なパスワードです。';
|
||||
$lang->invalid_new_password = '以前のパスワードと同じパスワードを使う事はできません。';
|
||||
$lang->allow_mailing = 'メーリングリストに登録';
|
||||
$lang->denied = '使用中止';
|
||||
$lang->is_admin = '最高管理権限';
|
||||
|
|
@ -209,5 +210,31 @@
|
|||
$lang->add_openid = 'OpenIDの追加';
|
||||
|
||||
$lang->about_resend_auth_mail = '認証メールが届いてなかった場合、再送信の申請が可能です。<br />※申請の前に、当サイトからメールの受信が出来るように設定して下さい。';
|
||||
$lang->no_article = 'There exists no article';
|
||||
$lang->no_article = '書き込みがありません。';
|
||||
|
||||
$lang->find_account_question = '秘密質問';
|
||||
$lang->about_find_account_question = '登録した時、入力したIDとメールアドレス、秘密質問の答えで仮のパスワードをもらえる事ができます。';
|
||||
|
||||
|
||||
$lang->find_account_question_items = array(''
|
||||
,'他のメールアドレスは?'
|
||||
,'私の一番大事なものは?'
|
||||
,'私の卒業した小学校は?'
|
||||
,'私の生まれた街は?'
|
||||
,'私の理想型は?'
|
||||
,'お母さんのお名前は?'
|
||||
,'お父さんのお名前は?'
|
||||
,'大好きな色は?'
|
||||
,'大好きな食べ物は?'
|
||||
);
|
||||
|
||||
$lang->temp_password = '仮のパスワード';
|
||||
$lang->cmd_get_temp_password = '仮のパスワードをもらう';
|
||||
$lang->about_get_temp_password = 'ログインして直ちにパスワードを変更して下さい。';
|
||||
$lang->msg_question_not_exists = '秘密質問を決めていません。';
|
||||
$lang->msg_answer_not_matches = '秘密質問の答えが正しくありません。';
|
||||
|
||||
$lang->change_password_date = 'パスワード更新周期';
|
||||
$lang->about_change_password_date = '設定した更新周期によってパスワード変更のお知らせがもらえます。(0に設定すると非活性化) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ko.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = '인증이 되지 않았습니다.';
|
||||
$lang->invalid_user_id= '존재하지 않는 사용자 아이디입니다.';
|
||||
$lang->invalid_password = '잘못된 비밀번호입니다.';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->allow_mailing = '메일링 가입';
|
||||
$lang->denied = '사용중지';
|
||||
$lang->is_admin = '최고관리 권한';
|
||||
|
|
@ -210,4 +211,27 @@
|
|||
|
||||
$lang->about_resend_auth_mail = '인증 메일을 받지 못하신 경우 다시 받으실 수 있습니다.';
|
||||
$lang->no_article = '글이 없습니다.';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file ru.lang.php
|
||||
* @author zero <zero@nzeo.com> | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||
* @author NHN (developers@xpressengine.com) | translation by Maslennikov Evgeny aka X-[Vr]bL1s5 | e-mail: x-bliss[a]tut.by; ICQ: 225035467;
|
||||
* @brief Russian basic language pack
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = 'Вы не авторизированы';
|
||||
$lang->invalid_user_id= "Указанный ID не существует";
|
||||
$lang->invalid_password = 'Неверный пароль';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->allow_mailing = 'Получать рассылки';
|
||||
$lang->denied = 'Отменить пользование';
|
||||
$lang->is_admin = 'Суперадминистративные права';
|
||||
|
|
@ -210,4 +211,29 @@
|
|||
|
||||
$lang->about_resend_auth_mail = 'Вы можете получить снова письмо для авторизации, если еще не получили.';
|
||||
$lang->no_article = 'Записей нет';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
|
||||
░░ * @File : common/lang/vi.lang.php ░░
|
||||
░░ * @Author : zero (zero@nzeo.com) ░░
|
||||
░░ * @Author : NHN (developers@xpressengine.com) ░░
|
||||
░░ * @Trans : Đào Đức Duy (ducduy.dao.vn@vietxe.net) ░░
|
||||
░░ * @Website: http://vietxe.net ░░
|
||||
░░ * @Brief : Vietnamese Language Pack (Only basic words are included here) ░░
|
||||
|
|
@ -23,6 +23,7 @@
|
|||
$lang->invalid_user_id= "Bạn đã nhập sai tên sử dụng";
|
||||
$lang->allow_mailing = 'Đồng ý nhận Email';
|
||||
$lang->invalid_password = 'Mật khẩu không đúng';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->denied = 'Bị từ chối';
|
||||
$lang->is_admin = 'Toàn quyền Administrator';
|
||||
$lang->group = 'Phân nhóm';
|
||||
|
|
@ -210,4 +211,29 @@
|
|||
$lang->add_openid = 'Thêm OpenID';
|
||||
|
||||
$lang->about_resend_auth_mail = 'Nhận lại mã kích hoạt nếu bạn đã không nhận được Email kích hoạt khi đăng kí.';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file zh-CN.lang.php
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief 会员模块简体中文语言包
|
||||
**/
|
||||
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = '还没有认证!';
|
||||
$lang->invalid_user_id= '该用户名不存在,请检查您的输入是否有误!';
|
||||
$lang->invalid_password = '您的密码不正确!';
|
||||
$lang->invalid_new_password = '이전 비밀번호와 같습니다.';
|
||||
$lang->allow_mailing = '接收邮件';
|
||||
$lang->denied = '禁止使用';
|
||||
$lang->is_admin = '最高管理权限';
|
||||
|
|
@ -208,4 +209,29 @@
|
|||
$lang->about_member = "可以添加/修改/删除会员及管理用户组或注册表单的会员管理模块。\n此模块不仅可以生成缺省用户组以外的其他用户组来管理会员,并且通过注册表单的管理获得除会员基本信息以外的扩展信息。";
|
||||
|
||||
$lang->about_resend_auth_mail = '没有收到认证邮件时,可以在此重新发送认证邮件。';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'다른 이메일 주소는?'
|
||||
,'나의 보물 1호는?'
|
||||
,'나의 출신 초등학교는?'
|
||||
,'나의 출신 고향은?'
|
||||
,'나의 이상형은?'
|
||||
,'어머니 성함은?'
|
||||
,'아버지 성함은?'
|
||||
,'가장 좋아하는 색깔은?'
|
||||
,'가장 좋아하는 음식은?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '임시 비밀번호';
|
||||
$lang->cmd_get_temp_password = '임시 비밀번호 발급';
|
||||
$lang->about_get_temp_password = '로그인 후 비밀번호 변경해 주세요.';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/member/lang/zh-TW.lang.php
|
||||
* @author zero (zero@nzeo.com) 翻譯:royallin
|
||||
* @author NHN (developers@xpressengine.com) 翻譯:royallin
|
||||
* @brief 會員(member)模組正體中文語言
|
||||
**/
|
||||
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
$lang->default_group_2 = "正會員";
|
||||
$lang->admin_group = "管理組";
|
||||
$lang->keep_signed = '自動登入';
|
||||
$lang->remember_user_id = '儲存ID';
|
||||
$lang->remember_user_id = '儲存 ID';
|
||||
$lang->already_logged = '您已經登入!';
|
||||
$lang->denied_user_id = '被禁止的帳號。';
|
||||
$lang->null_user_id = '請輸入帳號。';
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
$lang->invalid_authorization = '還沒有認證!';
|
||||
$lang->invalid_user_id= '該帳號不存在,請檢查您的輸入是否有誤!';
|
||||
$lang->invalid_password = '您的密碼不正確!';
|
||||
$lang->invalid_new_password = '與舊密碼相同';
|
||||
$lang->allow_mailing = '接收郵件';
|
||||
$lang->denied = '禁止使用';
|
||||
$lang->is_admin = '最高管理權限';
|
||||
|
|
@ -41,7 +42,7 @@
|
|||
$lang->group_image_mark_max_height = '高度限制';
|
||||
$lang->group_image_mark_order = '群組圖示順序';
|
||||
$lang->signature_max_height = '簽名檔高度限制';
|
||||
$lang->enable_openid = '支援OpenID';
|
||||
$lang->enable_openid = '支援 OpenID';
|
||||
$lang->enable_join = '允許會員註冊';
|
||||
$lang->enable_confirm = '使用郵件認證';
|
||||
$lang->enable_ssl = '使用 SSL 功能';
|
||||
|
|
@ -205,9 +206,34 @@
|
|||
$lang->about_find_member_account = '帳號/密碼將發送到您註冊時,所輸入的電子郵件當中。<br />輸入註冊時的電子郵件地址後,請按「查詢帳號/密碼」按鈕。<br />';
|
||||
|
||||
$lang->about_member = "可以新增/修改/刪除會員及管理群組或註冊表單的會員管理模組。\n此模組不僅可以建立預設群組以外的其他群組來管理會員,並且通過註冊表單的管理獲得會員基本資料以外的延伸資料。";
|
||||
$lang->about_ssl_port = '請輸入想要使用預設 SSL 埠口以外的埠口。';
|
||||
$lang->about_ssl_port = '請輸入想要使用 SSL 預設埠口以外的埠口。';
|
||||
$lang->add_openid = '新增 OpenID';
|
||||
|
||||
$lang->about_resend_auth_mail = '如果沒有收到認證郵件可以再重寄一次。';
|
||||
$lang->no_article = '主題不存在';
|
||||
|
||||
$lang->find_account_question = '비밀번호 찾기 질문/답변';
|
||||
$lang->about_find_account_question = '가입시 아이디와 이메일, 질문/답변으로 임시 비밀번호를 발급 받을 수 있습니다.';
|
||||
/*
|
||||
$lang->find_account_question_items = array(''
|
||||
,'其他電子郵件?'
|
||||
,'我最愛的是?'
|
||||
,'我讀的國小是?'
|
||||
,'我的出生地?'
|
||||
,'我的理想?'
|
||||
,'母親的姓名?'
|
||||
,'父親的姓名?'
|
||||
,'最喜歡的顏色?'
|
||||
,'最愛的食物是?'
|
||||
);
|
||||
*/
|
||||
$lang->temp_password = '臨時密碼';
|
||||
$lang->cmd_get_temp_password = '寄送臨時密碼';
|
||||
$lang->about_get_temp_password = '請再登入後變更密碼。';
|
||||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member module의 admin controller class
|
||||
**/
|
||||
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
'image_name', 'image_name_max_width', 'image_name_max_height',
|
||||
'image_mark', 'image_mark_max_width', 'image_mark_max_height',
|
||||
'group_image_mark', 'group_image_mark_max_width', 'group_image_mark_max_height',
|
||||
'signature','signature_max_height'
|
||||
'signature','signature_max_height','change_password_date'
|
||||
);
|
||||
|
||||
if(!$args->skin) $args->skin = "default";
|
||||
|
|
@ -111,6 +111,7 @@
|
|||
if($args->signature!='Y') $args->signature = 'N';
|
||||
if(!trim(strip_tags($args->agreement))) $args->agreement = null;
|
||||
$args->limit_day = (int)$args->limit_day;
|
||||
if(!$args->change_password_date) $args->change_password_date = 0;
|
||||
|
||||
$oMemberController = &getController('member');
|
||||
$output = $oMemberController->setMemberConfig($args);
|
||||
|
|
|
|||
|
|
@ -1,136 +1,136 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 admin model class
|
||||
**/
|
||||
|
||||
class memberAdminModel extends member {
|
||||
|
||||
/**
|
||||
* @brief 자주 호출될거라 예상되는 데이터는 내부적으로 가지고 있자...
|
||||
**/
|
||||
var $member_info = NULL;
|
||||
var $member_groups = NULL;
|
||||
var $join_form_list = NULL;
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 목록을 구함
|
||||
**/
|
||||
function getMemberList() {
|
||||
// 검색 옵션 정리
|
||||
$args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
|
||||
$args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
|
||||
$args->selected_group_srl = Context::get('selected_group_srl');
|
||||
|
||||
$search_target = trim(Context::get('search_target'));
|
||||
$search_keyword = trim(Context::get('search_keyword'));
|
||||
|
||||
if($search_target && $search_keyword) {
|
||||
switch($search_target) {
|
||||
case 'user_id' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_id = $search_keyword;
|
||||
break;
|
||||
case 'user_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_name = $search_keyword;
|
||||
break;
|
||||
case 'nick_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_nick_name = $search_keyword;
|
||||
break;
|
||||
case 'email_address' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_email_address = $search_keyword;
|
||||
break;
|
||||
case 'regdate' :
|
||||
$args->s_regdate = ereg_replace("[^0-9]","",$search_keyword);
|
||||
break;
|
||||
case 'regdate_more' :
|
||||
$args->s_regdate_more = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'regdate_less' :
|
||||
$args->s_regdate_less = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'last_login' :
|
||||
$args->s_last_login = $search_keyword;
|
||||
break;
|
||||
case 'last_login_more' :
|
||||
$args->s_last_login_more = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'last_login_less' :
|
||||
$args->s_last_login_less = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'extra_vars' :
|
||||
$args->s_extra_vars = ereg_replace("[^0-9]","",$search_keyword);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// selected_group_srl이 있으면 query id를 변경 (table join때문에)
|
||||
$sort_index = Context::get('sort_index');
|
||||
if($sort_index != 'last_login') $sort_index = "member_srl";
|
||||
if($args->selected_group_srl) {
|
||||
$query_id = 'member.getMemberListWithinGroup';
|
||||
$args->sort_index = "member.".$sort_index;
|
||||
} else {
|
||||
$query_id = 'member.getMemberList';
|
||||
$args->sort_index = $sort_index;
|
||||
}
|
||||
$sort_order = Context::get('sort_order');
|
||||
if($sort_order != "asc") $sort_order = "desc";
|
||||
$args->sort_order = $sort_order;
|
||||
Context::set('sort_order', $sort_order);
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
return executeQuery($query_id, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사이트별 회원 목록을 구함
|
||||
**/
|
||||
function getSiteMemberList($site_srl, $page = 1) {
|
||||
$args->site_srl = $site_srl;
|
||||
$args->page = $page;
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
$query_id = 'member.getSiteMemberList';
|
||||
$output = executeQueryArray($query_id, $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 모듈의 특정 스킨에 속한 컬러셋 목록을 return
|
||||
**/
|
||||
function getMemberAdminColorset() {
|
||||
$skin = Context::get('skin');
|
||||
if(!$skin) $tpl = "";
|
||||
else {
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
Context::set('skin_info', $skin_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$config->colorset) $config->colorset = "white";
|
||||
Context::set('config', $config);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'colorset_list');
|
||||
}
|
||||
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class memberAdminModel
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member module의 admin model class
|
||||
**/
|
||||
|
||||
class memberAdminModel extends member {
|
||||
|
||||
/**
|
||||
* @brief 자주 호출될거라 예상되는 데이터는 내부적으로 가지고 있자...
|
||||
**/
|
||||
var $member_info = NULL;
|
||||
var $member_groups = NULL;
|
||||
var $join_form_list = NULL;
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 목록을 구함
|
||||
**/
|
||||
function getMemberList() {
|
||||
// 검색 옵션 정리
|
||||
$args->is_admin = Context::get('is_admin')=='Y'?'Y':'';
|
||||
$args->is_denied = Context::get('is_denied')=='Y'?'Y':'';
|
||||
$args->selected_group_srl = Context::get('selected_group_srl');
|
||||
|
||||
$search_target = trim(Context::get('search_target'));
|
||||
$search_keyword = trim(Context::get('search_keyword'));
|
||||
|
||||
if($search_target && $search_keyword) {
|
||||
switch($search_target) {
|
||||
case 'user_id' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_id = $search_keyword;
|
||||
break;
|
||||
case 'user_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_user_name = $search_keyword;
|
||||
break;
|
||||
case 'nick_name' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_nick_name = $search_keyword;
|
||||
break;
|
||||
case 'email_address' :
|
||||
if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword);
|
||||
$args->s_email_address = $search_keyword;
|
||||
break;
|
||||
case 'regdate' :
|
||||
$args->s_regdate = ereg_replace("[^0-9]","",$search_keyword);
|
||||
break;
|
||||
case 'regdate_more' :
|
||||
$args->s_regdate_more = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'regdate_less' :
|
||||
$args->s_regdate_less = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'last_login' :
|
||||
$args->s_last_login = $search_keyword;
|
||||
break;
|
||||
case 'last_login_more' :
|
||||
$args->s_last_login_more = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'last_login_less' :
|
||||
$args->s_last_login_less = substr(ereg_replace("[^0-9]","",$search_keyword) . '00000000000000',0,14);
|
||||
break;
|
||||
case 'extra_vars' :
|
||||
$args->s_extra_vars = ereg_replace("[^0-9]","",$search_keyword);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// selected_group_srl이 있으면 query id를 변경 (table join때문에)
|
||||
$sort_index = Context::get('sort_index');
|
||||
if($sort_index != 'last_login') $sort_index = "member_srl";
|
||||
if($args->selected_group_srl) {
|
||||
$query_id = 'member.getMemberListWithinGroup';
|
||||
$args->sort_index = "member.".$sort_index;
|
||||
} else {
|
||||
$query_id = 'member.getMemberList';
|
||||
$args->sort_index = $sort_index;
|
||||
}
|
||||
$sort_order = Context::get('sort_order');
|
||||
if($sort_order != "asc") $sort_order = "desc";
|
||||
$args->sort_order = $sort_order;
|
||||
Context::set('sort_order', $sort_order);
|
||||
|
||||
// 기타 변수들 정리
|
||||
$args->page = Context::get('page');
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
return executeQuery($query_id, $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 사이트별 회원 목록을 구함
|
||||
**/
|
||||
function getSiteMemberList($site_srl, $page = 1) {
|
||||
$args->site_srl = $site_srl;
|
||||
$args->page = $page;
|
||||
$args->list_count = 40;
|
||||
$args->page_count = 10;
|
||||
$query_id = 'member.getSiteMemberList';
|
||||
$output = executeQueryArray($query_id, $args);
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 모듈의 특정 스킨에 속한 컬러셋 목록을 return
|
||||
**/
|
||||
function getMemberAdminColorset() {
|
||||
$skin = Context::get('skin');
|
||||
if(!$skin) $tpl = "";
|
||||
else {
|
||||
$oModuleModel = &getModel('module');
|
||||
$skin_info = $oModuleModel->loadSkinInfo($this->module_path, $skin);
|
||||
Context::set('skin_info', $skin_info);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$config->colorset) $config->colorset = "white";
|
||||
Context::set('config', $config);
|
||||
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$tpl = $oTemplate->compile($this->module_path.'tpl', 'colorset_list');
|
||||
}
|
||||
|
||||
$this->add('tpl', $tpl);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,241 +1,241 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module's admin view class
|
||||
**/
|
||||
|
||||
class memberAdminView extends member {
|
||||
|
||||
var $group_list = NULL; ///< group list
|
||||
var $member_info = NULL; ///< selected member info
|
||||
|
||||
/**
|
||||
* @brief initialization
|
||||
**/
|
||||
function init() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// if member_srl exists, set member_info
|
||||
$member_srl = Context::get('member_srl');
|
||||
if($member_srl) {
|
||||
$this->member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$this->member_info) Context::set('member_srl','');
|
||||
else Context::set('member_info',$this->member_info);
|
||||
}
|
||||
|
||||
// retrieve group list
|
||||
$this->group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $this->group_list);
|
||||
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member list
|
||||
**/
|
||||
function dispMemberAdminList() {
|
||||
|
||||
$oMemberAdminModel = &getAdminModel('member');
|
||||
$oMemberModel = &getModel('member');
|
||||
$output = $oMemberAdminModel->getMemberList();
|
||||
|
||||
// retrieve list of groups for each member
|
||||
if($output->data) {
|
||||
foreach($output->data as $key => $member) {
|
||||
$output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0);
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('member_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief default configuration for member management
|
||||
**/
|
||||
function dispMemberAdminConfig() {
|
||||
// retrieve configuration via module model instance
|
||||
$oModuleModel = &getModel('module');
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('config',$config);
|
||||
|
||||
// list of skins for member module
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list', $skin_list);
|
||||
|
||||
// retrieve skins of editor
|
||||
$oEditorModel = &getModel('editor');
|
||||
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
|
||||
|
||||
// get an editor
|
||||
$option->primary_key_name = 'temp_srl';
|
||||
$option->content_key_name = 'agreement';
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = true;
|
||||
$option->height = 300;
|
||||
$editor = $oEditorModel->getEditor(0, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
$this->setTemplateFile('member_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member information
|
||||
**/
|
||||
function dispMemberAdminInfo() {
|
||||
$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_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member insert form
|
||||
**/
|
||||
function dispMemberAdminInsert() {
|
||||
// retrieve extend form
|
||||
$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);
|
||||
|
||||
// get an editor for the signature
|
||||
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_member');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member delete form
|
||||
**/
|
||||
function dispMemberAdminDeleteForm() {
|
||||
if(!Context::get('member_srl')) return $this->dispMemberAdminList();
|
||||
$this->setTemplateFile('delete_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display group list
|
||||
**/
|
||||
function dispMemberAdminGroupList() {
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if($config->group_image_mark_order) $config->group_image_mark_order = explode(',', $config->group_image_mark_order);
|
||||
Context::set('config', $config);
|
||||
|
||||
$group_srl = Context::get('group_srl');
|
||||
|
||||
if($group_srl && $this->group_list[$group_srl]) {
|
||||
Context::set('selected_group', $this->group_list[$group_srl]);
|
||||
$this->setTemplateFile('group_update_form');
|
||||
} else {
|
||||
$this->setTemplateFile('group_list');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 목록 출력
|
||||
**/
|
||||
function dispMemberAdminJoinFormList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 추가로 설정한 가입 항목 가져오기
|
||||
$form_list = $oMemberModel->getJoinFormList();
|
||||
Context::set('form_list', $form_list);
|
||||
|
||||
$this->setTemplateFile('join_form_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 관리 화면 출력
|
||||
**/
|
||||
function dispMemberAdminInsertJoinForm() {
|
||||
// 수정일 경우 대상 join_form의 값을 구함
|
||||
$member_join_form_srl = Context::get('member_join_form_srl');
|
||||
if($member_join_form_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
$join_form = $oMemberModel->getJoinForm($member_join_form_srl);
|
||||
|
||||
if(!$join_form) Context::set('member_join_form_srl','',true);
|
||||
else Context::set('join_form', $join_form);
|
||||
}
|
||||
$this->setTemplateFile('insert_join_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 목록 아이디 출력
|
||||
**/
|
||||
function dispMemberAdminDeniedIDList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 사용금지 목록 가져오기
|
||||
$output = $oMemberModel->getDeniedIDList();
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$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');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 일괄 삭제
|
||||
**/
|
||||
function dispMemberAdminDeleteMembers() {
|
||||
// 선택된 회원 목록을 구함
|
||||
$args->member_srl = trim(Context::get('member_srls'));
|
||||
$output = executeQueryArray('member.getMembers', $args);
|
||||
Context::set('member_list', $output->data);
|
||||
|
||||
$this->setLayoutFile('popup_layout');
|
||||
$this->setTemplateFile('delete_members');
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class memberAdminView
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member module's admin view class
|
||||
**/
|
||||
|
||||
class memberAdminView extends member {
|
||||
|
||||
var $group_list = NULL; ///< group list
|
||||
var $member_info = NULL; ///< selected member info
|
||||
|
||||
/**
|
||||
* @brief initialization
|
||||
**/
|
||||
function init() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// if member_srl exists, set member_info
|
||||
$member_srl = Context::get('member_srl');
|
||||
if($member_srl) {
|
||||
$this->member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
if(!$this->member_info) Context::set('member_srl','');
|
||||
else Context::set('member_info',$this->member_info);
|
||||
}
|
||||
|
||||
// retrieve group list
|
||||
$this->group_list = $oMemberModel->getGroups();
|
||||
Context::set('group_list', $this->group_list);
|
||||
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member list
|
||||
**/
|
||||
function dispMemberAdminList() {
|
||||
|
||||
$oMemberAdminModel = &getAdminModel('member');
|
||||
$oMemberModel = &getModel('member');
|
||||
$output = $oMemberAdminModel->getMemberList();
|
||||
|
||||
// retrieve list of groups for each member
|
||||
if($output->data) {
|
||||
foreach($output->data as $key => $member) {
|
||||
$output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0);
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('member_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief default configuration for member management
|
||||
**/
|
||||
function dispMemberAdminConfig() {
|
||||
// retrieve configuration via module model instance
|
||||
$oModuleModel = &getModel('module');
|
||||
$oMemberModel = &getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
Context::set('config',$config);
|
||||
|
||||
// list of skins for member module
|
||||
$skin_list = $oModuleModel->getSkins($this->module_path);
|
||||
Context::set('skin_list', $skin_list);
|
||||
|
||||
// retrieve skins of editor
|
||||
$oEditorModel = &getModel('editor');
|
||||
Context::set('editor_skin_list', $oEditorModel->getEditorSkinList());
|
||||
|
||||
// get an editor
|
||||
$option->primary_key_name = 'temp_srl';
|
||||
$option->content_key_name = 'agreement';
|
||||
$option->allow_fileupload = false;
|
||||
$option->enable_autosave = false;
|
||||
$option->enable_default_component = true;
|
||||
$option->enable_component = true;
|
||||
$option->resizable = true;
|
||||
$option->height = 300;
|
||||
$editor = $oEditorModel->getEditor(0, $option);
|
||||
Context::set('editor', $editor);
|
||||
|
||||
$this->setTemplateFile('member_config');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member information
|
||||
**/
|
||||
function dispMemberAdminInfo() {
|
||||
$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_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member insert form
|
||||
**/
|
||||
function dispMemberAdminInsert() {
|
||||
// retrieve extend form
|
||||
$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);
|
||||
|
||||
// get an editor for the signature
|
||||
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_member');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display member delete form
|
||||
**/
|
||||
function dispMemberAdminDeleteForm() {
|
||||
if(!Context::get('member_srl')) return $this->dispMemberAdminList();
|
||||
$this->setTemplateFile('delete_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief display group list
|
||||
**/
|
||||
function dispMemberAdminGroupList() {
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
if($config->group_image_mark_order) $config->group_image_mark_order = explode(',', $config->group_image_mark_order);
|
||||
Context::set('config', $config);
|
||||
|
||||
$group_srl = Context::get('group_srl');
|
||||
|
||||
if($group_srl && $this->group_list[$group_srl]) {
|
||||
Context::set('selected_group', $this->group_list[$group_srl]);
|
||||
$this->setTemplateFile('group_update_form');
|
||||
} else {
|
||||
$this->setTemplateFile('group_list');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 목록 출력
|
||||
**/
|
||||
function dispMemberAdminJoinFormList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 추가로 설정한 가입 항목 가져오기
|
||||
$form_list = $oMemberModel->getJoinFormList();
|
||||
Context::set('form_list', $form_list);
|
||||
|
||||
$this->setTemplateFile('join_form_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 관리 화면 출력
|
||||
**/
|
||||
function dispMemberAdminInsertJoinForm() {
|
||||
// 수정일 경우 대상 join_form의 값을 구함
|
||||
$member_join_form_srl = Context::get('member_join_form_srl');
|
||||
if($member_join_form_srl) {
|
||||
$oMemberModel = &getModel('member');
|
||||
$join_form = $oMemberModel->getJoinForm($member_join_form_srl);
|
||||
|
||||
if(!$join_form) Context::set('member_join_form_srl','',true);
|
||||
else Context::set('join_form', $join_form);
|
||||
}
|
||||
$this->setTemplateFile('insert_join_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 금지 목록 아이디 출력
|
||||
**/
|
||||
function dispMemberAdminDeniedIDList() {
|
||||
// 멤버모델 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 사용금지 목록 가져오기
|
||||
$output = $oMemberModel->getDeniedIDList();
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('member_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$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');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 일괄 삭제
|
||||
**/
|
||||
function dispMemberAdminDeleteMembers() {
|
||||
// 선택된 회원 목록을 구함
|
||||
$args->member_srl = trim(Context::get('member_srls'));
|
||||
$output = executeQueryArray('member.getMembers', $args);
|
||||
Context::set('member_list', $output->data);
|
||||
|
||||
$this->setLayoutFile('popup_layout');
|
||||
$this->setTemplateFile('delete_members');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberAPI
|
||||
* @author sol(sol@ngleader.com)
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member 모듈의 View Action에 대한 API 처리
|
||||
**/
|
||||
|
||||
|
|
|
|||
|
|
@ -1,200 +1,222 @@
|
|||
<?php
|
||||
/**
|
||||
* @class member
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 high class
|
||||
**/
|
||||
class member extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief constructor
|
||||
**/
|
||||
function member() {
|
||||
if(!Context::isInstalled()) return;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// SSL 사용시 회원가입/정보/비밀번호등과 관련된 action에 대해 SSL 전송하도록 지정
|
||||
if(Context::get('_use_ssl') == 'optional') {
|
||||
Context::addSSLAction('dispMemberModifyPassword');
|
||||
Context::addSSLAction('dispMemberSignUpForm');
|
||||
Context::addSSLAction('dispMemberModifyInfo');
|
||||
Context::addSSLAction('procMemberLogin');
|
||||
Context::addSSLAction('procMemberModifyPassword');
|
||||
Context::addSSLAction('procMemberInsert');
|
||||
Context::addSSLAction('procMemberModifyInfo');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$args = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// 기본 정보를 세팅
|
||||
$args->enable_join = 'Y';
|
||||
if(!$args->enable_openid) $args->enable_openid = 'N';
|
||||
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
|
||||
if(!$args->image_name) $args->image_name = 'Y';
|
||||
if(!$args->image_mark) $args->image_mark = 'Y';
|
||||
if(!$args->profile_image) $args->profile_image = 'Y';
|
||||
if(!$args->image_name_max_width) $args->image_name_max_width = '90';
|
||||
if(!$args->image_name_max_height) $args->image_name_max_height = '20';
|
||||
if(!$args->image_mark_max_width) $args->image_mark_max_width = '20';
|
||||
if(!$args->image_mark_max_height) $args->image_mark_max_height = '20';
|
||||
if(!$args->profile_image_max_width) $args->profile_image_max_width = '80';
|
||||
if(!$args->profile_image_max_height) $args->profile_image_max_height = '80';
|
||||
if($args->group_image_mark!='Y') $args->group_image_mark = 'N';
|
||||
|
||||
$oModuleController->insertModuleConfig('member',$args);
|
||||
|
||||
// 멤버 컨트롤러 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
|
||||
$groups = $oMemberModel->getGroups();
|
||||
if(!count($groups)) {
|
||||
// 관리자, 정회원, 준회원 그룹을 입력
|
||||
$group_args->title = Context::getLang('admin_group');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'Y';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_1');
|
||||
$group_args->is_default = 'Y';
|
||||
$group_args->is_admin = 'N';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_2');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'N';
|
||||
$oMemberAdminController->insertGroup($group_args);
|
||||
}
|
||||
|
||||
// 관리자 정보 세팅
|
||||
$admin_args->is_admin = 'Y';
|
||||
$output = executeQuery('member.getMemberList', $admin_args);
|
||||
if(!$output->data) {
|
||||
$admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address');
|
||||
if($admin_info->user_id) {
|
||||
// 관리자 정보 입력
|
||||
$oMemberAdminController->insertAdmin($admin_info);
|
||||
|
||||
// 로그인 처리시킴
|
||||
$output = $oMemberController->doLogin($admin_info->user_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 금지 아이디 등록 (기본 + 모듈명)
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_list = $oModuleModel->getModuleList();
|
||||
foreach($module_list as $key => $val) {
|
||||
$oMemberAdminController->insertDeniedID($val->module,'');
|
||||
}
|
||||
$oMemberAdminController->insertDeniedID('www','');
|
||||
$oMemberAdminController->insertDeniedID('root','');
|
||||
$oMemberAdminController->insertDeniedID('administrator','');
|
||||
$oMemberAdminController->insertDeniedID('telnet','');
|
||||
$oMemberAdminController->insertDeniedID('ftp','');
|
||||
$oMemberAdminController->insertDeniedID('http','');
|
||||
|
||||
// member 에서 사용할 cache디렉토리 생성
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/profile_image');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
|
||||
$oDB->addIndex("member_openid_association","idx_assoc", array("server_url(255)","handle"), false);
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
// member 디렉토리 체크 (2007. 8. 11 추가)
|
||||
if(!is_dir("./files/member_extra_info")) return true;
|
||||
|
||||
// member 디렉토리 체크 (2007. 10. 22 추가)
|
||||
if(!is_dir("./files/member_extra_info/profile_image")) return true;
|
||||
|
||||
// member_auth_mail 테이블에 is_register 필드 추가 (2008. 04. 22)
|
||||
$act = $oDB->isColumnExists("member_auth_mail", "is_register");
|
||||
if(!$act) return true;
|
||||
|
||||
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
|
||||
if(!$oDB->isColumnExists("member_group_member", "site_srl")) return true;
|
||||
if(!$oDB->isColumnExists("member_group", "site_srl")) return true;
|
||||
if($oDB->isIndexExists("member_group","uni_member_group_title")) return true;
|
||||
|
||||
// image_mark 추가 (2009. 02. 14)
|
||||
if(!$oDB->isColumnExists("member_group", "image_mark")) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
// member 디렉토리 체크
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
FileHandler::makeDir('./files/member_extra_info/profile_image');
|
||||
|
||||
// DB 필드 추가
|
||||
if (!$oDB->isColumnExists("member_auth_mail", "is_register")) {
|
||||
$oDB->addColumn("member_auth_mail", "is_register", "char", 1, "N", true);
|
||||
}
|
||||
|
||||
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
|
||||
if (!$oDB->isColumnExists("member_group_member", "site_srl")) {
|
||||
$oDB->addColumn("member_group_member", "site_srl", "number", 11, 0, true);
|
||||
$oDB->addIndex("member_group_member", "idx_site_srl", "site_srl", false);
|
||||
}
|
||||
if (!$oDB->isColumnExists("member_group", "site_srl")) {
|
||||
$oDB->addColumn("member_group", "site_srl", "number", 11, 0, true);
|
||||
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
|
||||
}
|
||||
if($oDB->isIndexExists("member_group","uni_member_group_title")) {
|
||||
$oDB->dropIndex("member_group","uni_member_group_title",true);
|
||||
}
|
||||
|
||||
// image_mark 추가 (2009. 02. 14)
|
||||
if(!$oDB->isColumnExists("member_group", "image_mark")) {
|
||||
$oDB->addColumn("member_group", "image_mark", "text");
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
set_include_path(_XE_PATH_."modules/member/php-openid-1.2.3");
|
||||
require_once('Auth/OpenID/XEStore.php');
|
||||
$store = new Auth_OpenID_XEStore();
|
||||
$store->reset();
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class member
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member module의 high class
|
||||
**/
|
||||
class member extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief constructor
|
||||
**/
|
||||
function member() {
|
||||
if(!Context::isInstalled()) return;
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$member_config = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// SSL 사용시 회원가입/정보/비밀번호등과 관련된 action에 대해 SSL 전송하도록 지정
|
||||
if(Context::get('_use_ssl') == 'optional') {
|
||||
Context::addSSLAction('dispMemberModifyPassword');
|
||||
Context::addSSLAction('dispMemberSignUpForm');
|
||||
Context::addSSLAction('dispMemberModifyInfo');
|
||||
Context::addSSLAction('procMemberLogin');
|
||||
Context::addSSLAction('procMemberModifyPassword');
|
||||
Context::addSSLAction('procMemberInsert');
|
||||
Context::addSSLAction('procMemberModifyInfo');
|
||||
Context::addSSLAction('procMemberFindAccount');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
$oDB = &DB::getInstance();
|
||||
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
|
||||
|
||||
$oModuleModel = &getModel('module');
|
||||
$args = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// 기본 정보를 세팅
|
||||
$args->enable_join = 'Y';
|
||||
if(!$args->enable_openid) $args->enable_openid = 'N';
|
||||
if(!$args->enable_auth_mail) $args->enable_auth_mail = 'N';
|
||||
if(!$args->image_name) $args->image_name = 'Y';
|
||||
if(!$args->image_mark) $args->image_mark = 'Y';
|
||||
if(!$args->profile_image) $args->profile_image = 'Y';
|
||||
if(!$args->image_name_max_width) $args->image_name_max_width = '90';
|
||||
if(!$args->image_name_max_height) $args->image_name_max_height = '20';
|
||||
if(!$args->image_mark_max_width) $args->image_mark_max_width = '20';
|
||||
if(!$args->image_mark_max_height) $args->image_mark_max_height = '20';
|
||||
if(!$args->profile_image_max_width) $args->profile_image_max_width = '80';
|
||||
if(!$args->profile_image_max_height) $args->profile_image_max_height = '80';
|
||||
if($args->group_image_mark!='Y') $args->group_image_mark = 'N';
|
||||
|
||||
$oModuleController->insertModuleConfig('member',$args);
|
||||
|
||||
// 멤버 컨트롤러 객체 생성
|
||||
$oMemberModel = &getModel('member');
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
|
||||
$groups = $oMemberModel->getGroups();
|
||||
if(!count($groups)) {
|
||||
// 관리자, 정회원, 준회원 그룹을 입력
|
||||
$group_args->title = Context::getLang('admin_group');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'Y';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_1');
|
||||
$group_args->is_default = 'Y';
|
||||
$group_args->is_admin = 'N';
|
||||
$output = $oMemberAdminController->insertGroup($group_args);
|
||||
|
||||
unset($group_args);
|
||||
$group_args->title = Context::getLang('default_group_2');
|
||||
$group_args->is_default = 'N';
|
||||
$group_args->is_admin = 'N';
|
||||
$oMemberAdminController->insertGroup($group_args);
|
||||
}
|
||||
|
||||
// 관리자 정보 세팅
|
||||
$admin_args->is_admin = 'Y';
|
||||
$output = executeQuery('member.getMemberList', $admin_args);
|
||||
if(!$output->data) {
|
||||
$admin_info = Context::gets('user_id','password','nick_name','user_name', 'email_address');
|
||||
if($admin_info->user_id) {
|
||||
// 관리자 정보 입력
|
||||
$oMemberAdminController->insertAdmin($admin_info);
|
||||
|
||||
// 로그인 처리시킴
|
||||
$output = $oMemberController->doLogin($admin_info->user_id);
|
||||
}
|
||||
}
|
||||
|
||||
// 금지 아이디 등록 (기본 + 모듈명)
|
||||
$oModuleModel = &getModel('module');
|
||||
$module_list = $oModuleModel->getModuleList();
|
||||
foreach($module_list as $key => $val) {
|
||||
$oMemberAdminController->insertDeniedID($val->module,'');
|
||||
}
|
||||
$oMemberAdminController->insertDeniedID('www','');
|
||||
$oMemberAdminController->insertDeniedID('root','');
|
||||
$oMemberAdminController->insertDeniedID('administrator','');
|
||||
$oMemberAdminController->insertDeniedID('telnet','');
|
||||
$oMemberAdminController->insertDeniedID('ftp','');
|
||||
$oMemberAdminController->insertDeniedID('http','');
|
||||
|
||||
// member 에서 사용할 cache디렉토리 생성
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/profile_image');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
|
||||
$oDB->addIndex("member_openid_association","idx_assoc", array("server_url(255)","handle"), false);
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleModel = &getModel('module');
|
||||
|
||||
// member 디렉토리 체크 (2007. 8. 11 추가)
|
||||
if(!is_dir("./files/member_extra_info")) return true;
|
||||
|
||||
// member 디렉토리 체크 (2007. 10. 22 추가)
|
||||
if(!is_dir("./files/member_extra_info/profile_image")) return true;
|
||||
|
||||
// member_auth_mail 테이블에 is_register 필드 추가 (2008. 04. 22)
|
||||
$act = $oDB->isColumnExists("member_auth_mail", "is_register");
|
||||
if(!$act) return true;
|
||||
|
||||
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
|
||||
if(!$oDB->isColumnExists("member_group_member", "site_srl")) return true;
|
||||
if(!$oDB->isColumnExists("member_group", "site_srl")) return true;
|
||||
if($oDB->isIndexExists("member_group","uni_member_group_title")) return true;
|
||||
|
||||
// image_mark 추가 (2009. 02. 14)
|
||||
if(!$oDB->isColumnExists("member_group", "image_mark")) return true;
|
||||
|
||||
// password 유효기간을 위한 추가
|
||||
if(!$oDB->isColumnExists("member", "change_password_date")) return true;
|
||||
|
||||
// 비밀번호 찾기 질문/답변을 위한 추가
|
||||
if(!$oDB->isColumnExists("member", "find_account_question")) return true;
|
||||
if(!$oDB->isColumnExists("member", "find_account_answer")) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oDB = &DB::getInstance();
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
// member 디렉토리 체크
|
||||
FileHandler::makeDir('./files/member_extra_info/image_name');
|
||||
FileHandler::makeDir('./files/member_extra_info/image_mark');
|
||||
FileHandler::makeDir('./files/member_extra_info/signature');
|
||||
FileHandler::makeDir('./files/member_extra_info/profile_image');
|
||||
|
||||
// DB 필드 추가
|
||||
if (!$oDB->isColumnExists("member_auth_mail", "is_register")) {
|
||||
$oDB->addColumn("member_auth_mail", "is_register", "char", 1, "N", true);
|
||||
}
|
||||
|
||||
// member_group_member 테이블에 site_srl 추가 (2008. 11. 15)
|
||||
if (!$oDB->isColumnExists("member_group_member", "site_srl")) {
|
||||
$oDB->addColumn("member_group_member", "site_srl", "number", 11, 0, true);
|
||||
$oDB->addIndex("member_group_member", "idx_site_srl", "site_srl", false);
|
||||
}
|
||||
if (!$oDB->isColumnExists("member_group", "site_srl")) {
|
||||
$oDB->addColumn("member_group", "site_srl", "number", 11, 0, true);
|
||||
$oDB->addIndex("member_group","idx_site_title", array("site_srl","title"),true);
|
||||
}
|
||||
if($oDB->isIndexExists("member_group","uni_member_group_title")) {
|
||||
$oDB->dropIndex("member_group","uni_member_group_title",true);
|
||||
}
|
||||
|
||||
// image_mark 추가 (2009. 02. 14)
|
||||
if(!$oDB->isColumnExists("member_group", "image_mark")) {
|
||||
$oDB->addColumn("member_group", "image_mark", "text");
|
||||
}
|
||||
|
||||
// password 유효기간을 위한 추가
|
||||
if(!$oDB->isColumnExists("member", "change_password_date")) {
|
||||
$oDB->addColumn("member", "change_password_date", "date");
|
||||
executeQuery('member.updateAllChangePasswordDate');
|
||||
}
|
||||
|
||||
// 비밀번호 찾기 질문/답변을 위한 추가
|
||||
if(!$oDB->isColumnExists("member", "find_account_question")) {
|
||||
$oDB->addColumn("member", "find_account_question", "number", 11);
|
||||
}
|
||||
if(!$oDB->isColumnExists("member", "find_account_answer")) {
|
||||
$oDB->addColumn("member", "find_account_answer", "varchar", 250);
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
set_include_path(_XE_PATH_."modules/member/php-openid-1.2.3");
|
||||
require_once('Auth/OpenID/XEStore.php');
|
||||
$store = new Auth_OpenID_XEStore();
|
||||
$store->reset();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -1,340 +1,357 @@
|
|||
<?php
|
||||
/**
|
||||
* @class memberView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief member module의 View class
|
||||
**/
|
||||
|
||||
class memberView extends member {
|
||||
|
||||
var $group_list = NULL; ///< 그룹 목록 정보
|
||||
var $member_info = NULL; ///< 선택된 사용자의 정보
|
||||
var $skin = 'default';
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
// 회원 관리 정보를 받음
|
||||
$oModuleModel = &getModel('module');
|
||||
$this->member_config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$this->member_config->skin) $this->member_config->skin = "default";
|
||||
if(!$this->member_config->colorset) $this->member_config->colorset = "white";
|
||||
|
||||
Context::set('member_config', $this->member_config);
|
||||
$skin = $this->member_config->skin;
|
||||
|
||||
// template path 지정
|
||||
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
|
||||
if(!is_dir($tpl_path)) $tpl_path = sprintf('%sskins/%s', $this->module_path, 'default');
|
||||
$this->setTemplatePath($tpl_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 출력
|
||||
**/
|
||||
function dispMemberInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 비회원일 경우 정보 열람 중지
|
||||
if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl && Context::get('is_logged')) {
|
||||
$member_srl = $logged_info->member_srl;
|
||||
} elseif(!$member_srl) {
|
||||
return $this->dispMemberSignUpForm();
|
||||
}
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_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));
|
||||
if ($member_info->member_srl == $logged_info->member_srl)
|
||||
Context::set('openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));
|
||||
|
||||
$this->setTemplateFile('member_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 출력
|
||||
**/
|
||||
function dispMemberSignUpForm() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인한 회원일 경우 해당 회원의 정보를 받음
|
||||
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
|
||||
|
||||
// before 트리거 호출
|
||||
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $this->member_config);
|
||||
if(!$trigger_output->toBool()) return $trigger_output;
|
||||
|
||||
// 회원가입을 중지시켰을 때는 에러 표시
|
||||
if($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
$member_config = $oMemberModel->getMemberConfig();
|
||||
Context::set('member_config', $member_config);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('signup_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 수정
|
||||
**/
|
||||
function dispMemberModifyInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$oModuleModel = &getModel('module');
|
||||
$memberModuleConfig = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
$member_info->signature = $oMemberModel->getSignature($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 추가 가입폼 목록을 받음
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
Context::set('openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
if($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->disable_html = true;
|
||||
$option->height = 200;
|
||||
$option->skin = $this->member_config->editor_skin;
|
||||
$option->colorset = $this->member_config->editor_colorset;
|
||||
$editor = $oEditorModel->getEditor($member_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_info');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 회원 작성글 보기
|
||||
**/
|
||||
function dispMemberOwnDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$module_srl = Context::get('module_srl');
|
||||
Context::set('module_srl',Context::get('selected_module_srl'));
|
||||
Context::set('search_target','member_srl');
|
||||
Context::set('search_keyword',$member_srl);
|
||||
|
||||
$oDocumentAdminView = &getAdminView('document');
|
||||
$oDocumentAdminView->dispDocumentAdminList();
|
||||
|
||||
Context::set('module_srl', $module_srl);
|
||||
$this->setTemplateFile('document_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 스크랩 게시물 보기
|
||||
**/
|
||||
function dispMemberScrappedDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
|
||||
$output = executeQuery('member.getScrapDocumentList', $args);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('scrapped_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원의 저장함 보기
|
||||
**/
|
||||
function dispMemberSavedDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
// 저장함에 보관된 글을 가져옴 (저장함은 module_srl이 member_srl로 세팅되어 있음)
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->module_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$output = $oDocumentModel->getDocumentList($args, true);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('saved_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그인 폼 출력
|
||||
**/
|
||||
function dispMemberLoginForm() {
|
||||
if(Context::get('is_logged')) {
|
||||
Context::set('redirect_url', getUrl('act',''));
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('redirect.html');
|
||||
return;
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
Context::set('referer_url', $_SERVER['HTTP_REFERER']);
|
||||
$this->setTemplateFile('login_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 비밀번호 수정
|
||||
**/
|
||||
function dispMemberModifyPassword() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 탈퇴 화면
|
||||
**/
|
||||
function dispMemberLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('leave_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 오픈 아이디 탈퇴 화면
|
||||
**/
|
||||
function dispMemberOpenIDLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('openid_leave_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그아웃 출력
|
||||
**/
|
||||
function dispMemberLogout() {
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberController->procMemberLogout();
|
||||
|
||||
Context::set('layout','none');
|
||||
$this->setTemplatePath($this->module_path.'/tpl');
|
||||
$this->setTemplateFile('logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 저장된 글 목록을 보여줌
|
||||
**/
|
||||
function dispSavedDocumentList() {
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
// 저장함에 보관된 글을 가져옴 (저장함은 module_srl이 member_srl로 세팅되어 있음)
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->module_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
$args->list_count = 10;
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$output = $oDocumentModel->getDocumentList($args, true);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('saved_list_popup');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 아이디/ 비밀번호 찾기 기능
|
||||
**/
|
||||
function dispMemberFindAccount() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$this->setTemplateFile('find_member_account');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 인증 메일 재발송 페이지
|
||||
**/
|
||||
function dispMemberResendAuthMail() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$this->setTemplateFile('resend_auth_mail');
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* @class memberView
|
||||
* @author NHN (developers@xpressengine.com)
|
||||
* @brief member module의 View class
|
||||
**/
|
||||
|
||||
class memberView extends member {
|
||||
|
||||
var $group_list = NULL; ///< 그룹 목록 정보
|
||||
var $member_info = NULL; ///< 선택된 사용자의 정보
|
||||
var $skin = 'default';
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
// 회원 관리 정보를 받음
|
||||
$oModuleModel = &getModel('module');
|
||||
$this->member_config = $oModuleModel->getModuleConfig('member');
|
||||
if(!$this->member_config->skin) $this->member_config->skin = "default";
|
||||
if(!$this->member_config->colorset) $this->member_config->colorset = "white";
|
||||
|
||||
Context::set('member_config', $this->member_config);
|
||||
$skin = $this->member_config->skin;
|
||||
|
||||
// template path 지정
|
||||
$tpl_path = sprintf('%sskins/%s', $this->module_path, $skin);
|
||||
if(!is_dir($tpl_path)) $tpl_path = sprintf('%sskins/%s', $this->module_path, 'default');
|
||||
$this->setTemplatePath($tpl_path);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 출력
|
||||
**/
|
||||
function dispMemberInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$logged_info = Context::get('logged_info');
|
||||
|
||||
// 비회원일 경우 정보 열람 중지
|
||||
if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
|
||||
|
||||
$member_srl = Context::get('member_srl');
|
||||
if(!$member_srl && Context::get('is_logged')) {
|
||||
$member_srl = $logged_info->member_srl;
|
||||
} elseif(!$member_srl) {
|
||||
return $this->dispMemberSignUpForm();
|
||||
}
|
||||
|
||||
$site_module_info = Context::get('site_module_info');
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_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));
|
||||
if ($member_info->member_srl == $logged_info->member_srl)
|
||||
Context::set('openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));
|
||||
|
||||
$this->setTemplateFile('member_info');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 가입 폼 출력
|
||||
**/
|
||||
function dispMemberSignUpForm() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인한 회원일 경우 해당 회원의 정보를 받음
|
||||
if($oMemberModel->isLogged()) return $this->stop('msg_already_logged');
|
||||
|
||||
// before 트리거 호출
|
||||
$trigger_output = ModuleHandler::triggerCall('member.dispMemberSignUpForm', 'before', $this->member_config);
|
||||
if(!$trigger_output->toBool()) return $trigger_output;
|
||||
|
||||
// 회원가입을 중지시켰을 때는 에러 표시
|
||||
if($this->member_config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
$member_config = $oMemberModel->getMemberConfig();
|
||||
Context::set('member_config', $member_config);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('signup_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 정보 수정
|
||||
**/
|
||||
function dispMemberModifyInfo() {
|
||||
$oMemberModel = &getModel('member');
|
||||
$oModuleModel = &getModel('module');
|
||||
$memberModuleConfig = $oModuleModel->getModuleConfig('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
$member_info->signature = $oMemberModel->getSignature($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 추가 가입폼 목록을 받음
|
||||
Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
|
||||
|
||||
Context::set('openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));
|
||||
|
||||
// 에디터 모듈의 getEditor를 호출하여 서명용으로 세팅
|
||||
if($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->disable_html = true;
|
||||
$option->height = 200;
|
||||
$option->skin = $this->member_config->editor_skin;
|
||||
$option->colorset = $this->member_config->editor_colorset;
|
||||
$editor = $oEditorModel->getEditor($member_info->member_srl, $option);
|
||||
Context::set('editor', $editor);
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_info');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 회원 작성글 보기
|
||||
**/
|
||||
function dispMemberOwnDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$module_srl = Context::get('module_srl');
|
||||
Context::set('module_srl',Context::get('selected_module_srl'));
|
||||
Context::set('search_target','member_srl');
|
||||
Context::set('search_keyword',$member_srl);
|
||||
|
||||
$oDocumentAdminView = &getAdminView('document');
|
||||
$oDocumentAdminView->dispDocumentAdminList();
|
||||
|
||||
Context::set('module_srl', $module_srl);
|
||||
$this->setTemplateFile('document_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 스크랩 게시물 보기
|
||||
**/
|
||||
function dispMemberScrappedDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->member_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
|
||||
$output = executeQuery('member.getScrapDocumentList', $args);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('scrapped_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원의 저장함 보기
|
||||
**/
|
||||
function dispMemberSavedDocument() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
// 저장함에 보관된 글을 가져옴 (저장함은 module_srl이 member_srl로 세팅되어 있음)
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->module_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$output = $oDocumentModel->getDocumentList($args, true);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('saved_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그인 폼 출력
|
||||
**/
|
||||
function dispMemberLoginForm() {
|
||||
if(Context::get('is_logged')) {
|
||||
Context::set('redirect_url', getUrl('act',''));
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
$this->setTemplateFile('redirect.html');
|
||||
return;
|
||||
}
|
||||
|
||||
// 템플릿 파일 지정
|
||||
Context::set('referer_url', $_SERVER['HTTP_REFERER']);
|
||||
$this->setTemplateFile('login_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 회원 비밀번호 수정
|
||||
**/
|
||||
function dispMemberModifyPassword() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('modify_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 탈퇴 화면
|
||||
**/
|
||||
function dispMemberLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('leave_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 오픈 아이디 탈퇴 화면
|
||||
**/
|
||||
function dispMemberOpenIDLeave() {
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
$logged_info = Context::get('logged_info');
|
||||
$member_srl = $logged_info->member_srl;
|
||||
|
||||
$member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
|
||||
Context::set('member_info',$member_info);
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('openid_leave_form');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 로그아웃 출력
|
||||
**/
|
||||
function dispMemberLogout() {
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberController->procMemberLogout();
|
||||
|
||||
Context::set('layout','none');
|
||||
$this->setTemplatePath($this->module_path.'/tpl');
|
||||
$this->setTemplateFile('logout');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 저장된 글 목록을 보여줌
|
||||
**/
|
||||
function dispSavedDocumentList() {
|
||||
$this->setLayoutFile('popup_layout');
|
||||
|
||||
$oMemberModel = &getModel('member');
|
||||
|
||||
// 로그인 되어 있지 않을 경우 로그인 되어 있지 않다는 메세지 출력
|
||||
if(!$oMemberModel->isLogged()) return $this->stop('msg_not_logged');
|
||||
|
||||
// 저장함에 보관된 글을 가져옴 (저장함은 module_srl이 member_srl로 세팅되어 있음)
|
||||
$logged_info = Context::get('logged_info');
|
||||
$args->module_srl = $logged_info->member_srl;
|
||||
$args->page = (int)Context::get('page');
|
||||
$args->list_count = 10;
|
||||
|
||||
$oDocumentModel = &getModel('document');
|
||||
$output = $oDocumentModel->getDocumentList($args, true);
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
Context::set('document_list', $output->data);
|
||||
Context::set('page_navigation', $output->page_navigation);
|
||||
|
||||
$this->setTemplateFile('saved_list_popup');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 아이디/ 비밀번호 찾기 기능
|
||||
**/
|
||||
function dispMemberFindAccount() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$this->setTemplateFile('find_member_account');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 임시 비밀번호 발급
|
||||
**/
|
||||
function dispMemberGetTempPassword() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$user_id = Context::get('user_id');
|
||||
$temp_password = $_SESSION['xe_temp_password_'.$user_id];
|
||||
unset($_SESSION['xe_temp_password_'.$user_id]);
|
||||
|
||||
if(!$user_id||!$temp_password) return new Object(-1,'msg_invaild_request');
|
||||
|
||||
Context::set('temp_password', $temp_password);
|
||||
|
||||
$this->setTemplateFile('find_temp_password');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 인증 메일 재발송 페이지
|
||||
**/
|
||||
function dispMemberResendAuthMail() {
|
||||
if(Context::get('is_logged')) return $this->stop('already_logged');
|
||||
|
||||
$this->setTemplateFile('resend_auth_mail');
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
<column name="email_host" var="email_host" notnull="notnull" />
|
||||
<column name="user_name" var="user_name" notnull="notnull" minlength="1" maxlength="40" />
|
||||
<column name="nick_name" var="nick_name" notnull="notnull" minlength="1" maxlength="40" />
|
||||
<column name="find_account_question" var="find_account_question" />
|
||||
<column name="find_account_answer" var="find_account_answer" />
|
||||
<column name="homepage" var="homepage" />
|
||||
<column name="blog" var="blog" />
|
||||
<column name="birthday" var="birthday" />
|
||||
|
|
|
|||
8
modules/member/queries/updateAllChangePasswordDate.xml
Normal file
8
modules/member/queries/updateAllChangePasswordDate.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<query id="updateAllChangePasswordDate" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="change_password_date" var="change_password_date" notnull="notnull" default="curdate()" />
|
||||
</columns>
|
||||
</query>
|
||||
11
modules/member/queries/updateChangePasswordDate.xml
Normal file
11
modules/member/queries/updateChangePasswordDate.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<query id="updateChangePasswordDate" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="change_password_date" var="change_password_date" notnull="notnull" default="curdate()" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -9,6 +9,8 @@
|
|||
<column name="email_host" var="email_host" notnull="notnull" />
|
||||
<column name="user_name" var="user_name" notnull="notnull" minlength="2" maxlength="40" />
|
||||
<column name="nick_name" var="nick_name" notnull="notnull" minlength="2" maxlength="40" />
|
||||
<column name="find_account_question" var="find_account_question" />
|
||||
<column name="find_account_answer" var="find_account_answer" />
|
||||
<column name="homepage" var="homepage" default="" />
|
||||
<column name="blog" var="blog" default="" />
|
||||
<column name="birthday" var="birthday" />
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
<column name="email_host" type="varchar" size="160" index="idx_email_host" />
|
||||
<column name="user_name" type="varchar" size="40" notnull="notnull" />
|
||||
<column name="nick_name" type="varchar" size="40" notnull="notnull" unique="unique_nick_name" />
|
||||
<column name="find_account_question" type="number" size="11" />
|
||||
<column name="find_account_answer" type="varchar" size="250" />
|
||||
<column name="homepage" type="varchar" size="250" />
|
||||
<column name="blog" type="varchar" size="250" />
|
||||
<column name="birthday" type="char" size="8" />
|
||||
|
|
@ -16,6 +18,7 @@
|
|||
<column name="limit_date" type="date" />
|
||||
<column name="regdate" type="date" index="idx_regdate" />
|
||||
<column name="last_login" type="date" index="idx_last_login" />
|
||||
<column name="change_password_date" type="date" />
|
||||
<column name="is_admin" type="char" size="1" default="N" index="idx_is_admin" />
|
||||
<column name="description" type="text" />
|
||||
<column name="extra_vars" type="text" />
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
<filter name="find_member_account_by_question" module="member" act="procMemberFindAccountByQuestion">
|
||||
<form>
|
||||
<node target="user_id" required="true" />
|
||||
<node target="email_address" required="true" minlength="2" maxlength="255" filter="email" />
|
||||
<node target="find_account_question" required="true" />
|
||||
<node target="find_account_answer" required="true" maxlength="250" />
|
||||
</form>
|
||||
<parameter />
|
||||
<response callback_func="completeFindMemberAccountByQuestion">
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
<tag name="user_id" />
|
||||
</response>
|
||||
</filter>
|
||||
|
|
@ -3,12 +3,16 @@
|
|||
<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" />
|
||||
<node target="find_account_question" required="true" />
|
||||
<node target="find_account_answer" required="true" maxlength="250" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="accept_agreement" target="accept_agreement" />
|
||||
<param name="user_name" target="user_name" />
|
||||
<param name="nick_name" target="nick_name" />
|
||||
<param name="homepage" target="homepage" />
|
||||
<param name="nick_name" target="nick_name" />
|
||||
<param name="find_account_question" target="find_account_question" />
|
||||
<param name="find_account_answer" target="find_account_answer" />
|
||||
<param name="blog" target="blog" />
|
||||
<param name="birthday" target="birthday" />
|
||||
<param name="allow_mailing" target="allow_mailing" />
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
<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" />
|
||||
<node target="find_account_question" required="true" />
|
||||
<node target="find_account_answer" required="true" maxlength="250" />
|
||||
</form>
|
||||
<parameter>
|
||||
<param name="accept_agreement" target="accept_agreement" />
|
||||
|
|
@ -14,6 +16,8 @@
|
|||
<param name="password" target="password1" />
|
||||
<param name="user_name" target="user_name" />
|
||||
<param name="nick_name" target="nick_name" />
|
||||
<param name="find_account_question" target="find_account_question" />
|
||||
<param name="find_account_answer" target="find_account_answer" />
|
||||
<param name="homepage" target="homepage" />
|
||||
<param name="blog" target="blog" />
|
||||
<param name="birthday" target="birthday" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
<!--%import("filter/find_member_account.xml")-->
|
||||
<!--%import("filter/find_member_account_by_question.xml")-->
|
||||
|
||||
<h3>{$member_title = $lang->cmd_find_member_account}</h3>
|
||||
<h3>{$lang->cmd_find_member_account}</h3>
|
||||
|
||||
<p class="summary">{$lang->about_find_member_account}</p>
|
||||
|
||||
|
|
@ -20,4 +21,46 @@
|
|||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
<!--@if(count($lang->find_account_question_items)>1)-->
|
||||
<h3>{$lang->cmd_find_member_account}</h3>
|
||||
|
||||
<p class="summary">{$lang->about_find_account_question}</p>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, find_member_account_by_question)">
|
||||
<input type="hidden" name="mid" value="{$mid}" />
|
||||
<input type="hidden" name="document_srl" value="{$document_srl}" />
|
||||
<input type="hidden" name="page" value="{$page}" />
|
||||
|
||||
<table cellspacing="0" class="rowTable" title="{$lang->email_address}">
|
||||
<tr>
|
||||
<th><div><label for="cpw">{$lang->user_id}</label></div></th>
|
||||
<td class="wide"><input type="text" name="user_id" class="inputTypeText" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><div><label for="cpw">{$lang->email_address}</label></div></th>
|
||||
<td class="wide"><input type="text" name="email_address" class="inputTypeText w400" /></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th><div><label for="cpw">{$lang->find_account_question}</label></div></th>
|
||||
<td>
|
||||
<select name="find_account_question">
|
||||
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
|
||||
<option value="{$i}">{$lang->find_account_question_items[$i]}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<br />
|
||||
<input type="text" name="find_account_answer" value="" class="inputTypeText w300"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th class="button" colspan="2"><span class="button black strong"><input type="submit" value="{$lang->cmd_get_temp_password}" accesskey="s" /></span></th>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<!--@end-->
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
|
|
|
|||
8
modules/member/skins/default/find_temp_password.html
Normal file
8
modules/member/skins/default/find_temp_password.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<!--#include("./common_header.html")-->
|
||||
|
||||
<h3>{$lang->cmd_find_member_account}</h3>
|
||||
<p class="summary">{$lang->about_find_member_account}</p>
|
||||
|
||||
{$temp_password}
|
||||
|
||||
<!--#include("./common_footer.html")-->
|
||||
|
|
@ -133,6 +133,15 @@ function completeFindMemberAccount(ret_obj, response_tags) {
|
|||
alert(ret_obj['message']);
|
||||
}
|
||||
|
||||
/* 임시 비밀번호 생성 */
|
||||
function completeFindMemberAccountByQuestion(ret_obj, response_tags) {
|
||||
if(ret_obj['error'] != 0){
|
||||
alert(ret_obj['message']);
|
||||
}else{
|
||||
location.href = current_url.setQuery('act','dispMemberGetTempPassword').setQuery('user_id',ret_obj['user_id']);
|
||||
}
|
||||
}
|
||||
|
||||
/* 저장글 삭제 */
|
||||
function doDeleteSavedDocument(document_srl, confirm_message) {
|
||||
if(!confirm(confirm_message)) return false;
|
||||
|
|
|
|||
|
|
@ -51,6 +51,19 @@
|
|||
<th><div>{$lang->email_address} <span class="require">*</span></div></th>
|
||||
<td><input type="text" name="email_address" value="{htmlspecialchars($member_info->email_address)}" /><p>{$lang->about_email_address}</p></td>
|
||||
</tr>
|
||||
<!--@if($member_info->find_account_question)-->
|
||||
<tr>
|
||||
<th><div>{$lang->find_account_question} <span class="require">*</span></div></th>
|
||||
<td>
|
||||
<select name="find_account_question">
|
||||
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
|
||||
<option value="{$i}" <!--@if($member_info->find_account_question==$i)-->selected="selected" <!--@end-->>{$lang->find_account_question_items[$i]}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<br /><input type="text" name="find_account_answer" value="{$member_info->find_account_answer}" class="inputTypeText w300"/>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
|
||||
<!--@if($member_config->profile_image == 'Y')-->
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<!--@if(!$is_logged && $member_config->agreement)-->
|
||||
<div class="agreementBox">
|
||||
{nl2br($member_config->agreement)}
|
||||
{$member_config->agreement}
|
||||
</div>
|
||||
<div class="agreementButton">
|
||||
<input type="checkbox" name="accept_agreement" value="Y" id="accept_agree" />
|
||||
|
|
@ -56,6 +56,20 @@
|
|||
<input type="text" name="email_address" value="" class="inputTypeText"/><p>{$lang->about_email_address}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@if(count($lang->find_account_question_items)>1)-->
|
||||
<tr>
|
||||
<th><div>{$lang->find_account_question} <span class="require">*</span></div></th>
|
||||
<td>
|
||||
<select name="find_account_question">
|
||||
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
|
||||
<option value="{$i}">{$lang->find_account_question_items[$i]}</option>
|
||||
<!--@end-->
|
||||
</select>
|
||||
<br />
|
||||
<input type="text" name="find_account_answer" value="" class="inputTypeText w300"/>
|
||||
</td>
|
||||
</tr>
|
||||
<!--@end-->
|
||||
<tr>
|
||||
<th><div>{$lang->homepage}</div></th>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -1,77 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<skin version="0.2">
|
||||
<title xml:lang="ko">회원 기본 스킨</title>
|
||||
<title xml:lang="zh-CN">会员模块默认皮肤</title>
|
||||
<title xml:lang="jp">会員デフォルトスキン</title>
|
||||
<title xml:lang="en">Default Member Skin</title>
|
||||
<title xml:lang="vi">Giao diện thành viên mặc định</title>
|
||||
<title xml:lang="es">Por defecto miembro piel</title>
|
||||
<title xml:lang="ru">По умолчанию членом кожи</title>
|
||||
<title xml:lang="zh-TW">會員模組預設面板</title>
|
||||
<description xml:lang="ko">
|
||||
회원모듈의 default스킨
|
||||
디자인 : 서기정 (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : 정찬명 (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="zh-CN">
|
||||
会员模块的默认皮肤。
|
||||
设计 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="jp">
|
||||
会員モジュールのデフォルトスキン
|
||||
デザイン:ソギジョン (http://blog.naver.com/addcozy)
|
||||
HTML/CSS:ジョンチャンミョン (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
default skin of member module
|
||||
Design : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="vi">
|
||||
Giao diện mặc định của Module Thành viên
|
||||
Thiết kế: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="es">
|
||||
Por defecto de la piel miembro módulo
|
||||
Diseño: Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML / CSS: Jeong Chan-Myung (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="ru">
|
||||
умолчанию кожу члена модуль
|
||||
Дизайн: Ги Чен Се (http://blog.naver.com/addcozy)
|
||||
HTML / CSS: Чен-Чен Мен (http://naradesign.net)
|
||||
</description>
|
||||
<description xml:lang="zh-TW">
|
||||
會員模組預設面板。
|
||||
設計 : Ki-Jeong Seo (http://blog.naver.com/addcozy)
|
||||
HTML/CSS : Chan-Myung Jeong (http://naradesign.net)
|
||||
</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
|
||||
<author email_address="zero@zeroboard.com" link="http://blog.nzeo.com">
|
||||
<name xml:lang="ko">(주)NHN</name>
|
||||
<name xml:lang="jp">(株)NHN</name>
|
||||
<name xml:lang="zh-CN">(株)NHN</name>
|
||||
<name xml:lang="en">NHN Corp</name>
|
||||
<name xml:lang="vi">NHN Corp</name>
|
||||
<name xml:lang="es">NHN Corp</name>
|
||||
<name xml:lang="ru">NHN Корп</name>
|
||||
<name xml:lang="zh-TW">NHN Corp</name>
|
||||
</author>
|
||||
|
||||
<colorset>
|
||||
<color name="white">
|
||||
<title xml:lang="ko">기본</title>
|
||||
<title xml:lang="zh-CN">默认</title>
|
||||
<title xml:lang="jp">デフォルト</title>
|
||||
<title xml:lang="en">default</title>
|
||||
<title xml:lang="vi">Mặc định</title>
|
||||
<title xml:lang="es">Por defecto</title>
|
||||
<title xml:lang="ru">умолчанию</title>
|
||||
<title xml:lang="zh-TW">預設</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<skin version="0.2">
|
||||
<title xml:lang="ko">회원 기본 스킨</title>
|
||||
<title xml:lang="zh-CN">会员模块默认皮肤</title>
|
||||
<title xml:lang="jp">会員デフォルトスキン</title>
|
||||
<title xml:lang="en">Default Member Skin</title>
|
||||
<title xml:lang="vi">Giao diện thành viên mặc định</title>
|
||||
<title xml:lang="es">Por defecto miembro piel</title>
|
||||
<title xml:lang="ru">По умолчанию членом кожи</title>
|
||||
<title xml:lang="zh-TW">會員模組預設面板</title>
|
||||
<description xml:lang="ko">
|
||||
회원모듈의 default스킨
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="zh-CN">
|
||||
会员模块的默认皮肤。
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="jp">
|
||||
会員モジュールのデフォルトスキン
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
default skin of member module
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="vi">
|
||||
Giao diện mặc định của Module Thành viên
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="es">
|
||||
Por defecto de la piel miembro módulo
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="ru">
|
||||
умолчанию кожу члена модуль
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<description xml:lang="zh-TW">
|
||||
會員模組預設面板。
|
||||
NHN (developers@xpressengine.com)
|
||||
</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-02-28</date>
|
||||
|
||||
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
|
||||
<name xml:lang="ko">NHN</name>
|
||||
<name xml:lang="jp">NHN</name>
|
||||
<name xml:lang="zh-CN">NHN</name>
|
||||
<name xml:lang="en">NHN</name>
|
||||
<name xml:lang="vi">NHN</name>
|
||||
<name xml:lang="es">NHN</name>
|
||||
<name xml:lang="ru">NHN</name>
|
||||
<name xml:lang="zh-TW">NHN</name>
|
||||
</author>
|
||||
|
||||
<colorset>
|
||||
<color name="white">
|
||||
<title xml:lang="ko">기본</title>
|
||||
<title xml:lang="zh-CN">默认</title>
|
||||
<title xml:lang="jp">デフォルト</title>
|
||||
<title xml:lang="en">default</title>
|
||||
<title xml:lang="vi">Mặc định</title>
|
||||
<title xml:lang="es">Por defecto</title>
|
||||
<title xml:lang="ru">умолчанию</title>
|
||||
<title xml:lang="zh-TW">預設</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
|
|
|
|||
|
|
@ -1,54 +1,50 @@
|
|||
@charset "utf-8";
|
||||
/* Mobile XE */
|
||||
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
|
||||
body,input,textarea,select,button,table{font-family:Tahoma, Geneva, sans-serif}
|
||||
img{border:0}
|
||||
em{font-style:normal}
|
||||
form{margin:0;padding:0}
|
||||
form ul{margin:0;padding:0;list-style:none}
|
||||
form li{margin:0 0 10px 0;padding:0 0 10px 0;border-bottom:1px dashed #999}
|
||||
form li:last-child{border:0}
|
||||
form p{margin:0}
|
||||
form p.help{color:#666}
|
||||
fieldset{border:0;margin:0;padding:0}
|
||||
input,textarea,select{font-size:16px}
|
||||
button{font-size:12px;cursor:pointer;background:#eee;border:1px solid #666;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;overflow:visible;padding:3px;text-shadow:1px 1px 0 #fff;box-shadow:0 0 2px #666;-moz-box-shadow:0 0 2px #666;-webkit-box-shadow:0 0 2px #666;text-decoration:none;font-weight:normal}
|
||||
/* Common Class */
|
||||
.fl{float:left}
|
||||
.fr{float:right}
|
||||
.cb{clear:both}
|
||||
.itx{border:1px solid #ccc;width:90%;font-size:20px;height:30px;padding:5px 10px}
|
||||
.itxx{border:1px solid #ccc;width:90%;font-size:20px;padding:5px 10px;resize:vertical}
|
||||
.db{display:block}
|
||||
.fb{font-weight:bold}
|
||||
.sn{margin:10px;*zoom:1}
|
||||
.sn:after{content:"";display:block;clear:both}
|
||||
/* Button */
|
||||
.bn{display:inline-block;padding:5px 10px;font-weight:normal;font-size:14px;border:1px solid #333;background:#eee;color:#000;text-shadow:1px 1px 0 #fff;box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;-webkit-box-shadow:0 0 3px #333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;text-decoration:none}
|
||||
/* Edge = Header/Footer */
|
||||
.eg{position:relative;background:#666;*zoom:1}
|
||||
.eg:after{content:"";display:block;clear:both}
|
||||
.eg a{text-decoration:none}
|
||||
/* Header */
|
||||
.hd{padding:10px;border-top:3px solid #444}
|
||||
.hd .h1{float:left;display:inline;color:#fff;font-size:24px;margin:0;font-weight:bold;text-shadow:0 0 3px #000}
|
||||
.hd .h1 a{color:#fff}
|
||||
.hd .bn{font-size:12px}
|
||||
/* Footer */
|
||||
.ft{padding:0 5px;margin:0;list-style:none}
|
||||
.ft a{display:inline-block;padding:10px;color:#fff;text-shadow:0 0 2px #000;font-size:14px;font-weight:bold}
|
||||
/* Context */
|
||||
.cm{margin:0;padding:10px;background:#777;color:#fff;text-align:center;list-style:none;border-top:1px solid #555;*zoom:1}
|
||||
.cm:after{content:"";display:block;clear:both}
|
||||
.cm .fl{margin:0 5px 0 0}
|
||||
.cm .fr{margin:0 0 0 5px}
|
||||
/* Copyright */
|
||||
.cr{margin:0;padding:5px 15px;text-align:center;background:#444;color:#ccc;text-shadow:0 0 2px #000;font-size:12px;font-weight:bold}
|
||||
/* Body */
|
||||
.bd{position:relative;overflow:hidden;clear:both}
|
||||
.bd .h2{font-size:20px;background:#ccc;border:1px solid #aaa}
|
||||
.bd .h3{font-size:16px;background:#eee;border:1px solid #ccc}
|
||||
.bd .h2,.bd .h3{position:relative;margin:-1px 0;padding:10px;border:1px solid #aaa;border-left:0;border-right:0;text-shadow:1px 1px #fff}
|
||||
.bd .h2 em,.bd .h3 em{font-weight:normal;color:#f60;font-size:12px}
|
||||
.bd .h2 a,.bd .h3 a{color:#000}
|
||||
.bd .h2 .bn{position:absolute;top:8px;right:10px;font-size:12px;margin:0}
|
||||
@charset "utf-8";
|
||||
/* Mobile XE (/modules/member/tpl/signup_form.html) */
|
||||
body{margin:0;background:#fff;color:#000;word-wrap:break-word}
|
||||
body,input,textarea,select,button,table{font-family:Tahoma,Geneva,sans-serif}
|
||||
img{border:0}
|
||||
em{font-style:normal}
|
||||
form{margin:0;padding:0}
|
||||
fieldset{margin:0;padding:0;border:0}
|
||||
textarea{resize:vertical}
|
||||
input[type=checkbox],
|
||||
input[type=radio]{width:13px;height:13px;margin:0;padding:0}
|
||||
/* Body */
|
||||
.bd{background:#f8f8f8;padding:1px 0}
|
||||
/* Hx */
|
||||
.hx{position:relative;border-bottom:1px solid #ccc8be;padding:8px 10px;margin:0}
|
||||
.hx:after{content:"";margin:0 -10px;position:relative;top:10px;display:block;clear:both;height:1px;background:#fff}
|
||||
.hx.h2{background:#e5e5e5;text-shadow:1px 1px 0 #fff}
|
||||
.hx.h2 em{font-size:12px;color:#6352d2}
|
||||
.hx.h3{background:#868686;color:#fff}
|
||||
.hx.h3 em{font-size:12px}
|
||||
.hx h2, .hx h3{margin:0 10px 0 0;display:inline}
|
||||
.hx h2{font-size:16px;line-height:1.4}
|
||||
.hx h3{font-size:14px}
|
||||
.hx a{color:#000}
|
||||
.hx .ex{font-size:12px}
|
||||
.hx .tg{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:visible;border:0;cursor:pointer;opacity:0;filter:alpha(opacity=0);background:none}
|
||||
.hx .ca{font-size:12px;text-decoration:underline;color:#333}
|
||||
.hx .ca:after{content:"";display:inline-block;position:relative;left:4px;width:0;height:0;border:4px solid;border-color:transparent;border-left-color:#8d7de1;margin:0 -8px 0 0}
|
||||
.hx .write{position:absolute;top:8px;right:10px;background-position:0 0;display:inline-block;width:28px;height:27px;font-size:0;overflow:hidden;text-indent:28px}
|
||||
/* Form Field */
|
||||
.ff{margin:0;padding:10px 0}
|
||||
.ff ul{margin:0 10px 10px 10px;padding:10px 0 0 0;list-style:none}
|
||||
.ff li{margin:0 0 5px 0;padding:0}
|
||||
.ff li p{color:#666}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea,
|
||||
.ff label+select{display:block;width:96%;font-size:14px;margin:0 0 5px 0}
|
||||
.ff label+input[type=text],
|
||||
.ff label+input[type=password],
|
||||
.ff label+textarea{padding:5px}
|
||||
/* Button Area */
|
||||
.bna{text-align:center;padding:0 10px;margin:10px 0}
|
||||
.bna:after{content:"";display:block;clear:both}
|
||||
.bn{display:inline-block;line-height:26px !important;padding:0 10px;font-size:12px;font-weight:bold;border:1px solid;text-decoration:none;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;cursor:pointer;vertical-align:middle}
|
||||
.bn[type=submit],
|
||||
.bn[type=button]{height:28px}
|
||||
.bn[href]{height:26px}
|
||||
.bn.dark{border-color:#666;background:#777 -webkit-gradient(linear,0% 0%,0% 100%,from(#7e7c78),to(#5c5b58));background:#777 -moz-linear-gradient(top,#7e7c78,#5c5b58);background-color:#777;color:#fff;box-shadow:0 0 1px #fff inset;-moz-box-shadow:0 0 1px #fff inset;-webkit-box-shadow:0 0 1px #fff inset}
|
||||
.bn.white{border-color:#b5b5b5;background:#1b1b1b -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#f6f6f6),color-stop(0.5,#f0f0f0),color-stop(0.5,#e4e4e4));background:#1b1b1b -moz-linear-gradient(top,#fff,#e4e4e4);background-color:#1b1b1b;color:#000}
|
||||
|
|
|
|||
|
|
@ -1,52 +1,52 @@
|
|||
/**
|
||||
* @brief 회원 가입시나 정보 수정시 각 항목의 중복 검사등을 하는 기능을 구현
|
||||
* @author zero
|
||||
**/
|
||||
|
||||
// 입력이 시작된 것과 입력후 정해진 시간동안 내용이 변하였을 경우 서버에 ajax로 체크를 하기 위한 변수 설정
|
||||
var memberCheckObj = { target:null, value:null }
|
||||
|
||||
// domready시에 특정 필드들에 대해 이벤트를 걸어 놓음
|
||||
jQuery(document).ready(memberSetEvent);
|
||||
|
||||
function memberSetEvent() {
|
||||
jQuery('#fo_insert_member :input')
|
||||
.filter('[name=user_id],[name=nick_name],[name=email_address]')
|
||||
.blur(memberCheckValue);
|
||||
}
|
||||
|
||||
|
||||
// 실제 서버에 특정 필드의 value check를 요청하고 이상이 있으면 메세지를 뿌려주는 함수
|
||||
function memberCheckValue(event) {
|
||||
var field = event.target;
|
||||
var _name = field.name;
|
||||
var _value = field.value;
|
||||
if(!_name || !_value) return;
|
||||
|
||||
var params = {name:_name, value:_value};
|
||||
var response_tags = ['error','message'];
|
||||
|
||||
exec_xml('member','procMemberCheckValue', params, completeMemberCheckValue, response_tags, field);
|
||||
}
|
||||
|
||||
// 서버에서 응답이 올 경우 이상이 있으면 메세지를 출력
|
||||
function completeMemberCheckValue(ret_obj, response_tags, field) {
|
||||
var _id = 'dummy_check'+field.name;
|
||||
var dummy = jQuery('#'+_id);
|
||||
|
||||
if(ret_obj['message']=='success') {
|
||||
dummy.html('').hide();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dummy.length) {
|
||||
dummy = jQuery('<div class="checkValue" />').attr('id', _id).appendTo(field.parentNode);
|
||||
}
|
||||
|
||||
dummy.html(ret_obj['message']).show();
|
||||
}
|
||||
|
||||
// 결과 메세지를 정리하는 함수
|
||||
function removeMemberCheckValueOutput(dummy, obj) {
|
||||
dummy.style.display = "none";
|
||||
}
|
||||
/**
|
||||
* @brief 회원 가입시나 정보 수정시 각 항목의 중복 검사등을 하는 기능을 구현
|
||||
* @author NHN (developer@xpressengine.com)
|
||||
**/
|
||||
|
||||
// 입력이 시작된 것과 입력후 정해진 시간동안 내용이 변하였을 경우 서버에 ajax로 체크를 하기 위한 변수 설정
|
||||
var memberCheckObj = { target:null, value:null }
|
||||
|
||||
// domready시에 특정 필드들에 대해 이벤트를 걸어 놓음
|
||||
jQuery(document).ready(memberSetEvent);
|
||||
|
||||
function memberSetEvent() {
|
||||
jQuery('#fo_insert_member :input')
|
||||
.filter('[name=user_id],[name=nick_name],[name=email_address]')
|
||||
.blur(memberCheckValue);
|
||||
}
|
||||
|
||||
|
||||
// 실제 서버에 특정 필드의 value check를 요청하고 이상이 있으면 메세지를 뿌려주는 함수
|
||||
function memberCheckValue(event) {
|
||||
var field = event.target;
|
||||
var _name = field.name;
|
||||
var _value = field.value;
|
||||
if(!_name || !_value) return;
|
||||
|
||||
var params = {name:_name, value:_value};
|
||||
var response_tags = ['error','message'];
|
||||
|
||||
exec_xml('member','procMemberCheckValue', params, completeMemberCheckValue, response_tags, field);
|
||||
}
|
||||
|
||||
// 서버에서 응답이 올 경우 이상이 있으면 메세지를 출력
|
||||
function completeMemberCheckValue(ret_obj, response_tags, field) {
|
||||
var _id = 'dummy_check'+field.name;
|
||||
var dummy = jQuery('#'+_id);
|
||||
|
||||
if(ret_obj['message']=='success') {
|
||||
dummy.html('').hide();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dummy.length) {
|
||||
dummy = jQuery('<div class="checkValue" />').attr('id', _id).appendTo(field.parentNode);
|
||||
}
|
||||
|
||||
dummy.html(ret_obj['message']).show();
|
||||
}
|
||||
|
||||
// 결과 메세지를 정리하는 함수
|
||||
function removeMemberCheckValueOutput(dummy, obj) {
|
||||
dummy.style.display = "none";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,13 @@
|
|||
{$lang->about_enable_confirm}
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->change_password_date}</div></th>
|
||||
<td>
|
||||
<input type="text" name="change_password_date" value="{$config->change_password_date}" size="2" class="inputTypeText" />{$lang->unit_day}
|
||||
<p>{$lang->about_change_password_date}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="row"><div>{$lang->limit_day}</div></th>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -1,118 +1,122 @@
|
|||
{@ Context::addJsFile("./common/js/jquery.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/js_app.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/common.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/xml_handler.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/xml_js_filter.js", true, '', -100000) }
|
||||
|
||||
<!--%import("css/msignup.css")-->
|
||||
<!--%import("js/signup_check.js")-->
|
||||
<!--%import("js/krzip_search.js")-->
|
||||
<!--%import("../skins/default/filter/signup.xml")-->
|
||||
<!--%import("../skins/default/js/member.js")-->
|
||||
<div class="bd">
|
||||
<h2 class="h2">{$lang->cmd_signup}</h2>
|
||||
<h3 class="h3">{$lang->member_default_info}</h3>
|
||||
<form id="fo_insert_member" action="./" method="GET" onsubmit="return procFilter(this, signup)">
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<li><label for="id" class="db fb al">{$lang->user_id}</label><input name="user_id" type="text" id="id" class="itx" value="" /><p style="color:#666">{$lang->about_user_id}</p></li>
|
||||
<li><label for="pw" class="db fb al">{$lang->password}</label><input name="password1" type="password" id="pw" class="itx" value="" /><p style="color:#666">{$lang->about_password}</p></li>
|
||||
<li><label for="pw2" class="db fb al">{$lang->password2}</label><input name="password2" type="password" id="pw2" class="itx" value="" /></li>
|
||||
<li><label for="uname" class="db fb al">{$lang->user_name}</label><input name="user_name" type="text" id="uname" class="itx" value="" /><p style="color:#666">{$lang->about_user_name}</p></li>
|
||||
<li><label for="nname" class="db fb al">{$lang->nick_name}</label><input name="nick_name" type="text" id="nname" class="itx" value="" /><p style="color:#666">{$lang->about_nick_name}</p></li>
|
||||
<li><label for="email" class="db fb al">{$lang->email_address}</label><input name="email_address" type="text" id="email" class="itx" value="" /><p style="color:#666">{$lang->about_email_address}</p></li>
|
||||
<li><label for="hpage" class="db fb al">{$lang->homepage}</label><input name="homepage" type="text" id="hpage" class="itx" value="" /><p style="color:#666">{$lang->about_homepage}</p></li>
|
||||
<li><label for="bpage" class="db fb al">{$lang->blog}</label><input name="blog" type="text" id="bpage" class="itx" value="" /><p style="color:#666">{$lang->about_blog_url}</p></li>
|
||||
<li><label for="bday" class="db fb al">{$lang->birthday}</label><input name="birthday" type="text" id="bday" class="itx" value="" /><p style="color:#666">{$lang->about_birthday}</p></li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@if($extend_form_list)-->
|
||||
<h3 class="h3">{$lang->member_extend_info}</h3>
|
||||
<fieldset class="sn">
|
||||
<ul>
|
||||
<!--@foreach($extend_form_list as $key => $val)--><!--@if($val->is_active=='Y')-->
|
||||
<li><label class="db fb al">{htmlspecialchars($val->column_title)}</label>
|
||||
<!--// 일반 text -->
|
||||
<!--@if($val->column_type == 'text')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// 홈페이지 주소 -->
|
||||
<!--@elseif($val->column_type == 'homepage')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// Email 주소 -->
|
||||
<!--@elseif($val->column_type == 'email_address')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" class="itx" />
|
||||
<!--// 전화번호 -->
|
||||
<!--@elseif($val->column_type == 'tel')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4"/>
|
||||
<!--// textarea -->
|
||||
<!--@elseif($val->column_type == 'textarea')-->
|
||||
<textarea name="{$val->column_name}" class="itxx">{htmlspecialchars($val->value)}</textarea>
|
||||
<!--// 다중 선택 -->
|
||||
<!--@elseif($val->column_type == 'checkbox')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="checkbox" id="{$v}" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<!--@elseif($val->column_type == 'radio')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="radio" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<!--// 단일 선택 -->
|
||||
<!--@elseif($val->column_type == 'select')-->
|
||||
<select name="{$val->column_name}">
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--// 한국 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'kr_zip')-->
|
||||
<div class="krZip">
|
||||
<div id="zone_address_1_{$val->column_name}" style="display:<!--@if($val->value[0])-->inline<!--@else-->none<!--@end-->;">
|
||||
<input type="text" name="{$val->column_name}" value="{$val->value[0]}" class="itx"/>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_list_{$val->column_name}" style="display:none">
|
||||
<select name="_tmp_address_list_{$val->column_name}" class="w300"></select>
|
||||
<a href="#" onclick="doSelectKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_select}</span></a>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_search_{$val->column_name}" style="display:<!--@if($val->value[0])-->none<!--@else-->inline<!--@end-->;">
|
||||
<input type="text" name="_tmp_address_search_{$val->column_name}" class="itx" value="" />
|
||||
<a href="#" onclick="doSearchKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_search}</span></a>
|
||||
</div>
|
||||
|
||||
<div class="address2">
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" class="itx" />
|
||||
</div>
|
||||
</div>
|
||||
<!--// 일본 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'jp_zip')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// 날짜 입력 -->
|
||||
<!--@elseif($val->column_type == 'date')-->
|
||||
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
|
||||
<input type="text" class="inputDate inputTypeText" value="" />
|
||||
<!--@end-->
|
||||
<p style="color:#666">{$val->description}</p>
|
||||
<!--// 공개 필드 css확인 필요 -->
|
||||
<!--input type="checkbox" class="checkbox" name="open_{$val->column_name}" value="Y" id="open_{$val->column_name}" /><label for="open_{$val->column_name}">{$lang->public}</label--></li>
|
||||
<!--@end--><!--@end-->
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@end-->
|
||||
|
||||
|
||||
<div class="cm">
|
||||
<input type="submit" class="bn" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{@ Context::addJsFile("./common/js/jquery.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/js_app.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/common.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/xml_handler.js", true, '', -100000) }
|
||||
{@ Context::addJsFile("./common/js/xml_js_filter.js", true, '', -100000) }
|
||||
|
||||
<!--%import("css/msignup.css")-->
|
||||
<!--%import("js/signup_check.js")-->
|
||||
<!--%import("js/krzip_search.js")-->
|
||||
<!--%import("../skins/default/filter/signup.xml")-->
|
||||
<!--%import("../skins/default/js/member.js")-->
|
||||
<div class="bd">
|
||||
<div class="hx h2">
|
||||
<h2>{$lang->cmd_signup}</h2>
|
||||
</div>
|
||||
<div class="hx h3">
|
||||
<h3>{$lang->member_default_info}</h3>
|
||||
</div>
|
||||
<form id="fo_insert_member" action="./" method="get" class="ff" onsubmit="return procFilter(this, signup)">
|
||||
<fieldset>
|
||||
<ul>
|
||||
<li><label for="id">{$lang->user_id}</label><input name="user_id" type="text" id="id" value="" /><p>{$lang->about_user_id}</p></li>
|
||||
<li><label for="pw">{$lang->password}</label><input name="password1" type="password" id="pw" value="" /><p>{$lang->about_password}</p></li>
|
||||
<li><label for="pw2">{$lang->password2}</label><input name="password2" type="password" id="pw2" value="" /></li>
|
||||
<li><label for="uname">{$lang->user_name}</label><input name="user_name" type="text" id="uname" value="" /><p>{$lang->about_user_name}</p></li>
|
||||
<li><label for="nname">{$lang->nick_name}</label><input name="nick_name" type="text" id="nname" value="" /><p>{$lang->about_nick_name}</p></li>
|
||||
<li><label for="email">{$lang->email_address}</label><input name="email_address" type="text" id="email" value="" /><p>{$lang->about_email_address}</p></li>
|
||||
<li><label for="hpage">{$lang->homepage}</label><input name="homepage" type="text" id="hpage" value="" /><p>{$lang->about_homepage}</p></li>
|
||||
<li><label for="bpage">{$lang->blog}</label><input name="blog" type="text" id="bpage" value="" /><p>{$lang->about_blog_url}</p></li>
|
||||
<li><label for="bday">{$lang->birthday}</label><input name="birthday" type="text" id="bday" value="" /><p>{$lang->about_birthday}</p></li>
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@if($extend_form_list)-->
|
||||
<div class="hx h3">
|
||||
<h3>{$lang->member_extend_info}</h3>
|
||||
</div>
|
||||
<fieldset>
|
||||
<ul>
|
||||
<!--@foreach($extend_form_list as $key => $val)--><!--@if($val->is_active=='Y')-->
|
||||
<li><label>{htmlspecialchars($val->column_title)}</label>
|
||||
<!--// 일반 text -->
|
||||
<!--@if($val->column_type == 'text')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// 홈페이지 주소 -->
|
||||
<!--@elseif($val->column_type == 'homepage')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// Email 주소 -->
|
||||
<!--@elseif($val->column_type == 'email_address')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// 전화번호 -->
|
||||
<!--@elseif($val->column_type == 'tel')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[0])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" size="4"/>
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[2])}" size="4"/>
|
||||
<!--// textarea -->
|
||||
<!--@elseif($val->column_type == 'textarea')-->
|
||||
<textarea name="{$val->column_name}">{htmlspecialchars($val->value)}</textarea>
|
||||
<!--// 다중 선택 -->
|
||||
<!--@elseif($val->column_type == 'checkbox')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="checkbox" id="{$v}" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
<!--@elseif($val->column_type == 'radio')-->
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<input type="radio" name="{$val->column_name}" value="{$v}" <!--@if(is_array($val->value)&&in_array($v, $val->value))-->checked="checked"<!--@end-->/><label for="{$v}">{$v}</label>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
|
||||
<!--// 단일 선택 -->
|
||||
<!--@elseif($val->column_type == 'select')-->
|
||||
<select name="{$val->column_name}">
|
||||
<!--@if($val->default_value)-->
|
||||
<!--@foreach($val->default_value as $v)-->
|
||||
<option value="{$v}" <!--@if($v == $val->value)-->selected="selected"<!--@end-->>{$v}</option>
|
||||
<!--@end-->
|
||||
<!--@end-->
|
||||
</select>
|
||||
|
||||
<!--// 한국 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'kr_zip')-->
|
||||
<div class="krZip">
|
||||
<div id="zone_address_1_{$val->column_name}" style="display:<!--@if($val->value[0])-->inline<!--@else-->none<!--@end-->;">
|
||||
<input type="text" name="{$val->column_name}" value="{$val->value[0]}"/>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_list_{$val->column_name}" style="display:none">
|
||||
<select name="_tmp_address_list_{$val->column_name}" class="w300"></select>
|
||||
<a href="#" onclick="doSelectKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_select}</span></a>
|
||||
<a href="#" onclick="doHideKrZipList('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_cancel}</span></a>
|
||||
</div>
|
||||
<div id="zone_address_search_{$val->column_name}" style="display:<!--@if($val->value[0])-->none<!--@else-->inline<!--@end-->;">
|
||||
<input type="text" name="_tmp_address_search_{$val->column_name}" value="" />
|
||||
<a href="#" onclick="doSearchKrZip('{$val->column_name}'); return false;" class="bn"><span>{$lang->cmd_search}</span></a>
|
||||
</div>
|
||||
|
||||
<div class="address2">
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value[1])}" />
|
||||
</div>
|
||||
</div>
|
||||
<!--// 일본 주소 검색 -->
|
||||
<!--@elseif($val->column_type == 'jp_zip')-->
|
||||
<input type="text" name="{$val->column_name}" value="{htmlspecialchars($val->value)}" />
|
||||
<!--// 날짜 입력 -->
|
||||
<!--@elseif($val->column_type == 'date')-->
|
||||
<input type="hidden" name="{$val->column_name}" id="date_{$val->column_name}" value="{$val->value}" />
|
||||
<input type="text" class="inputDate inputTypeText" value="" />
|
||||
<!--@end-->
|
||||
<p>{$val->description}</p>
|
||||
<!--// 공개 필드 css확인 필요 -->
|
||||
<!--input type="checkbox" class="checkbox" name="open_{$val->column_name}" value="Y" id="open_{$val->column_name}" /><label for="open_{$val->column_name}">{$lang->public}</label--></li>
|
||||
<!--@end--><!--@end-->
|
||||
</ul>
|
||||
</fieldset>
|
||||
<!--@end-->
|
||||
<div class="bna">
|
||||
<input type="submit" class="bn dark" value="{$lang->cmd_registration}" accesskey="s" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue