#1343 Email hosts of members can be allowed or not.

Email hosts white list or black list can be managed through hostnames.

From
8fd5aeea2c
https://github.com/xpressengine/xe-core/issues/1343
This commit is contained in:
MinSoo Kim 2015-03-24 20:32:13 +09:00
parent 2260b30132
commit 7583bfd56f
12 changed files with 383 additions and 18 deletions

View file

@ -84,6 +84,7 @@
<action name="procMemberAdminDeleteMembers" type="controller" />
<action name="procMemberAdminInsertJoinForm" type="controller" ruleset="insertJoinForm" />
<action name="procMemberAdminUpdateJoinForm" type="controller" />
<action name="procMemberAdminUpdateManagedEmailHosts" type="controller" />
<action name="procMemberAdminDeleteJoinForm" type="controller" />
<action name="procMemberAdminUpdateDeniedNickName" type="controller" />
<action name="procMemberAdminInsertDeniedID" type="controller" ruleset="insertDeniedId" />

View file

@ -143,6 +143,22 @@
<value xml:lang="jp"><![CDATA[使用が禁止されたニックネームです。]]></value>
<value xml:lang="zh-CN"><![CDATA[被禁止的昵称。]]></value>
</item>
<item name="managed_email_host" type="array">
<item name="allowed">
<value xml:lang="ko"><![CDATA[%s 사이트 이메일 계정만 사용할 수 있습니다. (%s)]]></value>
<value xml:lang="en"><![CDATA[Only %s e-mail accounts are allowed. (%s)]]></value>
<value xml:lang="jp"><![CDATA[Only %s e-mail accounts are allowed. (%s)]]></value>
<value xml:lang="zh-CN"><![CDATA[Only %s e-mail accounts are allowed. (%s)]]></value>
<value xml:lang="zh-TW"><![CDATA[Only %s e-mail accounts are allowed. (%s)]]></value>
</item>
<item name="prohibited">
<value xml:lang="ko"><![CDATA[%s 사이트 이메일 계정은 사용할 수 없습니다. (%s)]]></value>
<value xml:lang="en"><![CDATA[E-mail accounts at %s are not allowed. (%s)]]></value>
<value xml:lang="jp"><![CDATA[E-mail accounts at %s are not allowed. (%s)]]></value>
<value xml:lang="zh-CN"><![CDATA[E-mail accounts at %s are not allowed. (%s)]]></value>
<value xml:lang="zh-TW"><![CDATA[E-mail accounts at %s are not allowed. (%s)]]></value>
</item>
</item>
<item name="null_user_id">
<value xml:lang="ko"><![CDATA[회원 아이디를 입력해주세요.]]></value>
<value xml:lang="en"><![CDATA[Please enter your ID.]]></value>
@ -514,7 +530,6 @@
<value xml:lang="en"><![CDATA[Description for Temporary Limit Date]]></value>
<value xml:lang="jp"><![CDATA[一時的な期限日の説明]]></value>
</item>
<item name="limit_date">
<value xml:lang="ko"><![CDATA[제한일]]></value>
<value xml:lang="en"><![CDATA[Limit Date]]></value>
@ -1094,6 +1109,18 @@
<value xml:lang="tr"><![CDATA[Yasaklanmış Kimlikler]]></value>
<value xml:lang="vi"><![CDATA[Tên sử dụng cấm đăng kí]]></value>
</item>
<item name="cmd_manage_email_host">
<value xml:lang="ko"><![CDATA[이메일 제공자 관리]]></value>
<value xml:lang="en"><![CDATA[E-mail provider check]]></value>
<value xml:lang="jp"><![CDATA[E-mail provider check]]></value>
<value xml:lang="zh-CN"><![CDATA[E-mail provider check]]></value>
<value xml:lang="zh-TW"><![CDATA[E-mail provider check]]></value>
<value xml:lang="fr"><![CDATA[E-mail provider check]]></value>
<value xml:lang="ru"><![CDATA[E-mail provider check]]></value>
<value xml:lang="es"><![CDATA[E-mail provider check]]></value>
<value xml:lang="tr"><![CDATA[E-mail provider check]]></value>
<value xml:lang="vi"><![CDATA[E-mail provider check]]></value>
</item>
<item name="cmd_manage_nick_name">
<value xml:lang="ko"><![CDATA[금지 닉네임 관리]]></value>
<value xml:lang="en"><![CDATA[Prohibited NickNames]]></value>
@ -1962,6 +1989,13 @@
<value xml:lang="tr"><![CDATA[Kayıt formunu gösterebilmeniz için, öğeleri etkinleştirdiğinizden emin olun]]></value>
<value xml:lang="vi"><![CDATA[Nếu chọn, thông tin này sẽ được hiển thị trong bảng đăng kí.]]></value>
</item>
<item name="about_emailhost_check">
<value xml:lang="ko"><![CDATA[입력한 호스트네임이 없으면, 이 기능을 사용하지 않습니다. 가입자의 이메일 주소 제공자를 설정할 수 있습니다.<br />특정 이메일 제공자(hostname, 예: naver.com, gmail.com)만 허용하거나, 특정 이메일 제공자의 사용을 제한할 수 있습니다.]]></value>
<value xml:lang="en"><![CDATA[Empty value will allow almost all email account providers.<br />You can set new member's e-mail address providers. You can allow or prohibit some e-mail hosts(eg.: naver.com, gmail.com).]]></value>
<value xml:lang="jp"><![CDATA[Empty value will allow almost all email account providers.<br />You can set new member's e-mail address providers. You can allow or prohibit some e-mail hosts(eg.: naver.com, gmail.com).]]></value>
<value xml:lang="zh-TW"><![CDATA[Empty value will allow almost all email account providers.<br />You can set new member's e-mail address providers. You can allow or prohibit some e-mail hosts(eg.: naver.com, gmail.com).]]></value>
<value xml:lang="zh-CN"><![CDATA[Empty value will allow almost all email account providers.<br />You can set new member's e-mail address providers. You can allow or prohibit some e-mail hosts(eg.: naver.com, gmail.com).]]></value>
</item>
<item name="about_form_description">
<value xml:lang="ko"><![CDATA[설명란에 입력을 하면 가입시 표시가 됩니다.]]></value>
<value xml:lang="en"><![CDATA[If you enter description in this form, it will be displayed on join form.]]></value>
@ -2469,6 +2503,20 @@
<value xml:lang="zh-TW"><![CDATA[向此會員發送通知信]]></value>
<value xml:lang="zh-CN"><![CDATA[给此会员发送短消息]]></value>
</item>
<item name="cmd_allowed">
<value xml:lang="ko"><![CDATA[허가]]></value>
<value xml:lang="en"><![CDATA[Allowed]]></value>
<value xml:lang="jp"><![CDATA[Allowed]]></value>
<value xml:lang="zh-TW"><![CDATA[Allowed]]></value>
<value xml:lang="zh-CN"><![CDATA[Allowed]]></value>
</item>
<item name="cmd_prohibited">
<value xml:lang="ko"><![CDATA[제한]]></value>
<value xml:lang="en"><![CDATA[Prohibited]]></value>
<value xml:lang="jp"><![CDATA[Prohibited]]></value>
<value xml:lang="zh-TW"><![CDATA[Prohibited]]></value>
<value xml:lang="zh-CN"><![CDATA[Prohibited]]></value>
</item>
<item name="cmd_required">
<value xml:lang="ko"><![CDATA[필수]]></value>
<value xml:lang="en"><![CDATA[Required]]></value>
@ -2525,6 +2573,13 @@
<value xml:lang="zh-TW"><![CDATA[換行區隔]]></value>
<value xml:lang="zh-CN"><![CDATA[用换行区分]]></value>
</item>
<item name="count_manage_email_host">
<value xml:lang="ko"><![CDATA[다음 <span class="_managededEmailHostCount">%s</span>개의 이메일 주소 제공자를 <span id="managededEmailHostType">%s</span> 합니다.]]></value>
<value xml:lang="en"><![CDATA[There are <span class="_managededEmailHostCount">%s</span> <span id="managededEmailHostType">%s</span> e-mail address providers below.]]></value>
<value xml:lang="jp"><![CDATA[There are <span class="_managededEmailHostCount">%s</span> <span id="managededEmailHostType">%s</span> e-mail address providers below.]]></value>
<value xml:lang="zh-TW"><![CDATA[There are <span class="_managededEmailHostCount">%s</span> <span id="managededEmailHostType">%s</span> e-mail address providers below.]]></value>
<value xml:lang="zh-CN"><![CDATA[There are <span class="_managededEmailHostCount">%s</span> <span id="managededEmailHostType">%s</span> e-mail address providers below.]]></value>
</item>
<item name="count_manage_id">
<value xml:lang="ko"><![CDATA[<span class="_deniedIDCount">%s</span>개의 금지 아이디가 있습니다.]]></value>
<value xml:lang="en"><![CDATA[There are <span class="_deniedIDCount">%s</span> prohibited ID.]]></value>
@ -2629,6 +2684,13 @@
<value xml:lang="zh-TW"><![CDATA[電子郵件]]></value>
<value xml:lang="zh-CN"><![CDATA[电子邮件]]></value>
</item>
<item name="add_managed_emailhost">
<value xml:lang="ko"><![CDATA[이메일 제공자 추가]]></value>
<value xml:lang="en"><![CDATA[Add E-mail Host]]></value>
<value xml:lang="jp"><![CDATA[Add E-mail Host]]></value>
<value xml:lang="zh-TW"><![CDATA[Add E-mail Host]]></value>
<value xml:lang="zh-CN"><![CDATA[Add E-mail Host]]></value>
</item>
<item name="add_prohibited_id">
<value xml:lang="ko"><![CDATA[금지 아이디 추가]]></value>
<value xml:lang="en"><![CDATA[Add prohibited id]]></value>
@ -2662,6 +2724,13 @@
<value xml:lang="jp"><![CDATA[追加するニックネームを入力してください。]]></value>
<value xml:lang="zh-CN"><![CDATA[请输入禁止昵称]]></value>
</item>
<item name="msg_null_managed_emailhost">
<value xml:lang="ko"><![CDATA[추가할 금지 이메일 주소 제공자를 입력해주세요. (예: naver.com)]]></value>
<value xml:lang="en"><![CDATA[Please enter email address providers to manage. (eg.: gmail.com)]]></value>
<value xml:lang="jp"><![CDATA[Please enter email address providers to manage. (eg.: gmail.com)]]></value>
<value xml:lang="zh-CN"><![CDATA[Please enter email address providers to manage. (eg.: gmail.com)]]></value>
<value xml:lang="zh-TW"><![CDATA[Please enter email address providers to manage. (eg.: gmail.com)]]></value>
</item>
<item name="identifier">
<value xml:lang="ko"><![CDATA[로그인 계정]]></value>
<value xml:lang="en"><![CDATA[Login Account]]></value>

View file

@ -208,6 +208,7 @@ class memberAdminController extends member
$args = Context::gets(
'limit_day',
'limit_day_description',
'emailhost_check',
'agreement',
'redirect_url',
'profile_image', 'profile_image_max_width', 'profile_image_max_height',
@ -221,6 +222,7 @@ class memberAdminController extends member
$all_args = Context::getRequestVars();
$args->limit_day = (int)$args->limit_day;
if($args->emailhost_check != 'allowed' && $args->emailhost_check != 'prohibited') $args->emailhost_check == 'allowed';
if(!trim(strip_tags($args->agreement)))
{
$agreement_file = _XE_PATH_.'files/member_extra_info/agreement_' . Context::get('lang_type') . '.txt';
@ -1016,6 +1018,44 @@ class memberAdminController extends member
$this->setRedirectUrl($returnUrl);
}
/**
* Add allowed or denied email hostnames
* @return void
*/
function procMemberAdminUpdateManagedEmailHosts()
{
$email_hosts = Context::get('email_hosts');
$mode = Context::get('mode');
$mode = $mode ? $mode : 'insert';
if($mode == 'delete')
{
$output = $this->deleteManagedEmailHost($email_hosts);
if(!$output->toBool())
{
return $output;
}
$msg_code = 'success_deleted';
$this->setMessage($msg_code);
}
else
{
$email_hosts = preg_replace('/([^a-z0-9\.\-\_\n]*)/i','',$email_hosts);
$email_hosts = array_unique(explode("\n",$email_hosts."\n"));
$success_email_hosts = array();
foreach($email_hosts as $val)
{
$val = trim($val);
if(!$val) continue;
$output = $this->insertManagedEmailHost($val, '');
if($output->toBool()) $success_email_hosts[] = $val;
}
$this->add('email_hosts', implode("\n",$success_email_hosts));
}
}
/**
* Add a denied nick name
* @return void
@ -1321,6 +1361,21 @@ class memberAdminController extends member
return executeQuery('member.insertDeniedNickName', $args);
}
/**
* Register managed Email Hostname
* @param string $email_host
* @param string $description
* @return Object
*/
function insertManagedEmailHost($email_host, $description = '')
{
$args = new stdClass();
$args->email_host = trim(strtolower($email_host));
$args->description = $description;
return executeQuery('member.insertManagedEmailHost', $args);
}
/**
* delete a denied id
* @param string $user_id
@ -1349,6 +1404,17 @@ class memberAdminController extends member
return executeQuery('member.deleteDeniedNickName', $args);
}
/**
* delete a denied nick name
* @param string $email_host
* @return object
*/
function deleteManagedEmailHost($email_host)
{
$args->email_host = $email_host;
return executeQuery('member.deleteManagedEmailHost', $args);
}
/**
* Delete a join form
* @param int $member_join_form_srl

View file

@ -9,14 +9,14 @@ class memberAdminView extends member
{
/**
* Group list
*
*
* @var array
*/
var $group_list = NULL;
/**
* Selected member info
*
*
* @var array
*/
var $memberInfo = NULL;
@ -33,7 +33,7 @@ class memberAdminView extends member
*
* @return void
*/
function init()
function init()
{
$oMemberModel = getModel('member');
$this->memberConfig = $oMemberModel->getMemberConfig();
@ -43,7 +43,7 @@ class memberAdminView extends member
// if member_srl exists, set memberInfo
$member_srl = Context::get('member_srl');
if($member_srl)
if($member_srl)
{
$this->memberInfo = $oMemberModel->getMemberInfoByMemberSrl($member_srl);
if(!$this->memberInfo)
@ -193,7 +193,13 @@ class memberAdminView extends member
// get denied NickName List
$deniedNickNames = $oMemberModel->getDeniedNickNames();
Context::set('deniedNickNames', $deniedNickNames);
$oSecurity->encodeHTML('deniedNickNames..nick_name');
$oSecurity->encodeHTML('deniedNickNames..nick_name');
//get managed Email Hosts
$managedEmailHost = $oMemberModel->getManagedEmailHosts();
Context::set('managedEmailHost', $managedEmailHost);
$oSecurity->encodeHTML('managedEmailHost..email_host');
$this->setTemplateFile('signup_config');
}
@ -231,7 +237,7 @@ class memberAdminView extends member
*
* @return void
*/
function dispMemberAdminConfigOLD()
function dispMemberAdminConfigOLD()
{
$oModuleModel = getModel('module');
$oMemberModel = getModel('member');
@ -378,7 +384,7 @@ class memberAdminView extends member
}
/**
* Get tags by the member info type
* Get tags by the member info type
*
* @param object $memberInfo
* @param boolean $isAdmin (true : admin, false : not admin)
@ -631,7 +637,7 @@ class memberAdminView extends member
*
* @return void
*/
function dispMemberAdminGroupList()
function dispMemberAdminGroupList()
{
$oModuleModel = getModel('module');
$output = $oModuleModel->getModuleFileBoxList();

View file

@ -234,6 +234,23 @@ class memberController extends member
break;
case 'email_address' :
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($value))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = Context::getLang('managed_email_host');
$email_hosts = $oMemberModel->getManagedEmailHosts();
foreach ($email_hosts as $host)
{
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
return new Object(0,$message);
}
// Check if duplicated
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($value);
if($member_srl && $logged_info->member_srl != $member_srl ) return new Object(0,'msg_exists_email_address');
@ -2015,6 +2032,22 @@ class memberController extends member
$member_srl = $oMemberModel->getMemberSrlByNickName($args->nick_name);
if($member_srl) return new Object(-1,'msg_exists_nick_name');
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($args->email_address))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = Context::getLang('managed_email_host');
$email_hosts = $oMemberModel->getManagedEmailHosts();
foreach ($email_hosts as $host)
{
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
return new Object(-1, $message);
}
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address);
if($member_srl) return new Object(-1,'msg_exists_email_address');
@ -2151,6 +2184,22 @@ class memberController extends member
$output = executeQuery('member.getMemberInfoByMemberSrl', $args);
$orgMemberInfo = $output->data;
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($args->email_address))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = Context::getLang('managed_email_host');
$email_hosts = $oMemberModel->getManagedEmailHosts();
foreach ($email_hosts as $host)
{
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
return new Object(-1, $message);
}
if($config->identifier == 'email_address')
{
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($args->email_address);
@ -2448,6 +2497,23 @@ class memberController extends member
if(!$newEmail) return $this->stop('msg_invalid_request');
$oMemberModel = getModel('member');
// Check managed Email Host
if($oMemberModel->isDeniedEmailHost($newEmail))
{
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managed_email_host = Context::getLang('managed_email_host');
$email_hosts = $oMemberModel->getManagedEmailHosts();
foreach ($email_hosts as $host)
{
$hosts[] = $host->email_host;
}
$message = sprintf($managed_email_host[$emailhost_check],implode(', ',$hosts),'id@'.implode(', id@',$hosts));
return new Object(-1, $message);
}
// Check if the e-mail address is already registered
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($newEmail);
if($member_srl) return new Object(-1,'msg_exists_email_address');

View file

@ -66,6 +66,8 @@ class memberModel extends member
if(!$config->identifier) $config->identifier = 'user_id';
if(!$config->emailhost_check) $config->emailhost_check = 'allowed';
if(!$config->max_error_count) $config->max_error_count = 10;
if(!$config->max_error_count_time) $config->max_error_count_time = 300;
@ -321,7 +323,7 @@ class memberModel extends member
$args = new stdClass();
$args->member_srl = $member_srl;
$output = executeQuery('member.getMemberInfoByMemberSrl', $args, $columnList);
if(!$output->data)
if(!$output->data)
{
if($oCacheHandler->isSupport()) $oCacheHandler->put($cache_key, new stdClass);
return;
@ -840,6 +842,20 @@ class memberModel extends member
return $output->data;
}
function getManagedEmailHosts()
{
static $output;
if(isset($output->data)) return $output->data;
$output = executeQueryArray('member.getManagedEmailHosts');
if(!$output->toBool())
{
$output->data = array();
return array();
}
return $output->data;
}
/**
* @brief Verify if ID is denied
*/
@ -867,6 +883,49 @@ class memberModel extends member
}
return false;
}
/**
* @brief Verify if email_host from email_address is denied
*/
function isDeniedEmailHost($email_address)
{
$email_address = trim($email_address);
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
$emailhost_check = $config->emailhost_check;
$managedHosts = $oMemberModel->getManagedEmailHosts();
if(count($managedHosts) < 1) return FALSE;
static $return;
if(!isset($return[$email_address]))
{
$email = explode('@',$email_address);
$email_hostname = $email[1];
if(!$email_hostname) return TRUE;
foreach($managedHosts as $managedHost)
{
if($managedHost->email_host && strtolower($managedHost->email_host) == strtolower($email_hostname))
{
$return[$email_address] = TRUE;
}
}
if(!$return[$email_address])
{
$return[$email_address] = FALSE;
}
}
if($emailhost_check == 'prohibited')
{
return $return[$email_address];
}
else
{
return (!$return[$email_address]);
}
}
/**
* @brief Get information of the profile image
*/
@ -1096,7 +1155,7 @@ class memberModel extends member
case 'low':
if($length < 4) return false;
break;
break;
}
return true;

View file

@ -0,0 +1,8 @@
<query id="deleteManagedEmailHost" action="delete">
<tables>
<table name="member_managed_email_hosts" />
</tables>
<conditions>
<condition operation="equal" column="email_host" var="email_host" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,8 @@
<query id="getManagedEmailHosts" action="select">
<tables>
<table name="member_managed_email_hosts" />
</tables>
<columns>
<column name="email_host" />
</columns>
</query>

View file

@ -0,0 +1,10 @@
<query id="insertManagedEmailHost" action="insert">
<tables>
<table name="member_managed_email_hosts" />
</tables>
<columns>
<column name="email_host" var="email_host" notnull="notnull" />
<column name="regdate" default="curdate()" />
<column name="description" var="description" default="" />
</columns>
</query>

View file

@ -0,0 +1,5 @@
<table name="member_managed_email_hosts">
<column name="email_host" type="varchar" size="250" notnull="notnull" primary_key="primary_key" />
<column name="regdate" type="date" />
<column name="description" type="text" />
</table>

View file

@ -17,7 +17,7 @@ function doUpdateDeniedID(user_id, mode, message) {
}
/* prohibited nick name functions */
function doUpdateDeniedNickName(nick_name, mode, message)
function doUpdateDeniedNickName(nick_name, mode, message)
{
if(typeof(message)!='undefined' && !confirm(message)) return;
@ -35,8 +35,27 @@ function doUpdateDeniedNickName(nick_name, mode, message)
);
}
/* managed E-mail Address functions */
function doUpdateManagedEmailHost(email_host, mode, message)
{
if(typeof(message)!='undefined' && !confirm(message)) return;
exec_xml(
'member',
'procMemberAdminUpdateManagedEmailHosts',
{email_hosts:email_host, mode:mode, email_hosts_count:jQuery('#managedEmailHost li').length},
function(){
if (mode == 'delete'){
jQuery('#managed_'+email_host.replace(/\./g,'\_\_')).remove();
jQuery('._managededEmailHostCount').html(jQuery('#managedEmailHost li').length);
}
},
['error','message','tpl']
);
}
jQuery(function($){
// hide form if enable_join is setted "No"
// hide form if enable_join is setted "No"
var suForm = $('table.__join_form'); // 회원가입 양식
function changeTable($i)
@ -96,7 +115,7 @@ jQuery(function($){
if (!confirm(xe.lang.msg_delete_extend_form)) return;
var memberFormSrl = $(event.target).parent().attr('id');
var targetTR = $(event.target).closest('tr');
var targetTR = $(event.target).closest('tr');
exec_xml(
'member',
@ -111,7 +130,7 @@ jQuery(function($){
$('button._addDeniedID').click(function(){
var ids = $('#prohibited_id').val();
if(ids == ''){
if(ids == ''){
alert(xe.lang.msg_null_prohibited_id);
$('#prohibited_id').focus();
return;
@ -136,11 +155,40 @@ jQuery(function($){
jQuery.exec_json('member.procMemberAdminInsertDeniedID', {'user_id': ids}, on_complete);
});
$('button._addManagedEmailHost').click(function(){
var hosts = $('#manage_email_host').val();
if(hosts == ''){
alert(xe.lang.msg_null_managed_emailhost);
$('#manage_email_host').focus();
return;
}
var tag;
function on_complete(data)
{
$('#manage_email_host').val('');
var hosts = $.trim(data.email_hosts);
if(hosts == '') return;
var uids = hosts.split("\n");
for (var i=0; i<uids.length; i++)
{
uids[i] = $.trim(uids[i]);
tag = '<li id="managed_'+uids[i].replace(/\./g,'\_\_')+'">'+uids[i]+' <button type="button" class="x_icon-remove" onclick="doUpdateManagedEmailHost(\''+uids[i]+'\',\'delete\',\''+xe.lang.confirm_delete+'\');return false;">'+xe.lang.cmd_delete+'</button></li>';
$('#managedEmailHost').append($(tag));
}
$('._managededEmailHostCount').html($('#managedEmailHost li').length);
}
$.exec_json('member.procMemberAdminUpdateManagedEmailHosts', {'email_hosts': hosts}, on_complete);
});
$('button._addDeniedNickName').click(function(){
var ids = $('#prohibited_nick_name').val();
if(ids == ''){
if(ids == ''){
alert(xe.lang.msg_null_prohibited_nick_name);
$('#prohibited_nick_name').focus();
return;
@ -195,7 +243,7 @@ jQuery(function($){
$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
// add sticky class
}
});

View file

@ -7,6 +7,7 @@
xe.lang.cmd_delete = '{$lang->cmd_delete}';
xe.lang.msg_null_prohibited_id = '{$lang->msg_null_prohibited_id}';
xe.lang.msg_null_prohibited_nick_name = '{$lang->msg_null_prohibited_nick_name}';
xe.lang.msg_null_managed_emailhost = '{$lang->msg_null_managed_emailhost}';
xe.lang.msg_exists_user_id= '{$lang->msg_exists_user_id}';
</script>
<form action="./" class="x_form-horizontal" method="post">
@ -23,6 +24,24 @@
<input type="text" name="limit_day_description" value="{$config->limit_day_description}" placeholder="{$lang->limit_day_description}" style="width:90%" class="lang_code" />
</div>
</div>
<!--// Managed Email Host Control -->
<div class="x_control-group">
<label class="x_control-label" for="manage_email_host">{$lang->cmd_manage_email_host}[<a href="#helpHost" data-toggle>?</a>]</label>
<div class="x_controls">
<div class="layer x_alert x_alert-info" id="helpHost">
<p>{$lang->about_emailhost_check}</p>
</div>
<input type="radio" id="emailhost_check_allowed" name="emailhost_check" value="allowed" checked="checked"|cond="$config->emailhost_check =='allowed'" /><label for="emailhost_check_allowed" class="x_inline"> {$lang->cmd_allowed}</label>
<input type="radio" id="emailhost_check_prohibited" name="emailhost_check" value="prohibited" checked="checked"|cond="$config->emailhost_check =='prohibited'" /><label for="emailhost_check_prohibited" class="x_inline"> {$lang->cmd_prohibited}</label>
<p>{@ if($config->emailhost_check =='prohibited') $emailhost_check = $lang->cmd_prohibited; else $emailhost_check = $lang->cmd_allowed;}{sprintf($lang->count_manage_email_host, count($managedEmailHost), $emailhost_check)}</p>
<ul class="textList" id="managedEmailHost" style="margin-left:0">
<li loop="$managedEmailHost=>$emailInfo" id="managed_{str_replace('.','__',$emailInfo->email_host)}">{$emailInfo->email_host} <button type="button" class="x_icon-remove" onclick="doUpdateManagedEmailHost('{$emailInfo->email_host}','delete','{$lang->confirm_delete}');return false;">{$lang->delete}</button></li>
</ul>
<textarea rows="2" cols="42" id="manage_email_host" title="{$lang->add_managed_emailhost}" style="vertical-align:top"></textarea>
<button type="button" class="_addManagedEmailHost x_btn">{$lang->add}</button>
<p class="x_help-inline">{$lang->multi_line_input}</p>
</div>
</div>
<div class="x_control-group">
<label class="x_control-label" for="prohibited_nick_name">{$lang->cmd_manage_nick_name}</label>
<div class="x_controls">
@ -30,7 +49,7 @@
<ul class="textList" id="deniedNickNameList" style="margin-left:0">
<li loop="$deniedNickNames=>$nicknameInfo" id="denied_{$nicknameInfo->nick_name}">{$nicknameInfo->nick_name} <button type="button" class="x_icon-remove" onclick="doUpdateDeniedNickName('{$nicknameInfo->nick_name}','delete','{$lang->confirm_delete}');return false;">{$lang->delete}</button></li>
</ul>
<textarea rows="2" cols="42" id="prohibited_nick_name" title="{$lang->add_prohibited_id}" style="vertical-align:top"></textarea>
<textarea rows="2" cols="42" id="prohibited_nick_name" title="{$lang->add_prohibited_nickname}" style="vertical-align:top"></textarea>
<button type="button" class="_addDeniedNickName x_btn">{$lang->add}</button>
<p class="x_help-inline">{$lang->multi_line_input}</p>
</div>