From d4c760c19560c720d0df2297f573441de4660140 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Wed, 27 Apr 2011 13:41:32 -0400
Subject: [PATCH] Implemented optional custom login name for mailboxes.
---
install/tpl/system.ini.master | 1
interface/web/mail/templates/mail_user_list.htm | 7 +
interface/web/mail/mail_user_edit.php | 22 ++++++-
config/courier/authmysqlrc | 2
interface/web/admin/templates/system_config_mail_edit.htm | 6 ++
install/tpl/pamd_smtp.master | 4
install/sql/ispconfig3.sql | 1
install/tpl/opensuse_dovecot-sql.conf.master | 4
install/tpl/sasl_smtpd.conf.master | 2
interface/web/mail/mail_user_list.php | 6 ++
install/tpl/fedora_dovecot-sql.conf.master | 4
interface/web/mail/lib/lang/en_mail_user_list.lng | 1
interface/web/admin/lib/lang/en_system_config.lng | 7 +-
interface/web/mail/lib/lang/de_mail_user_list.lng | 1
install/tpl/mysql-virtual_mailboxes.cf.master | 4
interface/web/admin/lib/lang/de_system_config.lng | 1
interface/web/admin/templates/server_config_mail_edit.htm | 4
interface/web/admin/form/system_config.tform.php | 6 ++
interface/web/mail/lib/lang/de_mail_user.lng | 4 +
interface/web/mail/list/mail_user.list.php | 25 +++++--
interface/web/mail/lib/lang/en_mail_user.lng | 4 +
interface/web/mail/form/mail_user.tform.php | 15 +++++
install/tpl/authmysqlrc.master | 2
install/tpl/debian6_dovecot-sql.conf.master | 6 +-
interface/web/mail/templates/mail_user_mailbox_edit.htm | 4 +
install/tpl/debian_dovecot-sql.conf.master | 4
26 files changed, 113 insertions(+), 34 deletions(-)
diff --git a/config/courier/authmysqlrc b/config/courier/authmysqlrc
index 80253c9..144c57a 100644
--- a/config/courier/authmysqlrc
+++ b/config/courier/authmysqlrc
@@ -103,7 +103,7 @@
# SELECT MYSQL_UID_FIELD, MYSQL_GID_FIELD, ... WHERE id='loginid'
#
-MYSQL_LOGIN_FIELD email
+MYSQL_LOGIN_FIELD login
##NAME: MYSQL_HOME_FIELD:0
#
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index ff0cfb1..55daa11 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -589,6 +589,7 @@
`sys_perm_other` varchar(5) NOT NULL default '',
`server_id` int(11) unsigned NOT NULL default '0',
`email` varchar(255) NOT NULL default '',
+ `login` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL default '',
`uid` int(11) unsigned NOT NULL default '5000',
diff --git a/install/tpl/authmysqlrc.master b/install/tpl/authmysqlrc.master
index b8f39e3..d44b4f2 100644
--- a/install/tpl/authmysqlrc.master
+++ b/install/tpl/authmysqlrc.master
@@ -8,7 +8,7 @@
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
-MYSQL_LOGIN_FIELD email
+MYSQL_LOGIN_FIELD login
MYSQL_HOME_FIELD homedir
MYSQL_MAILDIR_FIELD maildir
#MYSQL_NAME_FIELD
diff --git a/install/tpl/debian6_dovecot-sql.conf.master b/install/tpl/debian6_dovecot-sql.conf.master
index 73dd0fc..b96ad38 100644
--- a/install/tpl/debian6_dovecot-sql.conf.master
+++ b/install/tpl/debian6_dovecot-sql.conf.master
@@ -120,7 +120,7 @@
connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password}
default_pass_scheme = CRYPT
-password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
-#user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
-user_query = SELECT email AS user, maildir AS home, CONCAT('*:storage=', quota , 'B') AS quota_rule FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
+password_query = SELECT password FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
+#user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
+user_query = SELECT email AS user, maildir AS home, CONCAT('*:storage=', quota , 'B') AS quota_rule FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
diff --git a/install/tpl/debian_dovecot-sql.conf.master b/install/tpl/debian_dovecot-sql.conf.master
index 8777d73..cd61170 100644
--- a/install/tpl/debian_dovecot-sql.conf.master
+++ b/install/tpl/debian_dovecot-sql.conf.master
@@ -120,7 +120,7 @@
connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password}
default_pass_scheme = CRYPT
-password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
-user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
+password_query = SELECT password FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
+user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
diff --git a/install/tpl/fedora_dovecot-sql.conf.master b/install/tpl/fedora_dovecot-sql.conf.master
index 17f7422..897f35a 100644
--- a/install/tpl/fedora_dovecot-sql.conf.master
+++ b/install/tpl/fedora_dovecot-sql.conf.master
@@ -133,5 +133,5 @@
connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password}
default_pass_scheme = CRYPT
-password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
-user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
+password_query = SELECT password FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
+user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
diff --git a/install/tpl/mysql-virtual_mailboxes.cf.master b/install/tpl/mysql-virtual_mailboxes.cf.master
index d013c34..2fe47bb 100644
--- a/install/tpl/mysql-virtual_mailboxes.cf.master
+++ b/install/tpl/mysql-virtual_mailboxes.cf.master
@@ -3,6 +3,6 @@
dbname = {mysql_server_database}
table = mail_user
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
-where_field = email
+where_field = login
additional_conditions = and postfix = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
diff --git a/install/tpl/opensuse_dovecot-sql.conf.master b/install/tpl/opensuse_dovecot-sql.conf.master
index 17f7422..897f35a 100644
--- a/install/tpl/opensuse_dovecot-sql.conf.master
+++ b/install/tpl/opensuse_dovecot-sql.conf.master
@@ -133,5 +133,5 @@
connect = host={mysql_server_host} dbname={mysql_server_database} user={mysql_server_ispconfig_user} password={mysql_server_ispconfig_password}
default_pass_scheme = CRYPT
-password_query = SELECT password FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
-user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE email = '%u' AND disable%Ls = 'n'
+password_query = SELECT password FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
+user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('maildir:storage=', floor(quota/1024)) AS quota, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE login = '%u' AND disable%Ls = 'n'
diff --git a/install/tpl/pamd_smtp.master b/install/tpl/pamd_smtp.master
index f03bed9..11b5d16 100644
--- a/install/tpl/pamd_smtp.master
+++ b/install/tpl/pamd_smtp.master
@@ -1,2 +1,2 @@
-auth required pam_mysql.so user={mysql_server_ispconfig_user} passwd={mysql_server_ispconfig_password} host={mysql_server_ip} db={mysql_server_database} table=mail_user usercolumn=email passwdcolumn=password crypt=1
-account sufficient pam_mysql.so user={mysql_server_ispconfig_user} passwd={mysql_server_ispconfig_password} host={mysql_server_ip} db={mysql_server_database} table=mail_user usercolumn=email passwdcolumn=password crypt=1
\ No newline at end of file
+auth required pam_mysql.so user={mysql_server_ispconfig_user} passwd={mysql_server_ispconfig_password} host={mysql_server_ip} db={mysql_server_database} table=mail_user usercolumn=login passwdcolumn=password crypt=1
+account sufficient pam_mysql.so user={mysql_server_ispconfig_user} passwd={mysql_server_ispconfig_password} host={mysql_server_ip} db={mysql_server_database} table=mail_user usercolumn=login passwdcolumn=password crypt=1
\ No newline at end of file
diff --git a/install/tpl/sasl_smtpd.conf.master b/install/tpl/sasl_smtpd.conf.master
index 35a9c3d..d593423 100644
--- a/install/tpl/sasl_smtpd.conf.master
+++ b/install/tpl/sasl_smtpd.conf.master
@@ -6,4 +6,4 @@
sql_user: {mysql_server_ispconfig_user}
sql_passwd: {mysql_server_ispconfig_password}
sql_database: {mysql_server_database}
-sql_select: select password from mail_user where email = '%u'
\ No newline at end of file
+sql_select: select password from mail_user where login = '%u'
diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index 07d5a4e..8b305ac 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -7,6 +7,7 @@
[dns]
[mail]
+enable_custom_login=n
mailboxlist_webmail_link=y
webmail_url=
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 3de23d5..b6aa20e 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -162,6 +162,12 @@
##################################
# Begin Datatable fields
##################################
+ 'enable_custom_login' => array(
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n', 1 => 'y')
+ ),
'mailboxlist_webmail_link' => array (
'datatype' => 'VARCHAR',
'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index c26e98c..fb337e6 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -19,4 +19,5 @@
$wb['use_domain_module_hint'] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
$wb['new_domain_txt'] = 'HTML to create a new domain';
$wb['webftp_url_txt'] = 'WebFTP URL';
+$wb['enable_custom_login_txt'] = 'Abweichenden Login-Namen erlauben';
?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 9e8d224..52d50fc 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -12,6 +12,7 @@
$wb["shelluser_prefix_error_regex"] = 'Char not allowed in shell user prefix.';
$wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.';
$wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list';
+$wb['enable_custom_login_txt'] = 'Allow custom login name';
$wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list';
$wb["webmail_url_txt"] = 'Webmail URL';
$wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list';
@@ -21,7 +22,7 @@
$wb["use_domain_module_hint"] = 'If you use this module, your customers can only select one of the domains the admin creates for them. They cannot free edit the domain-field.You have to re-login after changing this value, to make the changes visible.';
$wb["new_domain_txt"] = 'HTML to create a new domain';
$wb["webftp_url_txt"] = 'WebFTP URL';
-$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
-$wb["monitor_key_txt"] = 'Monitor keyword';
-$wb['admin_name_txt'] = 'Administrator\'s name';
+$wb['admin_mail_txt'] = 'Administrator\'s e-mail';
+$wb["monitor_key_txt"] = 'Monitor keyword';
+$wb['admin_name_txt'] = 'Administrator\'s name';
?>
diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm
index 2496fdc..94dff00 100644
--- a/interface/web/admin/templates/server_config_mail_edit.htm
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -68,9 +68,9 @@
<input name="mailbox_size_limit" id="mailbox_size_limit" value="{tmpl_var name='mailbox_size_limit'}" size="10" maxlength="15" type="text" class="textInput formLengthLimit" /> MB
</div>
<div class="ctrlHolder">
- <label for="message_size_limit">{tmpl_var name='message_size_limit_txt'}</label>
+ <label for="message_size_limit">{tmpl_var name='message_size_limit_txt'}</label>
<input name="message_size_limit" id="message_size_limit" value="{tmpl_var name='message_size_limit'}" size="10" maxlength="15" type="text" class="textInput formLengthLimit" /> MB
- </div>
+ </div>
</fieldset>
<input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm
index c728404..de50e95 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -6,6 +6,12 @@
<div class="pnl_formsarea">
<fieldset class="inlineLabels">
<div class="ctrlHolder">
+ <p class="label">{tmpl_var name='enable_custom_login_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name='enable_custom_login'}
+ </div>
+ </div>
+ <div class="ctrlHolder">
<p class="label">{tmpl_var name='mailboxlist_webmail_link_txt'}</p>
<div class="multiField">
{tmpl_var name='mailboxlist_webmail_link'}
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index 6cb792a..2cab87d 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -79,6 +79,21 @@
'width' => '30',
'maxlength' => '255'
),
+ 'login' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array (
+ 0 => array ( 'type' => 'UNIQUE',
+ 'errmsg'=> 'login_error_unique'),
+ 1 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-z][\w\.\-_\+@]{1,63}$/',
+ 'errmsg'=> 'login_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
'password' => array (
'datatype' => 'VARCHAR',
'formtype' => 'PASSWORD',
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 7308396..defbba1 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -39,4 +39,8 @@
$wb['autoresponder_active'] = 'Enable the autoresponder';
$wb['cc_txt'] = 'Send copy to';
$wb['cc_error_isemail'] = 'The Send copy to field does not conatin a valid email address';
+$wb['login_error_unique'] = 'Login wird bereits verwendet.';
+$wb['login_error_regex'] = 'Zulässige Zeichen sind A-Z, a-z, 0-9, ., _ und -.';
+$wb['login_txt'] = 'Login (optional)';
+$wb['error_login_email_txt'] = 'Dieser Loginname ist nicht zulässig. Bitte verwenden Sie einen anderen Loginnamen oder die E-Mail-Adresse als Login.';
?>
diff --git a/interface/web/mail/lib/lang/de_mail_user_list.lng b/interface/web/mail/lib/lang/de_mail_user_list.lng
index 8d453d0..563f52b 100644
--- a/interface/web/mail/lib/lang/de_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_list.lng
@@ -4,4 +4,5 @@
$wb['autoresponder_txt'] = 'Autoresponder';
$wb['add_new_record_txt'] = 'Neue Mailbox hinzufügen';
$wb['name_txt'] = 'Realname';
+$wb['login_txt'] = 'Login';
?>
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index db58a62..938ae92 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -41,4 +41,8 @@
$wb['cc_error_isemail'] = 'The -Send copy to- field does not conatin a valid email address';
$wb['domain_txt'] = 'Domain';
$wb['now_txt']='Now';
+$wb['login_error_unique'] = 'Login is already taken.';
+$wb['login_error_regex'] = 'Valid characters are A-Z, a-z, 0-9, ., _ and -.';
+$wb['login_txt'] = 'Login (optional)';
+$wb['error_login_email_txt'] = 'This login is not allowed. Please enter a different login or use the mail address as login.';
?>
diff --git a/interface/web/mail/lib/lang/en_mail_user_list.lng b/interface/web/mail/lib/lang/en_mail_user_list.lng
index 70497de..d261145 100644
--- a/interface/web/mail/lib/lang/en_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_user_list.lng
@@ -4,4 +4,5 @@
$wb["autoresponder_txt"] = 'Autoresponder';
$wb["add_new_record_txt"] = 'Add new Mailbox';
$wb["name_txt"] = 'Realname';
+$wb["login_txt"] = 'Login';
?>
\ No newline at end of file
diff --git a/interface/web/mail/list/mail_user.list.php b/interface/web/mail/list/mail_user.list.php
index f3e8c42..5eb648d 100644
--- a/interface/web/mail/list/mail_user.list.php
+++ b/interface/web/mail/list/mail_user.list.php
@@ -47,14 +47,23 @@
* Suchfelder
*****************************************************/
-$liste["item"][] = array( 'field' => "email",
- 'datatype' => "VARCHAR",
- 'formtype' => "TEXT",
- 'op' => "like",
- 'prefix' => "%",
- 'suffix' => "%",
- 'width' => "",
- 'value' => "");
+$liste["item"][] = array( 'field' => "email",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
+
+$liste["item"][] = array( 'field' => "login",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
$liste["item"][] = array( 'field' => "name",
'datatype' => "VARCHAR",
diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php
index e9a3767..1da1b03 100644
--- a/interface/web/mail/mail_user_edit.php
+++ b/interface/web/mail/mail_user_edit.php
@@ -75,7 +75,7 @@
$app->tpl->setVar("email_local_part",$email_parts[0]);
// Getting Domains of the user
- $sql = "SELECT domain FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain';
+ $sql = "SELECT domain, server_id FROM mail_domain WHERE ".$app->tform->getAuthSQL('r').' ORDER BY domain';
$domains = $app->db->queryAllRecords($sql);
$domain_select = '';
if(is_array($domains)) {
@@ -112,6 +112,14 @@
$app->tpl->setVar("ar_active", 'checked="checked"');
} else {
$app->tpl->setVar("ar_active", '');
+ }
+
+ $app->uses('getconf');
+ $mail_config = $app->getconf->get_global_config('mail');
+ if($mail_config["enable_custom_login"] == "y") {
+ $app->tpl->setVar("enable_custom_login", 1);
+ } else {
+ $app->tpl->setVar("enable_custom_login", 0);
}
parent::onShowEnd();
@@ -165,6 +173,9 @@
} // end if user is not admin
+ $app->uses('getconf');
+ $mail_config = $app->getconf->get_server_config($domain["server_id"],'mail');
+
//* compose the email field
if(isset($_POST["email_local_part"]) && isset($_POST["email_domain"])) {
$this->dataRecord["email"] = strtolower($_POST["email_local_part"]."@".$_POST["email_domain"]);
@@ -179,8 +190,6 @@
if($this->dataRecord["quota"] != -1) $this->dataRecord["quota"] = $this->dataRecord["quota"] * 1024 * 1024;
// setting Maildir, Homedir, UID and GID
- $app->uses('getconf');
- $mail_config = $app->getconf->get_server_config($domain["server_id"],'mail');
$maildir = str_replace("[domain]",$domain["domain"],$mail_config["maildir_path"]);
$maildir = str_replace("[localpart]",strtolower($_POST["email_local_part"]),$maildir);
$this->dataRecord["maildir"] = $maildir;
@@ -195,6 +204,13 @@
}
+ $sys_config = $app->getconf->get_global_config('mail');
+ if($sys_config["enable_custom_login"] == "y") {
+ if(!isset($_POST["login"])) $this->dataRecord["login"] = $this->dataRecord["email"];
+ elseif(strpos($_POST["login"], '@') !== false && $_POST["login"] != $this->dataRecord["email"]) $app->tform->errorMessage .= $app->tform->lng("error_login_email_txt")."<br>";
+ } else {
+ $this->dataRecord["login"] = $this->dataRecord["email"];
+ }
//* if autoresponder checkbox not selected, do not save dates
if (!isset($_POST['autoresponder']) && array_key_exists('autoresponder_start_date', $_POST)) {
$this->dataRecord['autoresponder_start_date'] = array_map(create_function('$item','return 0;'), $this->dataRecord['autoresponder_start_date']);
diff --git a/interface/web/mail/mail_user_list.php b/interface/web/mail/mail_user_list.php
index 1cc8554..df69948 100644
--- a/interface/web/mail/mail_user_list.php
+++ b/interface/web/mail/mail_user_list.php
@@ -31,6 +31,12 @@
} else {
$app->tpl->setVar('mailboxlist_webmail_link',0);
}
+
+ if($global_config["enable_custom_login"] == "y") {
+ $app->tpl->setVar("enable_custom_login", 1);
+ } else {
+ $app->tpl->setVar("enable_custom_login", 0);
+ }
parent::onShow();
}
diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm
index fe3838b..a0fe815 100644
--- a/interface/web/mail/templates/mail_user_list.htm
+++ b/interface/web/mail/templates/mail_user_list.htm
@@ -19,13 +19,15 @@
<thead>
<tr>
<th class="tbl_col_email" scope="col"><tmpl_var name="email_txt"></th>
- <th class="tbl_col_name" scope="col"><tmpl_var name="name_txt"></th>
+ <tmpl_if name="enable_custom_login"><th class="tbl_col_login" scope="col"><tmpl_var name="login_txt"></th></tmpl_if>
+ <th class="tbl_col_name" scope="col"><tmpl_var name="name_txt"></th>
<th class="tbl_col_autoresponder" scope="col"><tmpl_var name="autoresponder_txt"></th>
<th class="tbl_col_buttons" scope="col"> </th>
</tr>
<tr>
<td class="tbl_col_email"><input type="text" name="search_email" value="{tmpl_var name='search_email'}" /></td>
<td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+<tmpl_if name="enable_custom_login"><td class="tbl_col_login"><input type="text" name="search_login" value="{tmpl_var name='search_login'}" /></td></tmpl_if>
<td class="tbl_col_autoresponder"><input type="text" name="search_autoresponder" value="{tmpl_var name='search_autoresponder'}" /></td>
<td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','mail/mail_user_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></td>
</tr>
@@ -34,6 +36,7 @@
<tmpl_loop name="records">
<tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
<td class="tbl_col_email"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="email"}</a></td>
+ <tmpl_if name="enable_custom_login"><td class="tbl_col_login"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="login"}</a></td></tmpl_if>
<td class="tbl_col_name"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="name"}</a></td>
<td class="tbl_col_autoresponder"><a href="#" onClick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="autoresponder"}</a></td>
<td class="tbl_col_buttons">
@@ -48,7 +51,7 @@
<tfoot>
<tr>
- <td class="tbl_footer tbl_paging" colspan="4"><tmpl_var name="paging"></td>
+ <td class="tbl_footer tbl_paging" colspan="<tmpl_if name="enable_custom_login">5<tmpl_else>4</tmpl_if>"><tmpl_var name="paging"></td>
</tr>
</tfoot>
</table>
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index 8edc59d..ff3d086 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -17,6 +17,10 @@
<label for="email_domain" class="blockLabel formLengthEmailDomain">{tmpl_var name='domain_txt'}<select name="email_domain" id="email_domain" class="selectInput">{tmpl_var name='email_domain'}</select></label>
</div>
</div>
+ <tmpl_if name="enable_custom_login"><div class="ctrlHolder">
+ <label for="login">{tmpl_var name='login_txt'}</label>
+ <input type="text" id="login" name="login" size="20" value="{tmpl_var name='login'}" class="textInput" /></label>
+ </div></tmpl_if>
<div class="ctrlHolder">
<label for="password">{tmpl_var name='password_txt'}</label>
<input name="password" id="password" value="{tmpl_var name='password'}" size="30" maxlength="255" type="password" class="textInput" onkeyup="pass_check(this.value)" />
--
Gitblit v1.9.1