From 6dfc1f8aef2d75f5ca8fe694fb8ef27ef885b12c Mon Sep 17 00:00:00 2001 From: vogelor Date: Sat, 1 May 2010 22:15:28 +0000 Subject: [PATCH] Added a new module called "domain". With this module you can manage all domains (web + mail). Per default this module is not active. To activate it, you have to change the System Interface Config -> domains -> use the domain module. You also have to activate the domain-module for the admin (and for every client if you want). Important: you can not use this module if you have reseller! --- install/sql/ispconfig3.sql | 16 ++ install/tpl/system.ini.master | 6 +- interface/lib/lang/de.lng | 1 + interface/lib/lang/en.lng | 1 + .../web/admin/form/system_config.tform.php | 25 +++ .../web/admin/lib/lang/de_system_config.lng | 3 + .../web/admin/lib/lang/en_system_config.lng | 4 +- interface/web/admin/system_config_edit.php | 26 ++- .../templates/system_config_domains_edit.htm | 35 ++++ interface/web/domain/domain_del.php | 82 ++++++++++ interface/web/domain/domain_edit.php | 154 ++++++++++++++++++ interface/web/domain/domain_list.php | 51 ++++++ interface/web/domain/domain_new_client.php | 45 +++++ interface/web/domain/form/domain.tform.php | 111 +++++++++++++ interface/web/domain/lib/admin.conf.php | 29 ++++ interface/web/domain/lib/lang/de.lng | 14 ++ .../web/domain/lib/lang/de_domain_list.lng | 5 + interface/web/domain/lib/lang/en.lng | 13 ++ .../web/domain/lib/lang/en_domain_list.lng | 5 + interface/web/domain/lib/module.conf.php | 47 ++++++ interface/web/domain/list/domain.list.php | 84 ++++++++++ .../web/domain/templates/domain_edit.htm | 40 +++++ .../web/domain/templates/domain_list.htm | 59 +++++++ interface/web/mail/mail_domain_edit.php | 21 ++- .../web/mail/templates/mail_domain_edit.htm | 10 +- .../web/sites/templates/web_domain_edit.htm | 10 +- interface/web/sites/web_domain_edit.php | 19 +++ .../themes/default/css/navigation/nav_top.css | 5 + .../web/themes/default/icons/x64/domain.png | Bin 0 -> 4248 bytes 29 files changed, 911 insertions(+), 10 deletions(-) create mode 100644 interface/web/admin/templates/system_config_domains_edit.htm create mode 100644 interface/web/domain/domain_del.php create mode 100644 interface/web/domain/domain_edit.php create mode 100644 interface/web/domain/domain_list.php create mode 100644 interface/web/domain/domain_new_client.php create mode 100644 interface/web/domain/form/domain.tform.php create mode 100644 interface/web/domain/lib/admin.conf.php create mode 100644 interface/web/domain/lib/lang/de.lng create mode 100644 interface/web/domain/lib/lang/de_domain_list.lng create mode 100644 interface/web/domain/lib/lang/en.lng create mode 100644 interface/web/domain/lib/lang/en_domain_list.lng create mode 100644 interface/web/domain/lib/module.conf.php create mode 100644 interface/web/domain/list/domain.list.php create mode 100644 interface/web/domain/templates/domain_edit.htm create mode 100644 interface/web/domain/templates/domain_list.htm create mode 100644 interface/web/themes/default/icons/x64/domain.png diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 07919e3f78..e0a3a925b2 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -262,6 +262,22 @@ CREATE TABLE `dns_template` ( PRIMARY KEY (`template_id`) ) ENGINE=MyISAM AUTO_INCREMENT=1; +-- +-- Tabellenstruktur für Tabelle `domain` +-- + +CREATE TABLE `domain` ( + `domain_id` int(11) unsigned NOT NULL auto_increment, + `sys_userid` int(11) unsigned NOT NULL default '0', + `sys_groupid` int(11) unsigned NOT NULL default '0', + `sys_perm_user` varchar(5) NOT NULL default '', + `sys_perm_group` varchar(5) NOT NULL default '', + `sys_perm_other` varchar(5) NOT NULL default '', + `domain` varchar(255) NOT NULL default '', + PRIMARY KEY (`domain_id`), + UNIQUE KEY `domain` (`domain`) +) ENGINE=MyISAM; + -- -------------------------------------------------------- -- diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master index f59a0b82b0..4459ca2b9c 100644 --- a/install/tpl/system.ini.master +++ b/install/tpl/system.ini.master @@ -20,4 +20,8 @@ shelluser_prefix=[CLIENTNAME] dblist_phpmyadmin_link=y phpmyadmin_url= -[tools] \ No newline at end of file +[tools] + +[domains] +use_domain_module=n +new_domain_html=Please contact our support to create a new domain for you. diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng index e9882f559c..9d2a670294 100644 --- a/interface/lib/lang/de.lng +++ b/interface/lib/lang/de.lng @@ -32,4 +32,5 @@ $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Tools'; $wb['top_menu_help'] = 'Support'; $wb['top_menu_billing'] = 'Billing'; +$wb['top_menu_domain'] = 'Domänen'; ?> diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng index be14f7de91..da7caf12f3 100644 --- a/interface/lib/lang/en.lng +++ b/interface/lib/lang/en.lng @@ -32,5 +32,6 @@ $wb['top_menu_dns'] = 'DNS'; $wb['top_menu_tools'] = 'Tools'; $wb['top_menu_help'] = 'Help'; $wb['top_menu_billing'] = 'Billing'; +$wb['top_menu_domain'] = 'Domains'; $wb['toolsarea_head_txt'] = 'Tools'; ?> diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php index 13e55f7af6..db0d353833 100644 --- a/interface/web/admin/form/system_config.tform.php +++ b/interface/web/admin/form/system_config.tform.php @@ -162,6 +162,31 @@ $form["tabs"]['mail'] = array ( ) ); +$form["tabs"]['domains'] = array ( + 'title' => "Domains", + 'width' => 70, + 'template' => "templates/system_config_domains_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'use_domain_module' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'n', + 'value' => array(0 => 'n',1 => 'y') + ), + 'new_domain_html' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); ?> \ No newline at end of file diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng index 2c10f25677..a4e618217b 100644 --- a/interface/web/admin/lib/lang/de_system_config.lng +++ b/interface/web/admin/lib/lang/de_system_config.lng @@ -12,4 +12,7 @@ $wb['dblist_phpmyadmin_link_txt'] = 'Link zu phpMyAdmin in der Datenbankliste'; $wb['mailboxlist_webmail_link_txt'] = 'Link zu Webmail in der Mailboxliste'; $wb['webmail_url_txt'] = 'Webmail URL'; $wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; +$wb['use_domain_module_txt'] = 'Neue Domains können nur über das Modul Domains angelegt werden'; +$wb['use_domain_module_hint'] = 'Wenn Sie dieses Modul verwenden, können Kunden beim Anlegen neuer E-Mail-Domains und neuer Websites lediglich eine Auswahl der vom Administrator für sie angelegter Domains treffen, sie können keine freie Eingabe ausführen.
Sollten Sie diesen Wert ändern, so müssen Sie sich danach ab- und wieder neu anmelden, um die Änderungen sichtbar zu machen.'; +$wb['new_domain_txt'] = 'HTML-Text zum Erstellen einer neuen Domäne'; ?> diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng index 450222722a..3cb319cb29 100644 --- a/interface/web/admin/lib/lang/en_system_config.lng +++ b/interface/web/admin/lib/lang/en_system_config.lng @@ -13,5 +13,7 @@ $wb['dblist_phpmyadmin_link_txt'] = 'Link to phpmyadmin in DB list'; $wb['mailboxlist_webmail_link_txt'] = 'Link to webmail in Mailbox list'; $wb['webmail_url_txt'] = 'Webmail URL'; $wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL'; - +$wb['use_domain_module_txt'] = 'Use the domain-module to add new domains'; +$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 can not 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'; ?> \ No newline at end of file diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php index 6107f20e4c..f6a4c05d05 100644 --- a/interface/web/admin/system_config_edit.php +++ b/interface/web/admin/system_config_edit.php @@ -49,7 +49,8 @@ $app->uses('tpl,tform,tform_actions'); $app->load('tform_actions'); class page_action extends tform_actions { - + + function onShowEdit() { global $app, $conf; @@ -62,7 +63,11 @@ class page_action extends tform_actions { $server_id = $this->id; $this->dataRecord = $app->getconf->get_global_config($section); - + if ($section == 'domains'){ + if (isset($this->dataRecord['use_domain_module'])){ + $_SESSION['use_domain_module_old_value'] = $this->dataRecord['use_domain_module']; + } + } } $record = $app->tform->getHTML($this->dataRecord, $this->active_tab,'EDIT'); @@ -86,6 +91,23 @@ class page_action extends tform_actions { $sql = "UPDATE sys_ini SET config = '".$app->db->quote($server_config_str)."' WHERE sysini_id = 1"; $app->db->query($sql); + + /* + * If we should use the domain-module, we have to insert all existing domains into the table + * (only the first time!) + */ + if (($section == 'domains') && + ($_SESSION['use_domain_module_old_value'] == '') && + ($server_config_array['domains']['use_domain_module'] == 'y')){ + $sql = "REPLACE INTO domain (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain ) " . + "SELECT sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain " . + "FROM mail_domain"; + $app->db->query($sql); + $sql = "REPLACE INTO domain (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain ) " . + "SELECT sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain " . + "FROM web_domain"; + $app->db->query($sql); + } } } diff --git a/interface/web/admin/templates/system_config_domains_edit.htm b/interface/web/admin/templates/system_config_domains_edit.htm new file mode 100644 index 0000000000..9e4d09a704 --- /dev/null +++ b/interface/web/admin/templates/system_config_domains_edit.htm @@ -0,0 +1,35 @@ +

+

+ +
+ +
+
+
+
+

{tmpl_var name='use_domain_module_txt'}

+
+ {tmpl_var name='use_domain_module'} +
+
+
{tmpl_var name='use_domain_module_hint'}
+
+
+

{tmpl_var name='new_domain_txt'}

+
+ +
+
+
+ + + +
+ + +
+
+ +
diff --git a/interface/web/domain/domain_del.php b/interface/web/domain/domain_del.php new file mode 100644 index 0000000000..f47f2f9d81 --- /dev/null +++ b/interface/web/domain/domain_del.php @@ -0,0 +1,82 @@ +auth->check_module_permissions('domain'); + +// Loading classes +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +//* load language file +$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'.lng'; +include($lng_file); + +class page_action extends tform_actions { + + function onBeforeDelete() { + global $app; $conf; + + /* + * We can only delete domains if they are NOT in use + */ + $domain = $this->dataRecord['domain']; + + $sql = "SELECT domain_id FROM mail_domain WHERE domain = '" . $app->db->quote($domain) . "'"; + $res = $app->db->queryOneRecord($sql); + if (is_array($res)){ + $app->error($wb['error_domain_in mailuse']); + } + + $sql = "SELECT domain_id FROM web_domain WHERE domain = '" . $app->db->quote($domain) . "'"; + $res = $app->db->queryOneRecord($sql); + if (is_array($res)){ + $app->error($wb['error_domain_in webuse']); + } + } +} + +$page = new page_action; +$page->onDelete(); + +?> \ No newline at end of file diff --git a/interface/web/domain/domain_edit.php b/interface/web/domain/domain_edit.php new file mode 100644 index 0000000000..8e6e638419 --- /dev/null +++ b/interface/web/domain/domain_edit.php @@ -0,0 +1,154 @@ +auth->check_module_permissions('domain'); + +// Loading classes +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +//* load language file +$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'.lng'; +include($lng_file); + +class page_action extends tform_actions { + + function onShowNew() { + global $app, $conf, $wb; + + // Only admins can add domains, so we don't need any check + + $app->tpl->setVar($wb); + + parent::onShowNew(); + } + + function onShowEnd() { + global $app, $conf, $wb; + + if($_SESSION["s"]["user"]["typ"] == 'admin') { + // Getting Clients of the user + $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0 ORDER BY name"; + $clients = $app->db->queryAllRecords($sql); + $client_select = ''; + if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= ""; + $tmp_data_record = $app->tform->getDataRecord($this->id); + if(is_array($clients)) { + foreach( $clients as $client) { + $selected = ($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':''; + $client_select .= "\r\n"; + } + } + $app->tpl->setVar("client_group_id",$client_select); + + } + + if($this->id > 0) { + //* we are editing a existing record + $app->tpl->setVar("edit_disabled", 1); + } else { + $app->tpl->setVar("edit_disabled", 0); + } + + $app->tpl->setVar($wb); + + parent::onShowEnd(); + } + + function onSubmit() { + global $app, $conf, $wb; + + if($_SESSION["s"]["user"]["typ"] == 'admin') { + if ($this->id == 0) { + /* + * We create a new record + */ + // Check if the user is empty + if(isset($this->dataRecord['client_group_id']) && $this->dataRecord['client_group_id'] == 0) { + $app->tform->errorMessage .= $wb['error_client_group_id_empty']; + } + //* make sure that the email domain is lowercase + if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); + } + else { + /* + * We edit a existing one, but there is nothing to edit + */ + $this->dataRecord = $app->tform->getDataRecord($this->id); + } + } else { + if($this->id > 0) { + /* + * Clients may not edit anything, so we reset the old data + */ + $this->dataRecord = $app->tform->getDataRecord($this->id); + } else { + /* + * clients may not create a new domain + */ + $app->error($wb['error_client_can_not_add_domain']); + } + } + + $app->tpl->setVar($wb); + + parent::onSubmit(); + } + + function onAfterInsert() { + global $app, $conf; + + // make sure that the record belongs to the client group and not the admin group when admin inserts it + // also make sure that the user can not delete domain created by a admin + if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) { + $client_group_id = intval($this->dataRecord["client_group_id"]); + $app->db->query("UPDATE domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id); + } + } +} + +$page = new page_action; +$page->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/domain/domain_list.php b/interface/web/domain/domain_list.php new file mode 100644 index 0000000000..381285e367 --- /dev/null +++ b/interface/web/domain/domain_list.php @@ -0,0 +1,51 @@ +auth->check_module_permissions('domain'); + +$app->uses('listform_actions'); + +$app->listform_actions->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/domain/domain_new_client.php b/interface/web/domain/domain_new_client.php new file mode 100644 index 0000000000..3d9a9c410c --- /dev/null +++ b/interface/web/domain/domain_new_client.php @@ -0,0 +1,45 @@ +auth->check_module_permissions('domain'); + +/* + * Just get the html and return it + */ +$app->uses('ini_parser,getconf'); +$settings = $app->getconf->get_global_config('domains'); +if ($settings['use_domain_module'] == 'y') { + echo $settings[new_domain_html]; +} + +?> diff --git a/interface/web/domain/form/domain.tform.php b/interface/web/domain/form/domain.tform.php new file mode 100644 index 0000000000..9cd5422844 --- /dev/null +++ b/interface/web/domain/form/domain.tform.php @@ -0,0 +1,111 @@ + 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + +$form["tabs"]['domain'] = array ( + 'title' => "Domain", + 'width' => 100, + 'template' => "templates/domain_edit.htm", + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'domain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'domain_error_empty'), + 1 => array ( 'type' => 'UNIQUE', + 'errmsg'=> 'domain_error_unique'), + 2 => array ( 'type' => 'REGEX', + 'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z]{2,10}$/', + 'errmsg'=> 'domain_error_regex'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + +?> \ No newline at end of file diff --git a/interface/web/domain/lib/admin.conf.php b/interface/web/domain/lib/admin.conf.php new file mode 100644 index 0000000000..5e64662218 --- /dev/null +++ b/interface/web/domain/lib/admin.conf.php @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/interface/web/domain/lib/lang/de.lng b/interface/web/domain/lib/lang/de.lng new file mode 100644 index 0000000000..728683a746 --- /dev/null +++ b/interface/web/domain/lib/lang/de.lng @@ -0,0 +1,14 @@ +'; +$wb['list_head_txt'] = 'Domänen'; +$wb['domain_txt'] = 'Domäne'; +?> diff --git a/interface/web/domain/lib/lang/de_domain_list.lng b/interface/web/domain/lib/lang/de_domain_list.lng new file mode 100644 index 0000000000..70f3b2f32e --- /dev/null +++ b/interface/web/domain/lib/lang/de_domain_list.lng @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/interface/web/domain/lib/lang/en.lng b/interface/web/domain/lib/lang/en.lng new file mode 100644 index 0000000000..f2fdc9992b --- /dev/null +++ b/interface/web/domain/lib/lang/en.lng @@ -0,0 +1,13 @@ +'; +?> diff --git a/interface/web/domain/lib/lang/en_domain_list.lng b/interface/web/domain/lib/lang/en_domain_list.lng new file mode 100644 index 0000000000..161fd504e1 --- /dev/null +++ b/interface/web/domain/lib/lang/en_domain_list.lng @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/interface/web/domain/lib/module.conf.php b/interface/web/domain/lib/module.conf.php new file mode 100644 index 0000000000..ae01afd4d5 --- /dev/null +++ b/interface/web/domain/lib/module.conf.php @@ -0,0 +1,47 @@ + 'Domains', + 'target' => 'content', + 'link' => 'domain/domain_list.php'); + +$module['nav'][] = array( 'title' => 'Domains', + 'open' => 1, + 'items' => $items); + +?> \ No newline at end of file diff --git a/interface/web/domain/list/domain.list.php b/interface/web/domain/list/domain.list.php new file mode 100644 index 0000000000..bd96addf21 --- /dev/null +++ b/interface/web/domain/list/domain.list.php @@ -0,0 +1,84 @@ + "domain", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); +?> \ No newline at end of file diff --git a/interface/web/domain/templates/domain_edit.htm b/interface/web/domain/templates/domain_edit.htm new file mode 100644 index 0000000000..12b3aa96fd --- /dev/null +++ b/interface/web/domain/templates/domain_edit.htm @@ -0,0 +1,40 @@ +

+ +
+ +
+
+
+ + + + + + +
+ +
+ + + + + + +
+
+
+ + + + +
+ + +
+
+ +
diff --git a/interface/web/domain/templates/domain_list.htm b/interface/web/domain/templates/domain_list.htm new file mode 100644 index 0000000000..b8533840ef --- /dev/null +++ b/interface/web/domain/templates/domain_list.htm @@ -0,0 +1,59 @@ +

+

+ +
+ +
+
{tmpl_var name="toolsarea_head_txt"} +
+ + + + + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
 
{tmpl_var name="domain"} + + + +
+
+
+ +
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 847c2c337d..bfd38ca64e 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -62,7 +62,7 @@ class page_action extends tform_actions { $app->error('Reseller: '.$app->tform->wordbook["limit_maildomain_txt"]); } } - + parent::onShowNew(); } @@ -116,7 +116,24 @@ class page_action extends tform_actions { } - + /* + * Now we have to check, if we should use the domain-module to select the domain + * or not + */ + $app->uses('ini_parser,getconf'); + $settings = $app->getconf->get_global_config('domains'); + if ($settings['use_domain_module'] == 'y'){ + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $sql = "SELECT domain FROM domain WHERE sys_groupid =" . $client_group_id; + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + if(is_array($domains)) { + foreach( $domains as $domain) { + $domain_select .= "\r\n"; + } + } + $app->tpl->setVar("domain_option",$domain_select); + } // Get the spamfilter policys for the user diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm index a104827f8f..3e5da39ab9 100644 --- a/interface/web/mail/templates/mail_domain_edit.htm +++ b/interface/web/mail/templates/mail_domain_edit.htm @@ -39,8 +39,14 @@
- -
+ + + + + +
-
+ + + + + +
 MB diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php index 1874b446e8..c96fda9f3e 100644 --- a/interface/web/sites/web_domain_edit.php +++ b/interface/web/sites/web_domain_edit.php @@ -206,6 +206,25 @@ class page_action extends tform_actions { $tmp_txt = ($this->dataRecord['traffic_quota_lock'] == 'y')?'('.$app->tform->lng('traffic_quota_exceeded_txt').')':''; $app->tpl->setVar("traffic_quota_exceeded_txt", $tmp_txt); + /* + * Now we have to check, if we should use the domain-module to select the domain + * or not + */ + $app->uses('ini_parser,getconf'); + $settings = $app->getconf->get_global_config('domains'); + if ($settings['use_domain_module'] == 'y'){ + $client_group_id = $_SESSION["s"]["user"]["default_group"]; + $sql = "SELECT domain FROM domain WHERE sys_groupid =" . $client_group_id; + $domains = $app->db->queryAllRecords($sql); + $domain_select = ''; + if(is_array($domains)) { + foreach( $domains as $domain) { + $domain_select .= "\r\n"; + } + } + $app->tpl->setVar("domain_option",$domain_select); + } + parent::onShowEnd(); } diff --git a/interface/web/themes/default/css/navigation/nav_top.css b/interface/web/themes/default/css/navigation/nav_top.css index bbb4482f25..3104e266b3 100644 --- a/interface/web/themes/default/css/navigation/nav_top.css +++ b/interface/web/themes/default/css/navigation/nav_top.css @@ -90,4 +90,9 @@ .topnav- { background-image: url('../../icons/x64/login.png') !important; } + + .topnav-domain { + background-image: url('../../icons/x64/domain.png') !important; + } + } \ No newline at end of file diff --git a/interface/web/themes/default/icons/x64/domain.png b/interface/web/themes/default/icons/x64/domain.png new file mode 100644 index 0000000000000000000000000000000000000000..03ac2d91830b798a2640f78a822caca795310605 GIT binary patch literal 4248 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