mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 17:21:39 +09:00
Merge pull request #934 from kijin/pr/member-phone-number
회원 테이블에 전화번호 컬럼 추가
This commit is contained in:
commit
4d1135392f
21 changed files with 776 additions and 176 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -94,6 +94,7 @@ $lang->writer = 'Author';
|
|||
$lang->user_name = 'User Name';
|
||||
$lang->nick_name = 'Nick Name';
|
||||
$lang->email_address = 'Email';
|
||||
$lang->phone_number = 'Phone Number';
|
||||
$lang->homepage = 'Homepage';
|
||||
$lang->blog = 'Blog';
|
||||
$lang->birthday = 'Birthday';
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ $lang->writer = '글쓴이';
|
|||
$lang->user_name = '이름';
|
||||
$lang->nick_name = '닉네임';
|
||||
$lang->email_address = '이메일 주소';
|
||||
$lang->phone_number = '전화번호';
|
||||
$lang->homepage = '홈페이지';
|
||||
$lang->blog = '블로그';
|
||||
$lang->birthday = '생일';
|
||||
|
|
|
|||
|
|
@ -40,7 +40,9 @@ class installAdminController extends install
|
|||
$oModule = getModule($module_name, 'class');
|
||||
if(!$oModule) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||
|
||||
Rhymix\Framework\Session::close();
|
||||
$output = $oModule->moduleUpdate();
|
||||
Rhymix\Framework\Session::start();
|
||||
if($output instanceof BaseObject && !$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ $lang->group_title = 'Group Name';
|
|||
$lang->group_srl = 'Group Number';
|
||||
$lang->group_order = 'Gropu Priority';
|
||||
$lang->group_order_change = 'Change Group Priority';
|
||||
$lang->phone_number_default_country = 'Default Country Code';
|
||||
$lang->phone_number_hide_country = 'Hide Country Code Selection';
|
||||
$lang->phone_number_allow_duplicate = 'Allow Multiple Members';
|
||||
$lang->msg_need_default_country = 'You must select a default country code if you want to hide the country code selection box.';
|
||||
$lang->signature = 'Signature';
|
||||
$lang->profile_image = 'Profile Image';
|
||||
$lang->profile_image_max_width = 'Max Width';
|
||||
|
|
@ -78,6 +82,7 @@ $lang->about_webmaster_email = 'This setting can be changed in the <a href="inde
|
|||
$lang->retroactive_application = 'retroact';
|
||||
$lang->signature_html_retroact = 'also remove HTML in past inseted HTML signature. Can not be reversed.';
|
||||
$lang->search_target_list['email_address'] = 'Email Address';
|
||||
$lang->search_target_list['email_address'] = 'Phone Number';
|
||||
$lang->search_target_list['regdate'] = 'Sign up Date';
|
||||
$lang->search_target_list['regdate_more'] = 'Sign up Date (more)';
|
||||
$lang->search_target_list['regdate_less'] = 'Sign up Date (less)';
|
||||
|
|
@ -152,6 +157,8 @@ $lang->msg_cannot_delete_admin = 'Admin ID cannot be deleted. Please remove the
|
|||
$lang->msg_column_id_not_available = 'The ID already exists or is not usable.';
|
||||
$lang->msg_exists_user_id = 'This ID already exists. Please try another one.';
|
||||
$lang->msg_exists_email_address = 'This email address already exists. Please try another one.';
|
||||
$lang->msg_exists_phone_number = 'This phone number already exists. Please try another one.';
|
||||
$lang->msg_invalid_phone_number = 'The phone number you have entered is invalid.';
|
||||
$lang->msg_exists_nick_name = 'This nickname already exists. Please try another one.';
|
||||
$lang->msg_signup_disabled = 'You are not able to sign up';
|
||||
$lang->msg_already_logged = 'You have already signed up.';
|
||||
|
|
@ -247,10 +254,7 @@ $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)';
|
||||
$lang->msg_change_password_date = 'You have not changed the password during %s days. For personal information protection, you need to change the password.';
|
||||
$lang->login_trial_limit1 = 'Sign in trial limit';
|
||||
$lang->login_trial_limit2 = 'Sign in trial limit';
|
||||
$lang->about_login_trial_limit1 = 'Set the number of trial limit. Limit the number of trial to sign in from a IP address.';
|
||||
$lang->about_login_trial_limit2 = 'Set the time limit to try the written times of sign in. Limit the number of trial to sign in during the span of time, from a IP address.';
|
||||
$lang->about_login_trial_limit = 'Limit the number of login attempts in a short time from the same IP address.';
|
||||
$lang->msg_kr_address = 'Search for the name of eup, myeon or dong of your address.';
|
||||
$lang->msg_kr_address_etc = 'Enter the rest of your address.';
|
||||
$lang->cmd_search_again = 'Search again';
|
||||
|
|
@ -297,8 +301,10 @@ $lang->add_extend_form = 'Add user defined item';
|
|||
$lang->msg_null_prohibited_id = 'Please enter an ID to prohibit.';
|
||||
$lang->msg_null_prohibited_nick_name = 'Please enter a nick name to prohibit.';
|
||||
$lang->msg_null_managed_emailhost = 'Please enter email address providers to manage. (eg.: gmail.com)';
|
||||
$lang->identifier = 'Login Account';
|
||||
$lang->about_identifier = 'Please select an account to use when logging in.';
|
||||
$lang->identifier = 'Login Identifier';
|
||||
$lang->about_identifier = 'Allow users to login using one or more identifiers.<br />Please beware of country codes if you allow login by phone number.';
|
||||
$lang->msg_need_identifier = 'You need to select at least one login identifier.';
|
||||
$lang->msg_need_enabled_identifier = 'You need to select identifiers that are enabled in the signup form.';
|
||||
$lang->use_after_save = 'Use after saved';
|
||||
$lang->cmd_add_group = 'Add group';
|
||||
$lang->msg_groups_exist = 'groups exist.';
|
||||
|
|
|
|||
|
|
@ -31,6 +31,10 @@ $lang->group_title = '그룹 제목';
|
|||
$lang->group_srl = '그룹 번호';
|
||||
$lang->group_order = '그룹 우선순위';
|
||||
$lang->group_order_change = '그룹 우선순위 변경';
|
||||
$lang->phone_number_default_country = '기본 선택 국가';
|
||||
$lang->phone_number_hide_country = '국가 목록 숨김';
|
||||
$lang->phone_number_allow_duplicate = '중복 가입 허용';
|
||||
$lang->msg_need_default_country = '국가 목록을 숨기려면 기본 선택 국가가 있어야 합니다.';
|
||||
$lang->signature = '서명';
|
||||
$lang->profile_image = '프로필 사진';
|
||||
$lang->profile_image_max_width = '가로 제한 길이';
|
||||
|
|
@ -80,6 +84,7 @@ $lang->about_webmaster_email = '이 설정은 <a href="index.php?module=admin&ac
|
|||
$lang->retroactive_application = '소급적용';
|
||||
$lang->signature_html_retroact = '이전에 입력된 HTML 서명에서도 HTML을 제거 합니다. 되돌릴 수 없습니다.';
|
||||
$lang->search_target_list['email_address'] = '이메일';
|
||||
$lang->search_target_list['phone_number'] = '전화번호';
|
||||
$lang->search_target_list['regdate'] = '가입일시';
|
||||
$lang->search_target_list['regdate_more'] = '가입일시(이상)';
|
||||
$lang->search_target_list['regdate_less'] = '가입일시(이하)';
|
||||
|
|
@ -160,6 +165,8 @@ $lang->msg_cannot_delete_admin = '관리자 아이디는 삭제할 수 없습니
|
|||
$lang->msg_column_id_not_available = '이미 존재하거나 사용할 수 없는 ID입니다.';
|
||||
$lang->msg_exists_user_id = '이미 존재하는 아이디입니다. 다른 아이디를 입력해주세요.';
|
||||
$lang->msg_exists_email_address = '이미 존재하는 메일 주소입니다. 다른 메일 주소를 입력해주세요.';
|
||||
$lang->msg_exists_phone_number = '이미 존재하는 전화번호입니다. 다른 전화번호를 입력해주세요.';
|
||||
$lang->msg_invalid_phone_number = '전화번호가 형식에 맞지 않습니다.';
|
||||
$lang->msg_exists_nick_name = '이미 존재하는 닉네임입니다. 다른 닉네임을 입력해주세요.';
|
||||
$lang->msg_signup_disabled = '회원 가입할 수 없습니다.';
|
||||
$lang->msg_already_logged = '이미 회원 가입을 한 상태입니다.';
|
||||
|
|
@ -219,8 +226,8 @@ $lang->about_enable_find_account_question = '질문/답변을 통한 비밀번
|
|||
$lang->about_enable_ssl = '서버에서 보안접속(SSL) 지원이 될 경우 회원가입, 정보수정, 로그인 등의 개인정보가 서버로 보내질 때 SSL(https)을 이용하도록 할 수 있습니다.';
|
||||
$lang->about_limit_day = '회원 가입 후 정해진 일자동안 인증 제한을 할 수 있습니다.';
|
||||
$lang->about_limit_date = '지정한 날짜까지 로그인을 할 수 없습니다.';
|
||||
$lang->about_after_login_url = '로그인 후 이동할 URL을 정할 수 있습니다. 입력 URL이 없는 경우 해당 페이지가 유지됩니다.';
|
||||
$lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정할 수 있습니다. 입력 URL이 없는 경우 해당 페이지가 유지됩니다.';
|
||||
$lang->about_after_login_url = '로그인 후 이동할 URL을 정할 수 있습니다. 입력하지 않으면 로그인 전의 페이지로 돌아갑니다.';
|
||||
$lang->about_after_logout_url = '로그아웃 후 이동할 URL을 정할 수 있습니다. 입력하지 않으면 로그아웃 전의 페이지로 돌아갑니다.';
|
||||
$lang->about_redirect_url = '회원 가입 후 이동할 페이지를 선택해 주세요. 선택된 페이지가 없는 경우 이전 페이지로 돌아갑니다.';
|
||||
$lang->about_agreement = '회원 가입 약관이 없을 경우 표시되지 않습니다.';
|
||||
$lang->about_image_name = '회원의 이름을 글자 대신 이미지로 사용할 수 있게 합니다.';
|
||||
|
|
@ -259,12 +266,9 @@ $lang->msg_question_not_allowed = '질문/답변을 통한 비밀번호 찾기
|
|||
$lang->msg_question_not_exists = '등록한 비밀번호 찾기 질문/답변이 없습니다.';
|
||||
$lang->msg_answer_not_matches = '비밀번호 찾기 질문/답변 또는 정보가 올바르지 않습니다.';
|
||||
$lang->change_password_date = '비밀번호 갱신주기';
|
||||
$lang->about_change_password_date = '일정기간이 지나면 비밀번호 변경을 하도록 유도하는 기능입니다. (사용하지 않음 : 0 입력) ';
|
||||
$lang->about_change_password_date = '일정 기간이 지나면 비밀번호를 변경하도록 유도하는 기능입니다. 사용하지 않으려면 0을 입력하십시오.';
|
||||
$lang->msg_change_password_date = '%s일 동안 비밀번호를 변경하지 않았습니다. 개인정보 보호를 위하여 비밀번호를 변경해야 합니다.';
|
||||
$lang->login_trial_limit1 = '로그인 시도 횟수 제한 횟수';
|
||||
$lang->login_trial_limit2 = '로그인 시도 횟수 제한 시간';
|
||||
$lang->about_login_trial_limit1 = '정해진 시간 안에 허용되는 로그인 횟수를 입력하십시오. 짧은 시간 동안 하나의 아이피(IP)에서 시도할 수 있는 로그인 횟수에 제한을 둡니다.';
|
||||
$lang->about_login_trial_limit2 = '지정된 횟수의 로그인을 허용하는 시간을 정하십시오. 짧은 시간 동안 하나의 아이피(IP)에서 시도할 수 있는 로그인 횟수에 제한을 둡니다. 시간은 가장 마지막 로그인 시도의 시각으로부터의 시간을 기준으로 측정합니다.';
|
||||
$lang->about_login_trial_limit = '짧은 시간 동안 하나의 아이피(IP)에서 시도할 수 있는 로그인 횟수에 제한을 둡니다.';
|
||||
$lang->msg_kr_address = '읍, 면, 동 이름으로 검색하세요.';
|
||||
$lang->msg_kr_address_etc = '나머지 주소(번지)를 입력하세요.';
|
||||
$lang->cmd_search_again = '다시 검색';
|
||||
|
|
@ -311,9 +315,11 @@ $lang->add_extend_form = '사용자 정의 항목 추가';
|
|||
$lang->msg_null_prohibited_id = '추가할 금지 아이디를 입력해주세요.';
|
||||
$lang->msg_null_prohibited_nick_name = '추가할 금지 닉네임을 입력해주세요.';
|
||||
$lang->msg_null_managed_emailhost = '추가할 금지 이메일 주소 제공자를 입력해주세요. (예: naver.com)';
|
||||
$lang->identifier = '로그인 계정';
|
||||
$lang->about_identifier = '로그인에 사용할 계정을 선택해주세요.';
|
||||
$lang->identifier = '로그인 방법';
|
||||
$lang->about_identifier = '회원들이 여러 가지 방법으로 로그인할 수 있습니다.<br />전화번호 로그인을 허용하는 경우 국가코드에 유의하십시오.';
|
||||
$lang->about_public_item = '본인 외에 다른 회원에게도 노출될 정보인지 선택합니다.';
|
||||
$lang->msg_need_identifier = '최소 한 가지의 로그인 방법을 선택해야 합니다.';
|
||||
$lang->msg_need_enabled_identifier = '가입 폼에서 사용하도록 설정된 로그인 방법을 선택해야 합니다.';
|
||||
$lang->use_after_save = '저장 후 사용';
|
||||
$lang->cmd_add_group = '그룹 추가';
|
||||
$lang->msg_groups_exist = '개 그룹이 존재합니다.';
|
||||
|
|
|
|||
|
|
@ -46,6 +46,10 @@ class memberAdminController extends member
|
|||
foreach($getVars as $val)
|
||||
{
|
||||
$args->{$val} = Context::get($val);
|
||||
if ($val === 'phone_number')
|
||||
{
|
||||
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', Context::get('phone_country')), '-');
|
||||
}
|
||||
}
|
||||
$member_srl = Context::get('member_srl');
|
||||
// Check if an original member exists having the member_srl
|
||||
|
|
@ -289,6 +293,8 @@ class memberAdminController extends member
|
|||
public function procMemberAdminInsertSignupConfig()
|
||||
{
|
||||
$oMemberModel = getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
|
||||
$oModuleController = getController('module');
|
||||
|
||||
$args = Context::gets(
|
||||
|
|
@ -296,6 +302,7 @@ class memberAdminController extends member
|
|||
'limit_day_description',
|
||||
'emailhost_check',
|
||||
'redirect_url',
|
||||
'phone_number_default_country', 'phone_number_hide_country', 'phone_number_allow_duplicate',
|
||||
'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
|
||||
'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
|
||||
'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
|
||||
|
|
@ -323,11 +330,18 @@ class memberAdminController extends member
|
|||
$args->redirect_url = getNotEncodedFullUrl('','mid',$redirectModuleInfo->mid);
|
||||
}
|
||||
|
||||
$args->phone_number_default_country = preg_replace('/[^0-9-]/', '', $args->phone_number_default_country);
|
||||
$args->phone_number_hide_country = $args->phone_number_hide_country == 'Y' ? 'Y' : 'N';
|
||||
$args->phone_number_allow_duplicate = $args->phone_number_allow_duplicate == 'Y' ? 'Y' : 'N';
|
||||
if ($args->phone_number_hide_country === 'Y' && !$args->phone_number_default_country)
|
||||
{
|
||||
return new BaseObject('-1', 'msg_need_default_country');
|
||||
}
|
||||
|
||||
$args->profile_image = $args->profile_image ? 'Y' : 'N';
|
||||
$args->image_name = $args->image_name ? 'Y' : 'N';
|
||||
$args->image_mark = $args->image_mark ? 'Y' : 'N';
|
||||
$args->signature = $args->signature != 'Y' ? 'N' : 'Y';
|
||||
$args->identifier = $all_args->identifier;
|
||||
|
||||
// set default
|
||||
$all_args->is_nick_name_public = 'Y';
|
||||
|
|
@ -337,7 +351,7 @@ class memberAdminController extends member
|
|||
global $lang;
|
||||
$signupForm = array();
|
||||
$items = array(
|
||||
'user_id', 'password', 'user_name', 'nick_name', 'email_address', 'homepage', 'blog', 'birthday', 'signature',
|
||||
'user_id', 'password', 'user_name', 'nick_name', 'email_address', 'phone_number', 'homepage', 'blog', 'birthday', 'signature',
|
||||
'profile_image', 'profile_image_max_width', 'profile_image_max_height', 'profile_image_max_filesize',
|
||||
'image_name', 'image_name_max_width', 'image_name_max_height', 'image_name_max_filesize',
|
||||
'image_mark', 'image_mark_max_width', 'image_mark_max_height', 'image_mark_max_filesize',
|
||||
|
|
@ -348,13 +362,13 @@ class memberAdminController extends member
|
|||
foreach($list_order as $key)
|
||||
{
|
||||
$signupItem = new stdClass();
|
||||
$signupItem->isIdentifier = ($key == $all_args->identifier);
|
||||
$signupItem->isIdentifier = ($key == $config->identifier || in_array($key, $config->identifiers));
|
||||
$signupItem->isDefaultForm = in_array($key, $items);
|
||||
$signupItem->name = $key;
|
||||
$signupItem->title = (!in_array($key, $items)) ? $key : $lang->{$key};
|
||||
$signupItem->mustRequired = in_array($key, $mustRequireds);
|
||||
$signupItem->imageType = (strpos($key, 'image') !== false);
|
||||
$signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired || $signupItem->isIdentifier;
|
||||
$signupItem->required = ($all_args->{$key} == 'required') || $signupItem->mustRequired;
|
||||
$signupItem->isUse = in_array($key, $usable_list) || $signupItem->required;
|
||||
$signupItem->isPublic = ($all_args->{'is_'.$key.'_public'} == 'Y' && $signupItem->isUse) ? 'Y' : 'N';
|
||||
|
||||
|
|
@ -407,9 +421,12 @@ class memberAdminController extends member
|
|||
|
||||
public function procMemberAdminInsertLoginConfig()
|
||||
{
|
||||
$oMemberModel = getModel('member');
|
||||
$config = $oMemberModel->getMemberConfig();
|
||||
$oModuleController = getController('module');
|
||||
|
||||
$args = Context::gets(
|
||||
'identifiers',
|
||||
'change_password_date',
|
||||
'enable_login_fail_report',
|
||||
'max_error_count',
|
||||
|
|
@ -417,7 +434,34 @@ class memberAdminController extends member
|
|||
'after_login_url',
|
||||
'after_logout_url'
|
||||
);
|
||||
|
||||
|
||||
if(!count($args->identifiers))
|
||||
{
|
||||
return new BaseObject(-1, 'msg_need_identifier');
|
||||
}
|
||||
$enabled_list = array();
|
||||
foreach($config->signupForm as $signupItem)
|
||||
{
|
||||
if($signupItem->isUse)
|
||||
{
|
||||
$enabled_list[] = $signupItem->name;
|
||||
}
|
||||
if(in_array($signupItem->name, $args->identifiers))
|
||||
{
|
||||
$signupItem->isIdentifier = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$signupItem->isIdentifier = false;
|
||||
}
|
||||
}
|
||||
if(!count(array_intersect($args->identifiers, $enabled_list)))
|
||||
{
|
||||
return new BaseObject(-1, 'msg_need_enabled_identifier');
|
||||
}
|
||||
$args->signupForm = $config->signupForm;
|
||||
$args->identifier = array_first($args->identifiers);
|
||||
|
||||
if(!$args->change_password_date)
|
||||
{
|
||||
$args->change_password_date = 0;
|
||||
|
|
@ -482,11 +526,11 @@ class memberAdminController extends member
|
|||
{
|
||||
global $lang;
|
||||
$oMemberModel = getModel('member');
|
||||
|
||||
|
||||
// Get join form list which is additionally set
|
||||
$extendItems = $oMemberModel->getJoinFormList();
|
||||
|
||||
$items = array('user_id', 'password', 'user_name', 'nick_name', 'email_address', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark');
|
||||
$items = array('user_id', 'email_address', 'phone_number', 'password', 'user_name', 'nick_name', 'homepage', 'blog', 'birthday', 'signature', 'profile_image', 'image_name', 'image_mark');
|
||||
$mustRequireds = array('email_address', 'nick_name', 'password');
|
||||
$orgRequireds = array('email_address', 'password', 'user_id', 'nick_name', 'user_name');
|
||||
$orgUse = array('email_address', 'password', 'user_id', 'nick_name', 'user_name', 'homepage', 'blog', 'birthday');
|
||||
|
|
@ -504,7 +548,7 @@ class memberAdminController extends member
|
|||
$signupItem->required = in_array($key, $orgRequireds);
|
||||
$signupItem->isUse = ($config->{$key} == 'Y') || in_array($key, $orgUse);
|
||||
$signupItem->isPublic = ($signupItem->isUse) ? 'Y' : 'N';
|
||||
if(in_array($key, array('find_account_question', 'password', 'email_address')))
|
||||
if(in_array($key, array('find_account_question', 'password', 'email_address', 'phone_number')))
|
||||
{
|
||||
$signupItem->isPublic = 'N';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ class memberAdminView extends member
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context::set('total_count', $output->total_count);
|
||||
Context::set('total_page', $output->total_page);
|
||||
Context::set('page', $output->page);
|
||||
|
|
@ -228,6 +229,14 @@ class memberAdminView extends member
|
|||
$managedEmailHost = $oMemberModel->getManagedEmailHosts();
|
||||
Context::set('managedEmailHost', $managedEmailHost);
|
||||
$oSecurity->encodeHTML('managedEmailHost..email_host');
|
||||
|
||||
// Get country calling code list
|
||||
$country_list = Rhymix\Framework\i18n::listCountries(Context::get('lang_type') === 'ko' ? Rhymix\Framework\i18n::SORT_NAME_KOREAN : Rhymix\Framework\i18n::SORT_NAME_ENGLISH);
|
||||
Context::set('country_list', $country_list);
|
||||
if(!$config->phone_number_default_country && Context::get('lang_type') === 'ko')
|
||||
{
|
||||
$config->phone_number_default_country = '82';
|
||||
}
|
||||
|
||||
$this->setTemplateFile('signup_config');
|
||||
}
|
||||
|
|
@ -470,7 +479,7 @@ class memberAdminView extends member
|
|||
$formTag->title = ($formInfo->isDefaultForm) ? $lang->{$formInfo->name} : $formInfo->title;
|
||||
if($isAdmin)
|
||||
{
|
||||
if($formInfo->mustRequired) $formTag->title = '<em style="color:red">*</em> '.$formTag->title;
|
||||
if($formInfo->mustRequired || $formInfo->required) $formTag->title = '<em style="color:red">*</em> '.$formTag->title;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -539,6 +548,34 @@ class memberAdminView extends member
|
|||
$formTag->type = 'email';
|
||||
$inputTag = '<input type="email" name="email_address" id="email_address" value="'.$memberInfo['email_address'].'" />';
|
||||
}
|
||||
else if($formInfo->name == 'phone_number')
|
||||
{
|
||||
$formTag->type = 'phone';
|
||||
if($member_config->phone_number_hide_country !== 'Y')
|
||||
{
|
||||
$inputTag = '<select name="phone_country" id="phone_country" class="phone_country">';
|
||||
$country_list = Rhymix\Framework\i18n::listCountries(Context::get('lang_type') === 'ko' ? Rhymix\Framework\i18n::SORT_NAME_KOREAN : Rhymix\Framework\i18n::SORT_NAME_ENGLISH);
|
||||
$match_country = $memberInfo['phone_country'];
|
||||
if(!$match_country && $member_config->phone_number_default_country)
|
||||
{
|
||||
$match_country = $member_config->phone_number_default_country;
|
||||
}
|
||||
if(!$match_country && Context::get('lang_type') === 'ko')
|
||||
{
|
||||
$match_country = '82';
|
||||
}
|
||||
foreach($country_list as $country)
|
||||
{
|
||||
if($country->calling_code)
|
||||
{
|
||||
$inputTag .= '<option value="' . $country->calling_code . '"' . (str_replace('-', '', $country->calling_code) === $match_country ? ' selected="selected"' : '') . '>';
|
||||
$inputTag .= escape(Context::get('lang_type') === 'ko' ? $country->name_korean : $country->name_english) . ' (+' . $country->calling_code . ')</option>';
|
||||
}
|
||||
}
|
||||
$inputTag .= '</select>' . "\n";
|
||||
}
|
||||
$inputTag .= '<input type="tel" name="phone_number" id="phone_number" class="phone_number" value="'.($match_country == '82' ? Rhymix\Framework\Korea::formatPhoneNumber($memberInfo['phone_number']) : $memberInfo['phone_number']).'" />';
|
||||
}
|
||||
else if($formInfo->name == 'homepage')
|
||||
{
|
||||
$formTag->type = 'url';
|
||||
|
|
|
|||
|
|
@ -200,6 +200,15 @@ class member extends ModuleObject {
|
|||
if(!$oDB->isColumnExists("member", "find_account_question")) return true;
|
||||
if(!$oDB->isColumnExists("member", "find_account_answer")) return true;
|
||||
|
||||
// Add columns for phone number
|
||||
if(!$oDB->isColumnExists("member", "phone_number")) return true;
|
||||
if(!$oDB->isIndexExists("member","idx_phone_number")) return true;
|
||||
if(!$oDB->isColumnExists("member", "phone_country")) return true;
|
||||
if(!$oDB->isIndexExists("member","idx_phone_country")) return true;
|
||||
if(!$oDB->isColumnExists("member", "phone_type")) return true;
|
||||
if(!$oDB->isIndexExists("member","idx_phone_type")) return true;
|
||||
|
||||
// Add column for list order
|
||||
if(!$oDB->isColumnExists("member", "list_order")) return true;
|
||||
if(!$oDB->isIndexExists("member","idx_list_order")) return true;
|
||||
|
||||
|
|
@ -209,10 +218,11 @@ class member extends ModuleObject {
|
|||
// Check scrap folder table
|
||||
if(!$oDB->isColumnExists("member_scrap", "folder_srl")) return true;
|
||||
|
||||
// Check signup form
|
||||
$oModuleModel = getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
// check signup form ordering info
|
||||
if(!$config->signupForm || !is_array($config->signupForm)) return true;
|
||||
$phone_found = false;
|
||||
foreach($config->signupForm as $signupItem)
|
||||
{
|
||||
if($signupItem->name === 'find_account_question')
|
||||
|
|
@ -223,12 +233,23 @@ class member extends ModuleObject {
|
|||
{
|
||||
return true;
|
||||
}
|
||||
if($signupItem->name === 'phone_number')
|
||||
{
|
||||
$phone_found = true;
|
||||
}
|
||||
}
|
||||
if(!$phone_found)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check agreements
|
||||
if(!$config->agreements)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check skin
|
||||
if($config->skin)
|
||||
{
|
||||
$config_parse = explode('.', $config->skin);
|
||||
|
|
@ -324,7 +345,34 @@ class member extends ModuleObject {
|
|||
{
|
||||
$oDB->addColumn("member", "find_account_answer", "varchar", 250);
|
||||
}
|
||||
|
||||
// Add columns for phone number
|
||||
if(!$oDB->isColumnExists("member", "phone_number"))
|
||||
{
|
||||
$oDB->addColumn("member", "phone_number", "varchar", 80, null, false, 'email_host');
|
||||
}
|
||||
if(!$oDB->isColumnExists("member", "phone_country"))
|
||||
{
|
||||
$oDB->addColumn("member", "phone_country", "varchar", 10, null, false, 'phone_number');
|
||||
}
|
||||
if(!$oDB->isColumnExists("member", "phone_type"))
|
||||
{
|
||||
$oDB->addColumn("member", "phone_type", "varchar", 10, null, false, 'phone_country');
|
||||
}
|
||||
if(!$oDB->isIndexExists("member","idx_phone_number"))
|
||||
{
|
||||
$oDB->addIndex("member","idx_phone_number", array("phone_number"));
|
||||
}
|
||||
if(!$oDB->isIndexExists("member","idx_phone_country"))
|
||||
{
|
||||
$oDB->addIndex("member","idx_phone_country", array("phone_country"));
|
||||
}
|
||||
if(!$oDB->isIndexExists("member","idx_phone_type"))
|
||||
{
|
||||
$oDB->addIndex("member","idx_phone_type", array("phone_type"));
|
||||
}
|
||||
|
||||
// Add column for list order
|
||||
if(!$oDB->isColumnExists("member", "list_order"))
|
||||
{
|
||||
$oDB->addColumn("member", "list_order", "number", 11);
|
||||
|
|
@ -353,40 +401,86 @@ class member extends ModuleObject {
|
|||
$oDB->addIndex("member_scrap","idx_folder_srl", array("folder_srl"));
|
||||
}
|
||||
|
||||
// Check signup form
|
||||
$oModuleModel = getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('member');
|
||||
$oModuleController = getController('module');
|
||||
|
||||
$oMemberAdminController = getAdminController('member');
|
||||
// check signup form ordering info
|
||||
if(!$config->identifier)
|
||||
{
|
||||
$config->identifier = 'email_address';
|
||||
}
|
||||
if(!$config->signupForm || !is_array($config->signupForm))
|
||||
{
|
||||
$config->identifier = 'user_id';
|
||||
$config->signupForm = $oMemberAdminController->createSignupForm($config->identifier);
|
||||
$config->signupForm = $oMemberAdminController->createSignupForm($config);
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
}
|
||||
foreach($config->signupForm as $signupItem)
|
||||
$changed = false;
|
||||
$phone_number_found = false;
|
||||
foreach($config->signupForm as $no => $signupItem)
|
||||
{
|
||||
if($signupItem->name === 'find_account_question')
|
||||
{
|
||||
$config->identifier = $config->identifier ?: 'user_id';
|
||||
$config->signupForm = $oMemberAdminController->createSignupForm($config->identifier);
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
unset($config->signupForm[$no]);
|
||||
$config->signupForm = array_values($config->signupForm);
|
||||
$changed = true;
|
||||
continue;
|
||||
}
|
||||
if($signupItem->name === 'email_address' && $signupItem->isPublic !== 'N')
|
||||
{
|
||||
$signupItem->isPublic = 'N';
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
$changed = true;
|
||||
continue;
|
||||
}
|
||||
if($signupItem->name === 'phone_number')
|
||||
{
|
||||
$phone_number_found = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// Insert phone number after email address
|
||||
if(!$phone_found)
|
||||
{
|
||||
$newForm = array();
|
||||
foreach($config->signupForm as $signupItem)
|
||||
{
|
||||
$newForm[] = $signupItem;
|
||||
if($signupItem->name === 'email_address')
|
||||
{
|
||||
$newItem = new stdClass;
|
||||
$newItem->isDefaultForm = true;
|
||||
$newItem->name = $newItem->title = 'phone_number';
|
||||
$newItem->mustRequired = false;
|
||||
$newItem->imageType = false;
|
||||
$newItem->required = false;
|
||||
$newItem->isUse = false;
|
||||
$newItem->isPublic = 'N';
|
||||
$newForm[] = $newItem;
|
||||
}
|
||||
}
|
||||
$config->signupForm = $newForm;
|
||||
$changed = true;
|
||||
}
|
||||
|
||||
// Check agreements
|
||||
if(!$config->agreements)
|
||||
{
|
||||
$config = memberModel::getMemberConfig();
|
||||
$config->identifier = $config->identifier ?: 'user_id';
|
||||
$config->signupForm = $oMemberAdminController->createSignupForm($config->identifier);
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
$agreement = new stdClass;
|
||||
$agreement->title = lang('agreement');
|
||||
$agreement->content = $config->agreement;
|
||||
$agreement->use_editor = 'Y';
|
||||
$agreement->type = 'required';
|
||||
$config->agreements[] = $agreement;
|
||||
$changed = true;
|
||||
}
|
||||
|
||||
// Save updated config
|
||||
if($changed)
|
||||
{
|
||||
$output = $oModuleController->updateModuleConfig('member', $config);
|
||||
}
|
||||
|
||||
// Check skin
|
||||
if($config->skin)
|
||||
{
|
||||
$config_parse = explode('.', $config->skin);
|
||||
|
|
|
|||
|
|
@ -617,11 +617,14 @@ class memberController extends member
|
|||
foreach($getVars as $val)
|
||||
{
|
||||
$args->{$val} = Context::get($val);
|
||||
|
||||
if($val == 'birthday')
|
||||
if ($val === 'birthday')
|
||||
{
|
||||
$args->birthday_ui = Context::get('birthday_ui');
|
||||
}
|
||||
if ($val === 'phone_number')
|
||||
{
|
||||
$args->phone_country = preg_replace('/[^0-9]/', '', Context::get('phone_country'));
|
||||
}
|
||||
}
|
||||
|
||||
// mobile input date format can be different
|
||||
|
|
@ -729,14 +732,7 @@ class memberController extends member
|
|||
// Log-in
|
||||
if($config->enable_confirm != 'Y')
|
||||
{
|
||||
if($config->identifier == 'email_address')
|
||||
{
|
||||
$output = $this->doLogin($args->email_address);
|
||||
}
|
||||
else
|
||||
{
|
||||
$output = $this->doLogin($args->user_id);
|
||||
}
|
||||
$output = $this->doLogin($args->{$config->identifier});
|
||||
if(!$output->toBool()) {
|
||||
if($output->error == -9)
|
||||
$output->error = -11;
|
||||
|
|
@ -863,11 +859,14 @@ class memberController extends member
|
|||
foreach($getVars as $val)
|
||||
{
|
||||
$args->{$val} = Context::get($val);
|
||||
|
||||
if($val == 'birthday')
|
||||
if($val === 'birthday')
|
||||
{
|
||||
$args->birthday_ui = Context::get('birthday_ui');
|
||||
}
|
||||
if ($val === 'phone_number')
|
||||
{
|
||||
$args->phone_country = preg_replace('/[^0-9-]/', '', Context::get('phone_country'));
|
||||
}
|
||||
}
|
||||
|
||||
// Login Information
|
||||
|
|
@ -2132,20 +2131,54 @@ class memberController extends member
|
|||
$args->ipaddress = $_SERVER['REMOTE_ADDR'];
|
||||
|
||||
// check identifier
|
||||
if($config->identifier == 'email_address' || strpos($user_id, '@') !== false)
|
||||
if((!$config->identifiers || in_array('email_address', $config->identifiers)) && strpos($user_id, '@') !== false)
|
||||
{
|
||||
// Get user_id information
|
||||
$member_info = $oMemberModel->getMemberInfoByEmailAddress($user_id);
|
||||
// Set an invalid user if no value returned
|
||||
if(!$user_id || strtolower($member_info->email_address) != strtolower($user_id)) return $this->recordLoginError(-1, 'invalid_email_address');
|
||||
if(!$user_id || strtolower($member_info->email_address) !== strtolower($user_id))
|
||||
{
|
||||
return $this->recordLoginError(-1, 'invalid_email_address');
|
||||
}
|
||||
|
||||
}
|
||||
elseif($config->identifiers && in_array('phone_number', $config->identifiers) && strpos($user_id, '@') === false)
|
||||
{
|
||||
if(preg_match('/^\+([0-9-]+)\.([0-9.-]+)$/', $user_id, $matches))
|
||||
{
|
||||
$user_id = $matches[2];
|
||||
$phone_country = $matches[1];
|
||||
if($config->phone_number_hide_country === 'Y')
|
||||
{
|
||||
$phone_country = $config->phone_number_default_country;
|
||||
}
|
||||
}
|
||||
elseif($config->phone_number_default_country)
|
||||
{
|
||||
$phone_country = $config->phone_number_default_country;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $this->recordLoginError(-1, 'invalid_user_id');
|
||||
}
|
||||
|
||||
$user_id = preg_replace('/[^0-9]/', '', $user_id);
|
||||
$phone_country = preg_replace('/[^0-9]/', '', $phone_country);
|
||||
$member_info = $oMemberModel->getMemberInfoByPhoneNumber($user_id, $phone_country);
|
||||
if(!$user_id || strtolower($member_info->phone_number) !== $user_id)
|
||||
{
|
||||
return $this->recordLoginError(-1, 'invalid_user_id');
|
||||
}
|
||||
}
|
||||
elseif(!$config->identifiers || in_array('user_id', $config->identifiers))
|
||||
{
|
||||
$member_info = $oMemberModel->getMemberInfoByUserID($user_id);
|
||||
if(!$user_id || strtolower($member_info->user_id) !== strtolower($user_id))
|
||||
{
|
||||
return $this->recordLoginError(-1, 'invalid_user_id');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Get user_id information
|
||||
$member_info = $oMemberModel->getMemberInfoByUserID($user_id);
|
||||
// Set an invalid user if no value returned
|
||||
if(!$user_id || strtolower($member_info->user_id) != strtolower($user_id)) return $this->recordLoginError(-1, 'invalid_user_id');
|
||||
return $this->recordLoginError(-1, 'invalid_user_id');
|
||||
}
|
||||
|
||||
$output = executeQuery('member.getLoginCountByIp', $args);
|
||||
|
|
@ -2525,6 +2558,29 @@ class memberController extends member
|
|||
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
|
||||
return new BaseObject(-1, $message);
|
||||
}
|
||||
|
||||
// Format phone number
|
||||
if (strval($args->phone_number) !== '')
|
||||
{
|
||||
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
|
||||
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
|
||||
$args->phone_type = '';
|
||||
if ($config->phone_number_hide_country === 'Y' || (!$args->phone_country && $config->phone_number_default_country))
|
||||
{
|
||||
$args->phone_country = $config->phone_number_default_country;
|
||||
}
|
||||
$args->phone_country = str_replace('-', '', $args->phone_country);
|
||||
if ($args->phone_country == '82' && !Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_phone_number');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->phone_country = '';
|
||||
$args->phone_number = '';
|
||||
$args->phone_type = '';
|
||||
}
|
||||
|
||||
// Check if email address is duplicate
|
||||
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address);
|
||||
|
|
@ -2533,6 +2589,16 @@ class memberController extends member
|
|||
return new BaseObject(-1, 'msg_exists_email_address');
|
||||
}
|
||||
|
||||
// Check if phone number is duplicate
|
||||
if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
|
||||
{
|
||||
$member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
|
||||
if($member_srl)
|
||||
{
|
||||
return new BaseObject(-1, 'msg_exists_phone_number');
|
||||
}
|
||||
}
|
||||
|
||||
// Insert data into the DB
|
||||
$args->list_order = -1 * $args->member_srl;
|
||||
|
||||
|
|
@ -2715,6 +2781,29 @@ class memberController extends member
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Format phone number
|
||||
if (strval($args->phone_number) !== '')
|
||||
{
|
||||
$args->phone_country = trim(preg_replace('/[^0-9-]/', '', $args->phone_country), '-');
|
||||
$args->phone_number = preg_replace('/[^0-9]/', '', $args->phone_number);
|
||||
$args->phone_type = '';
|
||||
if ($config->phone_number_hide_country === 'Y' || (!$args->phone_country && $config->phone_number_default_country))
|
||||
{
|
||||
$args->phone_country = $config->phone_number_default_country;
|
||||
}
|
||||
$args->phone_country = str_replace('-', '', $args->phone_country);
|
||||
if ($args->phone_country == '82' && !Rhymix\Framework\Korea::isValidPhoneNumber($args->phone_number))
|
||||
{
|
||||
return new BaseObject(-1, 'msg_invalid_phone_number');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$args->phone_country = '';
|
||||
$args->phone_number = '';
|
||||
$args->phone_type = '';
|
||||
}
|
||||
|
||||
// Check managed Email Host
|
||||
if($logged_info->is_admin !== 'Y' && $logged_info->email_address !== $args->email_address && $oMemberModel->isDeniedEmailHost($args->email_address))
|
||||
|
|
@ -2752,6 +2841,16 @@ class memberController extends member
|
|||
$args->user_id = $orgMemberInfo->user_id;
|
||||
}
|
||||
|
||||
// Check if phone number is duplicate
|
||||
if ($config->phone_number_allow_duplicate !== 'Y' && $args->phone_number)
|
||||
{
|
||||
$member_srl = $oMemberModel->getMemberSrlByPhoneNumber($args->phone_number, $args->phone_country);
|
||||
if ($member_srl && $args->member_srl != $member_srl)
|
||||
{
|
||||
return new BaseObject(-1, 'msg_exists_phone_number');
|
||||
}
|
||||
}
|
||||
|
||||
// Check if ID is prohibited
|
||||
if($logged_info->is_admin !== 'Y' && $args->user_id && $oMemberModel->isDeniedID($args->user_id))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -298,6 +298,24 @@ class memberModel extends member
|
|||
return $member_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return member information with phone number
|
||||
*/
|
||||
function getMemberInfoByPhoneNumber($phone_number, $phone_country = null)
|
||||
{
|
||||
if(!$phone_number) return;
|
||||
|
||||
$args = new stdClass();
|
||||
$args->phone_number = $phone_number;
|
||||
$args->phone_country = $phone_country;
|
||||
$output = executeQuery('member.getMemberInfoByPhoneNumber', $args);
|
||||
if(!$output->toBool()) return $output;
|
||||
if(!$output->data) return;
|
||||
|
||||
$member_info = $this->arrangeMemberInfo($output->data);
|
||||
return $member_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return member information with member_srl
|
||||
*/
|
||||
|
|
@ -435,6 +453,18 @@ class memberModel extends member
|
|||
return $output->data->member_srl;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get member_srl corresponding to phone number
|
||||
*/
|
||||
function getMemberSrlByPhoneNumber($phone_number, $phone_country = null)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->phone_number = $phone_number;
|
||||
$args->phone_country = $phone_country;
|
||||
$output = executeQueryArray('member.getMemberSrl', $args);
|
||||
return count($output->data) ? array_first($output->data)->member_srl : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get member_srl corresponding to nickname
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -150,6 +150,17 @@ class memberView extends member
|
|||
{
|
||||
$item->value = zdate($item->value, 'Y-m-d');
|
||||
}
|
||||
elseif($formInfo->name == 'phone_number' && $memberInfo->phone_number)
|
||||
{
|
||||
if($memberInfo->phone_country == '82')
|
||||
{
|
||||
$item->value = Rhymix\Framework\Korea::formatPhoneNumber($item->value);
|
||||
}
|
||||
if($memberConfig->phone_number_hide_country !== 'Y')
|
||||
{
|
||||
$item->value = '(+' . $memberInfo->phone_country . ') ' . $item->value;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
12
modules/member/queries/getMemberInfoByPhoneNumber.xml
Normal file
12
modules/member/queries/getMemberInfoByPhoneNumber.xml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<query id="getMemberInfoByPhoneNumber" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="phone_number" var="phone_number" notnull="notnull" />
|
||||
<condition operation="equal" column="phone_country" var="phone_country" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -8,6 +8,8 @@
|
|||
<conditions>
|
||||
<condition operation="equal" column="user_id" var="user_id" pipe="and" />
|
||||
<condition operation="equal" column="email_address" var="email_address" pipe="and" />
|
||||
<condition operation="equal" column="phone_number" var="phone_number" pipe="and" />
|
||||
<condition operation="equal" column="phone_country" var="phone_country" pipe="and" />
|
||||
<condition operation="equal" column="nick_name" var="nick_name" pipe="and" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
|
|||
|
|
@ -5,10 +5,13 @@
|
|||
<columns>
|
||||
<column name="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||
<column name="user_id" var="user_id" filter="userid" notnull="notnull" />
|
||||
<column name="email_address" var="email_address" filter="email" notnull="notnull" />
|
||||
<column name="password" var="password" notnull="notnull" />
|
||||
<column name="email_address" var="email_address" filter="email" notnull="notnull" />
|
||||
<column name="email_id" var="email_id" notnull="notnull" />
|
||||
<column name="email_host" var="email_host" notnull="notnull" />
|
||||
<column name="phone_number" var="phone_number" />
|
||||
<column name="phone_country" var="phone_country" />
|
||||
<column name="phone_type" var="phone_type" />
|
||||
<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" />
|
||||
|
|
|
|||
|
|
@ -7,9 +7,12 @@
|
|||
<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="user_id" var="user_id" notnull="notnull" />
|
||||
<column name="email_address" var="email_address" notnull="notnull"/>
|
||||
<column name="email_address" var="email_address" notnull="notnull" />
|
||||
<column name="email_id" var="email_id" />
|
||||
<column name="email_host" var="email_host" />
|
||||
<column name="phone_number" var="phone_number" />
|
||||
<column name="phone_country" var="phone_country" />
|
||||
<column name="phone_type" var="phone_type" />
|
||||
<column name="find_account_question" var="find_account_question" />
|
||||
<column name="find_account_answer" var="find_account_answer" default="" />
|
||||
<column name="homepage" var="homepage" default="" />
|
||||
|
|
|
|||
13
modules/member/queries/updateMemberPhoneNumber.xml
Normal file
13
modules/member/queries/updateMemberPhoneNumber.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<query id="updateMemberPhoneNumber" action="update">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="phone_number" var="phone_number" />
|
||||
<column name="phone_country" var="phone_country" />
|
||||
<column name="phone_type" var="phone_type" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member_srl" var="member_srl" notnull="notnull" filter="number" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -1,10 +1,13 @@
|
|||
<table name="member">
|
||||
<column name="member_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" />
|
||||
<column name="user_id" type="varchar" size="80" notnull="notnull" unique="unique_user_id" />
|
||||
<column name="email_address" type="varchar" size="250" notnull="notnull" unique="unique_email_address" />
|
||||
<column name="password" type="varchar" size="60" notnull="notnull" />
|
||||
<column name="email_address" type="varchar" size="80" notnull="notnull" unique="unique_email_address" />
|
||||
<column name="email_id" type="varchar" size="80" notnull="notnull" />
|
||||
<column name="email_host" type="varchar" size="160" index="idx_email_host" />
|
||||
<column name="email_host" type="varchar" size="80" index="idx_email_host" />
|
||||
<column name="phone_number" type="varchar" size="80" index="idx_phone_number" />
|
||||
<column name="phone_country" type="varchar" size="10" index="idx_phone_country" />
|
||||
<column name="phone_type" type="varchar" size="10" index="idx_phone_type" />
|
||||
<column name="user_name" type="varchar" size="40" notnull="notnull" />
|
||||
<column name="nick_name" type="varchar" size="40" notnull="notnull" index="idx_nick_name" />
|
||||
<column name="find_account_question" type="number" size="11" />
|
||||
|
|
|
|||
|
|
@ -66,19 +66,18 @@ jQuery(function($){
|
|||
.find(':radio, [type="number"]')
|
||||
.removeAttr('disabled')
|
||||
.end()
|
||||
.find(':radio[value=option]').attr('checked', 'checked')
|
||||
.find(':radio.item_optional').prop('checked', true)
|
||||
.end()
|
||||
.prev('td')
|
||||
.find(':input[value=Y]').removeAttr('disabled').attr('checked', 'checked');
|
||||
|
||||
.find(':input[value=Y]').removeAttr('disabled').prop('checked', true);
|
||||
} else {
|
||||
$i.parent('td').next('td').next('td')
|
||||
.find('>._subItem').hide().end()
|
||||
.find(':radio, [type="number"]').attr('disabled','disabled').removeAttr('checked')
|
||||
.find(':radio.item_required, :radio.item_optional, [type="number"]').attr('disabled','disabled').prop('checked', false)
|
||||
.next('label').css('fontWeight','normal').end()
|
||||
.end()
|
||||
.prev('td')
|
||||
.find(':input[value=Y]').removeAttr('checked').attr('disabled', 'disabled');
|
||||
.find(':input[value=Y]').attr('disabled', 'disabled').prop('checked', false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -218,35 +217,6 @@ jQuery(function($){
|
|||
jQuery.exec_json('member.procMemberAdminUpdateDeniedNickName', {'nick_name': ids}, on_complete);
|
||||
|
||||
});
|
||||
|
||||
$('input[name=identifier]').change(function(){
|
||||
var $checkedTR = $('input[name=identifier]:checked').closest('tr');
|
||||
var $notCheckedTR = $('input[name=identifier]:not(:checked)').closest('tr');
|
||||
var name, notName;
|
||||
if (!$checkedTR.hasClass('sticky')){
|
||||
name = $checkedTR.find('input[name="list_order[]"]').val();
|
||||
if (!$checkedTR.find('input[type=hidden][name="usable_list[]"]').length) $('<input type="hidden" name="usable_list[]" value="'+name+'" />').insertBefore($checkedTR);
|
||||
if (!$checkedTR.find('input[type=hidden][name='+name+']').length) $('<input type="hidden" name="'+name+'" value="required" />').insertBefore($checkedTR);
|
||||
$checkedTR.find('th').html('<span class="_title" style="padding-left:20px" >'+$checkedTR.find('th ._title').html()+'</span>');
|
||||
$checkedTR.find('input[type=checkbox][name="usable_list[]"]').attr('checked', 'checked').attr('disabled', 'disabled');
|
||||
$checkedTR.find('input[type=radio][name='+name+'][value=required]').attr('checked', 'checked').attr('disabled', 'disabled');
|
||||
$checkedTR.find('input[type=radio][name='+name+'][value=option]').removeAttr('checked').attr('disabled', 'disabled');
|
||||
$checkedTR.addClass('sticky');
|
||||
$checkedTR.parent().prepend($checkedTR);
|
||||
|
||||
notName = $notCheckedTR.find('input[name="list_order[]"]').val();
|
||||
if (notName == 'user_id'){
|
||||
if ($notCheckedTR.find('input[type=hidden][name="usable_list[]"]').length) $notCheckedTR.find('input[type=hidden][name="usable_list[]"]').remove();
|
||||
if ($notCheckedTR.find('input[type=hidden][name='+name+']').length) $notCheckedTR.find('input[type=hidden][name='+name+']').remove();
|
||||
$notCheckedTR.find('input[type=checkbox][name="usable_list[]"]').removeAttr('disabled');
|
||||
$notCheckedTR.find('input[type=radio][name='+notName+']').removeAttr('disabled');
|
||||
}
|
||||
$notCheckedTR.find('th').html('<div class="wrap"><button type="button" class="dragBtn">Move to</button><span class="_title" >'+$notCheckedTR.find('th ._title').html()+'</span></div>');
|
||||
$notCheckedTR.removeClass('sticky');
|
||||
|
||||
// add sticky class
|
||||
}
|
||||
});
|
||||
|
||||
$('#userDefine').submit(function(e) {
|
||||
var id_list = $(this).find('input[name=join_form_id_list]').val();
|
||||
|
|
|
|||
|
|
@ -4,61 +4,60 @@
|
|||
<input type="hidden" name="act" value="procMemberAdminInsertLoginConfig" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin', 'act', $act)}" />
|
||||
<input type="hidden" name="xe_validator_id" value="modules/member/tpl/1" />
|
||||
<div class="x_control-group">
|
||||
<p class="x_control-label">{$lang->identifier}</p>
|
||||
<div class="x_controls">
|
||||
<label class="x_inline" for="identifiers_user_id">
|
||||
<input type="checkbox" name="identifiers[]" id="identifiers_user_id" value="user_id" checked="checked"|cond="$config->identifier === 'user_id' || in_array('user_id', $config->identifiers)" />
|
||||
{$lang->user_id}
|
||||
</label>
|
||||
<label class="x_inline" for="identifiers_email_address">
|
||||
<input type="checkbox" name="identifiers[]" id="identifiers_email_address" value="email_address" checked="checked"|cond="$config->identifier === 'email_address' || in_array('email_address', $config->identifiers)" />
|
||||
{$lang->email_address}
|
||||
</label>
|
||||
<label class="x_inline" for="identifiers_phone_number">
|
||||
<input type="checkbox" name="identifiers[]" id="identifiers_phone_number" value="phone_number" checked="checked"|cond="$config->identifier === 'phone_number' || in_array('phone_number', $config->identifiers)" />
|
||||
{$lang->phone_number}
|
||||
</label>
|
||||
<p class="x_help-block">{$lang->about_identifier}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="change_password_date">{$lang->change_password_date}</label>
|
||||
<div class="x_controls">
|
||||
<input type="number" min="0" id="change_password_date" name="change_password_date" value="{$config->change_password_date}" /> {$lang->unit_day}
|
||||
<p class="x_help-inline">{$lang->about_change_password_date}</p>
|
||||
<p class="x_help-block">{$lang->about_change_password_date}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<p class="x_control-label">{$lang->enable_login_fail_report}</p>
|
||||
<div class="x_controls">
|
||||
<label class="x_inline" for="enable_login_fail_report_yes"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_yes" value="Y" checked="checked"|cond="$config->enable_login_fail_report != 'N'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline" for="enable_login_fail_report_no"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_no" value="N" checked="checked"|cond="$config->enable_login_fail_report == 'N'" /> {$lang->cmd_no}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group _limit" style="display:none">
|
||||
<label class="x_control-label" for="max_error_count">{$lang->login_trial_limit1}</label>
|
||||
<div class="x_controls">
|
||||
<input type="number" min="0" id="max_error_count" name="max_error_count" value="{$config->max_error_count}" /> {$lang->unit_count}
|
||||
<p class="x_help-block">{$lang->about_login_trial_limit1}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group _limit" style="display:none">
|
||||
<label class="x_control-label" for="max_error_count_time">{$lang->login_trial_limit2}</label>
|
||||
<div class="x_controls">
|
||||
<input type="number" min="0" id="max_error_count_time" name="max_error_count_time" value="{$config->max_error_count_time}" /> {$lang->unit_sec}
|
||||
<p class="x_help-block">{$lang->about_login_trial_limit2}</p>
|
||||
<p>
|
||||
<label class="x_inline" for="enable_login_fail_report_yes"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_yes" value="Y" checked="checked"|cond="$config->enable_login_fail_report != 'N'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline" for="enable_login_fail_report_no"><input type="radio" name="enable_login_fail_report" id="enable_login_fail_report_no" value="N" checked="checked"|cond="$config->enable_login_fail_report == 'N'" /> {$lang->cmd_no}</label>
|
||||
</p>
|
||||
<p>
|
||||
<input type="number" min="0" id="max_error_count" name="max_error_count" value="{$config->max_error_count}" /> {$lang->unit_count} /
|
||||
<input type="number" min="0" id="max_error_count_time" name="max_error_count_time" value="{$config->max_error_count_time}" /> {$lang->unit_sec}
|
||||
</p>
|
||||
<p class="x_help-block">{$lang->about_login_trial_limit}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="after_login_url">{$lang->after_login_url}</label>
|
||||
<div class="x_controls">
|
||||
<input type="url" id="after_login_url" name="after_login_url" value="{$config->after_login_url}" />
|
||||
<p class="x_help-inline">{$lang->about_after_login_url}</p>
|
||||
<p class="x_help-block">{$lang->about_after_login_url}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_control-group">
|
||||
<label class="x_control-label" for="after_logout_url">{$lang->after_logout_url}</label>
|
||||
<div class="x_controls">
|
||||
<input type="url" id="after_logout_url" name="after_logout_url" value="{$config->after_logout_url}" />
|
||||
<p class="x_help-inline">{$lang->about_after_logout_url}</p>
|
||||
<p class="x_help-block">{$lang->about_after_logout_url}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="x_clearfix btnArea">
|
||||
<span class="x_pull-right"><input class="x_btn x_btn-primary" type="submit" value="{$lang->cmd_save}" /></span>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
jQuery(function($){
|
||||
$('input[name="enable_login_fail_report"]').change(function(){
|
||||
var $limit = $(this).closest('.x_control-group').siblings('._limit');
|
||||
if($('#enable_login_fail_report_yes').is(':checked')){
|
||||
$limit.show();
|
||||
} else {
|
||||
$limit.hide();
|
||||
}
|
||||
}).change();
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -82,12 +82,6 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="nowr" style="text-align:center">{$lang->target}</th>
|
||||
<th scope="col" class="nowr" style="text-align:center">{$lang->identifier}
|
||||
[<a href="#helpDefault" data-toggle>?</a>]
|
||||
<div class="layer x_alert x_alert-info" id="helpDefault">
|
||||
<p>{$lang->about_identifier}</p>
|
||||
</div>
|
||||
</th>
|
||||
<th scope="col" class="nowr" style="text-align:center">{$lang->use}</th>
|
||||
<th scope="col" class="nowr" style="text-align:center">{$lang->public}
|
||||
[<a href="#helpPublic" data-toggle>?</a>]
|
||||
|
|
@ -102,49 +96,68 @@
|
|||
</thead>
|
||||
<tbody class="uDrag">
|
||||
{@ $disabled_list = array('find_account_question')}
|
||||
{@ $fixed_public_list = array('nick_name', 'password', 'email_address')}
|
||||
{@ $fixed_public_list = array('nick_name')}
|
||||
{@ $fixed_private_list = array('email_address', 'phone_number', 'password')}
|
||||
<!--@foreach($config->signupForm as $item)-->
|
||||
<!--@if(in_array($item->name, $disabled_list))-->
|
||||
<!--@elseif($item->isIdentifier)-->
|
||||
<tr class="sticky">
|
||||
<input type="hidden" name="list_order[]" value="{$item->name}" />
|
||||
<input type="hidden" name="usable_list[]" value="{$item->name}"/>
|
||||
<input type="hidden" name="{$item->name}" value="requierd"/>
|
||||
<th scope="row">
|
||||
<span class="_title" style="display:inline-block;white-space:pre-line;overflow:inherit;width:120px;text-overflow:ellipsis;padding-left:20px">{$item->title}</span>
|
||||
</th>
|
||||
<td style="text-align:center"><input type="radio" name="identifier" value="{$item->name}" checked="checked" /></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="usable_list[]" value="{$item->name}" title="{$lang->use}" checked="checked" disabled="disabled" /></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="is_{$item->name}_public" value="Y" checked="checked"|cond="$item->isPublic == 'Y'" disabled="disabled"|cond="in_array($item->name, $fixed_public_list) || !$item->isUse" /></td>
|
||||
<td class="nowr">
|
||||
<label for="{$item->name}_re" class="x_inline"><input type="radio" id="{$item->name}_re" name="{$item->name}" value="requierd" checked="checked" disabled="disabled" /> {$lang->cmd_required}</label>
|
||||
<label for="{$item->name}_op" class="x_inline"><input type="radio" id="{$item->name}_op" name="{$item->name}" value="option" disabled="disabled" /> {$lang->cmd_optional}</label>
|
||||
</td>
|
||||
<td class="desc"> </td>
|
||||
<td style="text-align:center"> </td>
|
||||
</tr>
|
||||
<!--@elseif($item->isDefaultForm)-->
|
||||
<tr class="_imageType"|cond="$item->imageType">
|
||||
<input type="hidden" name="list_order[]" value="{$item->name}" />
|
||||
<input type="hidden" name="usable_list[]" value="{$item->name}" cond="$item->mustRequired"/>
|
||||
<input type="hidden" name="{$item->name}" value="requierd" cond="$item->mustRequired"/>
|
||||
<input type="hidden" name="usable_list[]" value="{$item->name}" cond="$item->isIdentifier || $item->mustRequired"/>
|
||||
<input type="hidden" name="{$item->name}" value="required" cond="$item->isIdentifier || $item->mustRequired"/>
|
||||
<th scope="row">
|
||||
<div class="wrap">
|
||||
<button type="button" class="dragBtn">Move to</button>
|
||||
<span class="_title" style="display:inline-block;white-space:pre-line;overflow:inherit;width:120px;text-overflow:ellipsis" title="{$item->title}">{$item->title}</span>
|
||||
</div>
|
||||
</th>
|
||||
<td style="text-align:center"><input type="radio" name="identifier" value="{$item->name}" cond="$item->name== 'email_address' || $item->name=='user_id'" /></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="usable_list[]" value="{$item->name}" title="{$lang->use}" checked="checked"|cond="$item->mustRequired || $item->isUse" disabled="disabled"|cond="$item->mustRequired" /></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="is_{$item->name}_public" value="Y" checked="checked"|cond="$item->isPublic == 'Y'" disabled="disabled"|cond="in_array($item->name, $fixed_public_list) || !$item->isUse" /></td>
|
||||
<td style="text-align:center">
|
||||
<input type="checkbox" name="usable_list[]" value="{$item->name}" title="{$lang->use}" checked="checked"|cond="$item->isIdentifier || $item->mustRequired || $item->isUse" disabled="disabled"|cond="$item->isIdentifier || $item->mustRequired" />
|
||||
</td>
|
||||
<td style="text-align:center">
|
||||
<!--@if(!in_array($item->name, $fixed_private_list))-->
|
||||
<input type="checkbox" name="is_{$item->name}_public" value="Y" checked="checked"|cond="$item->isPublic == 'Y'" disabled="disabled"|cond="in_array($item->name, $fixed_public_list) || !$item->isUse" />
|
||||
<!--@endif-->
|
||||
</td>
|
||||
<td class="nowr">
|
||||
<label for="{$item->name}_re" class="x_inline"><input type="radio" id="{$item->name}_re" name="{$item->name}" value="required" checked="checked"|cond="$item->mustRequired || $item->required" disabled="disabled"|cond="$item->mustRequired || !$item->isUse" /> {$lang->cmd_required}</label>
|
||||
<label for="{$item->name}_op" class="x_inline"><input type="radio" id="{$item->name}_op" name="{$item->name}" value="option" checked="checked"|cond="!$item->mustRequired && ($item->isUse && !$item->required)" disabled="disabled"|cond="$item->mustRequired || !$item->isUse" /> {$lang->cmd_optional}</label>
|
||||
<label for="{$item->name}_re" class="x_inline"><input type="radio" id="{$item->name}_re" name="{$item->name}" class="item_required" value="required" checked="checked"|cond="$item->mustRequired || $item->required" disabled="disabled"|cond="!$item->isUse" /> {$lang->cmd_required}</label>
|
||||
<!--@if(!$item->mustRequired)-->
|
||||
<label for="{$item->name}_op" class="x_inline"><input type="radio" id="{$item->name}_op" name="{$item->name}" class="item_optional" value="option" checked="checked"|cond="!$item->mustRequired && ($item->isUse && !$item->required)" disabled="disabled"|cond="!$item->isUse" /> {$lang->cmd_optional}</label>
|
||||
<!--@endif-->
|
||||
|
||||
<div cond="$item->imageType" class="_subItem" style="display:none"|cond="!$item->isUse">
|
||||
<label for="{$item->name}_max_width">{$lang->cmd_image_max_width}: <input type="number" min="1" name="{$item->name}_max_width" id="{$item->name}_max_width" value="{$item->max_width}" /> px</label>
|
||||
<label for="{$item->name}_max_height">{$lang->cmd_image_max_height}: <input type="number" min="1" name="{$item->name}_max_height" id="{$item->name}_max_height" value="{$item->max_height}" /> px</label>
|
||||
<label for="{$item->name}_max_filesize">{$lang->allowed_filesize}: <input type="number" min="1" name="{$item->name}_max_filesize" id="{$item->name}_max_filesize" value="{$item->max_filesize}" /> KB</label>
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline" for="{$item->name}_max_width">{$lang->cmd_image_max_width}</label> <input type="number" min="1" name="{$item->name}_max_width" id="{$item->name}_max_width" value="{$item->max_width}" /> px
|
||||
</p>
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline" for="{$item->name}_max_height">{$lang->cmd_image_max_height}</label> <input type="number" min="1" name="{$item->name}_max_height" id="{$item->name}_max_height" value="{$item->max_height}" /> px
|
||||
</p>
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline" for="{$item->name}_max_filesize">{$lang->allowed_filesize}</label> <input type="number" min="1" name="{$item->name}_max_filesize" id="{$item->name}_max_filesize" value="{$item->max_filesize}" /> KB
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div cond="$item->name == 'phone_number'" class="_subItem" style="display:none"|cond="!$item->isUse">
|
||||
<label for="phone_number_default_country" class="x_inline">{$lang->phone_number_default_country}</label>
|
||||
<select id="phone_number_default_country" name="phone_number_default_country">
|
||||
<!--@foreach($country_list as $country_info)-->
|
||||
<!--@if($country_info->calling_code)-->
|
||||
<option value="{$country_info->calling_code}" selected="selected"|cond="$country_info->calling_code == $config->phone_number_default_country">
|
||||
{$lang_type === 'ko' ? $country_info->name_korean : $country_info->name_english} (+{$country_info->calling_code})
|
||||
</option>
|
||||
<!--@endif-->
|
||||
<!--@endforeach-->
|
||||
</select>
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline">{$lang->phone_number_hide_country}</label>
|
||||
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="Y" checked="checked"|cond="$config->phone_number_hide_country === 'Y'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline"><input type="radio" name="phone_number_hide_country" value="N" checked="checked"|cond="$config->phone_number_hide_country !== 'Y'" /> {$lang->cmd_no}</label>
|
||||
</p>
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline">{$lang->phone_number_allow_duplicate}</label>
|
||||
<label class="x_inline"><input type="radio" name="phone_number_allow_duplicate" value="Y" checked="checked"|cond="$config->phone_number_allow_duplicate === 'Y'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline"><input type="radio" name="phone_number_allow_duplicate" value="N" checked="checked"|cond="$config->phone_number_allow_duplicate !== 'Y'" /> {$lang->cmd_no}</label>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div cond="$item->name == 'signature'" class="_subItem" style="display:none;padding-top:5px"|cond="!$item->isUse">
|
||||
|
|
@ -154,14 +167,16 @@
|
|||
<!--@end-->
|
||||
</select>
|
||||
<select name="sel_editor_colorset" id="sel_editor_colorset" style="display:none"></select>
|
||||
<p class="x_help-block">{$lang->allow_html}
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline">{lang('allow_html')}</label>
|
||||
<label class="x_inline"><input type="radio" name="signature_html" id="signature_html_yes" value="Y" checked="checked"|cond="$config->signature_html != 'N'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline"><input type="radio" name="signature_html" id="signature_html_no" value="N" checked="checked"|cond="$config->signature_html == 'N'" /> {$lang->cmd_no}</label>
|
||||
<label class="x_inline" id="signature_html_retroact" title="{$lang->signature_html_retroact}" style="">
|
||||
<input type="checkbox" name="signature_html_retroact" value="Y" checked="checked"|cond="$config->signature_html_retroact == 'Y'" /> {$lang->retroactive_application}
|
||||
</label>
|
||||
</p>
|
||||
<p class="x_help-block">{lang('file.file_upload')}
|
||||
<p class="x_help-block">
|
||||
<label class="x_inline">{lang('file.file_upload')}</label>
|
||||
<label class="x_inline"><input type="radio" name="member_allow_fileupload" value="Y" checked="checked"|cond="$config->member_allow_fileupload == 'Y'" /> {$lang->cmd_yes}</label>
|
||||
<label class="x_inline"><input type="radio" name="member_allow_fileupload" value="N" checked="checked"|cond="$config->member_allow_fileupload != 'Y'" /> {$lang->cmd_no}</label>
|
||||
</p>
|
||||
|
|
@ -198,7 +213,6 @@
|
|||
<span class="_title" style="display:inline-block;white-space:pre-line;overflow:inherit;width:120px;text-overflow:ellipsis" title="{$item->title}">{$item->title}</span>
|
||||
</div>
|
||||
</th>
|
||||
<td></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="usable_list[]" value="{$item->name}" title="{$lang->use}" checked="checked"|cond="$item->isUse" /></td>
|
||||
<td style="text-align:center"><input type="checkbox" name="is_{$item->name}_public" value="Y" checked="checked"|cond="$item->isPublic == 'Y'" disabled="disabled"|cond="!$item->isUse" /></td>
|
||||
<td class="nowr">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue