From 4eb8d2a054e69aba568d5435fd1420b5a9367207 Mon Sep 17 00:00:00 2001
From: cfoe <cfoe@ispconfig3>
Date: Wed, 18 Jul 2012 13:45:49 -0400
Subject: [PATCH] added interface + theme options for the end user
---
interface/web/tools/interface_settings.php | 108 +++++++++
interface/web/tools/lib/module.conf.php | 52 ++-
interface/web/tools/templates/interface_settings.htm | 37 +++
interface/web/tools/lib/interface.d/default-v2.menu.php | 7
interface/web/tools/lib/lang/de_default-v2.lng | 5
interface/web/tools/form/default-v2_settings.tform.php | 137 +++++++++++
interface/web/tools/lib/lang/en_interface.lng | 5
interface/web/tools/templates/default-v2_settings.htm | 37 +++
interface/web/tools/lib/lang/en.lng | 1
interface/web/tools/lib/lang/de.lng | 1
interface/web/tools/lib/lang/de_interface.lng | 5
interface/web/tools/lib/lang/en_default-v2.lng | 5
interface/web/tools/default-v2_settings.php | 109 +++++++++
interface/web/tools/form/interface_settings.tform.php | 181 +++++++++++++++
14 files changed, 673 insertions(+), 17 deletions(-)
diff --git a/interface/web/tools/default-v2_settings.php b/interface/web/tools/default-v2_settings.php
new file mode 100644
index 0000000..30d777f
--- /dev/null
+++ b/interface/web/tools/default-v2_settings.php
@@ -0,0 +1,109 @@
+<?php
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/default-v2_settings.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('tools');
+$app->uses('tpl');
+//// Loading classes
+//$app->uses('tpl,tform,tform_actions');
+//$app->load('tform_actions');
+//
+//class page_action extends tform_actions {
+//
+// function onLoad() {
+// global $app, $conf, $tform_def_file;
+//
+// // Loading template classes and initialize template
+// if(!is_object($app->tpl)) $app->uses('tpl');
+// if(!is_object($app->tform)) $app->uses('tform');
+//
+// $app->tpl->newTemplate("tabbed_form.tpl.htm");
+//
+// // Load table definition from file
+// $app->tform->loadFormDef($tform_def_file);
+//
+// // Importing ID
+// $this->id = $_SESSION['s']['user']['userid'];
+// $_POST['id'] = $_SESSION['s']['user']['userid'];
+//
+// if(count($_POST) > 1) {
+// $this->dataRecord = $_POST;
+// $this->onSubmit();
+// } else {
+// $this->onShow();
+// }
+// }
+//
+// function onBeforeInsert() {
+// global $app, $conf;
+//
+// if(!in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
+// $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
+// }
+// }
+//
+// function onInsert() {
+// die('No inserts allowed.');
+// }
+//
+// function onBeforeUpdate() {
+// global $app, $conf;
+//
+// if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.';
+//
+// $_SESSION['s']['user']['language'] = $_POST['language'];
+// $_SESSION['s']['language'] = $_POST['language'];
+//
+// if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
+// $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
+// }
+// }
+//
+//
+//}
+//
+//$page = new page_action;
+//$page->onLoad();
+
+echo '<h2 class="frmTextHead">Default-v2 Settings</h2><p>No settings for this theme</p>';
+?>
diff --git a/interface/web/tools/form/default-v2_settings.tform.php b/interface/web/tools/form/default-v2_settings.tform.php
new file mode 100644
index 0000000..1819f85
--- /dev/null
+++ b/interface/web/tools/form/default-v2_settings.tform.php
@@ -0,0 +1,137 @@
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ Form Definition
+
+ Tabellendefinition
+
+ Datentypen:
+ - INTEGER (Wandelt Ausdr�cke in Int um)
+ - DOUBLE
+ - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
+ - VARCHAR (kein weiterer Format Check)
+ - TEXT (kein weiterer Format Check)
+ - DATE (Datumsformat, Timestamp Umwandlung)
+
+ Formtype:
+ - TEXT (normales Textfeld)
+ - TEXTAREA (normales Textfeld)
+ - PASSWORD (Feldinhalt wird nicht angezeigt)
+ - SELECT (Gibt Werte als option Feld aus)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hinweis:
+ Das ID-Feld ist nicht bei den Table Values einzuf�gen.
+
+
+*/
+
+$form['title'] = 'Default-v2 Settings';
+$form['description'] = '';
+$form['name'] = 'default-v2';
+$form['action'] = 'default-v2_settings.php';
+$form['db_table'] = 'sys_user'; // needs to be 'sys_user_theme'
+$form['db_table_idx'] = 'userid'; //??
+$form["db_history"] = "no";
+$form['tab_default'] = 'main';
+$form['list_default'] = 'index.php';
+$form['auth'] = 'no'; //?
+
+//* 0 = id of the user, > 0 id must match with id of current user
+$form['auth_preset']['userid'] = 0;
+//* 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form['auth_preset']['groupid'] = 0;
+
+//** Permissions are: r = read, i = insert, u = update, d = delete
+$form['auth_preset']['perm_user'] = 'riud';
+$form['auth_preset']['perm_group'] = 'riud';
+$form['auth_preset']['perm_other'] = '';
+
+//* Pick out modules
+//* TODO: limit to activated modules of the user
+$modules_list = array();
+$handle = @opendir(ISPC_WEB_PATH);
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_dir(ISPC_WEB_PATH."/$file")) {
+ if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer' && $file != 'mailuser') {
+ $modules_list[$file] = $file;
+ }
+ }
+ }
+}
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+//* Load themes
+$themes_list = array();
+$handle = @opendir(ISPC_THEMES_PATH);
+while ($file = @readdir ($handle)) {
+ if (substr($file, 0, 1) != '.') {
+ if(@is_dir(ISPC_THEMES_PATH."/$file")) {
+ $themes_list[$file] = $file;
+ }
+ }
+}
+
+$form['tabs']['main'] = array (
+ 'title' => 'Settings',
+ 'width' => 80,
+ 'template' => 'templates/interface_settings.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+
+
+?>
diff --git a/interface/web/tools/form/interface_settings.tform.php b/interface/web/tools/form/interface_settings.tform.php
new file mode 100644
index 0000000..b43e1c6
--- /dev/null
+++ b/interface/web/tools/form/interface_settings.tform.php
@@ -0,0 +1,181 @@
+<?php
+
+/*
+Copyright (c) 2005, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ Form Definition
+
+ Tabellendefinition
+
+ Datentypen:
+ - INTEGER (Wandelt Ausdr�cke in Int um)
+ - DOUBLE
+ - CURRENCY (Formatiert Zahlen nach W�hrungsnotation)
+ - VARCHAR (kein weiterer Format Check)
+ - TEXT (kein weiterer Format Check)
+ - DATE (Datumsformat, Timestamp Umwandlung)
+
+ Formtype:
+ - TEXT (normales Textfeld)
+ - TEXTAREA (normales Textfeld)
+ - PASSWORD (Feldinhalt wird nicht angezeigt)
+ - SELECT (Gibt Werte als option Feld aus)
+ - RADIO
+ - CHECKBOX
+ - CHECKBOXARRAY
+ - FILE
+
+ VALUE:
+ - Wert oder Array
+
+ Hinweis:
+ Das ID-Feld ist nicht bei den Table Values einzuf�gen.
+
+
+*/
+
+$form['title'] = 'Interface Settings';
+$form['description'] = '';
+$form['name'] = 'interface';
+$form['action'] = 'interface_settings.php';
+$form['db_table'] = 'sys_user';
+$form['db_table_idx'] = 'userid';
+$form["db_history"] = "no";
+$form['tab_default'] = 'main';
+$form['list_default'] = 'index.php';
+$form['auth'] = 'no'; //??
+
+//* 0 = id of the user, > 0 id must match with id of current user
+$form['auth_preset']['userid'] = 0;
+//* 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form['auth_preset']['groupid'] = 0;
+
+//** Permissions are: r = read, i = insert, u = update, d = delete
+$form['auth_preset']['perm_user'] = 'riud';
+$form['auth_preset']['perm_group'] = 'riud';
+$form['auth_preset']['perm_other'] = '';
+
+//* Pick out modules
+//* TODO: limit to activated modules of the user
+$modules_list = array();
+$handle = @opendir(ISPC_WEB_PATH);
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_dir(ISPC_WEB_PATH."/$file")) {
+ if(is_file(ISPC_WEB_PATH."/$file/lib/module.conf.php") and $file != 'login' && $file != 'designer' && $file != 'mailuser') {
+ $modules_list[$file] = $file;
+ }
+ }
+ }
+}
+
+//* Languages
+$language_list = array();
+$handle = @opendir(ISPC_ROOT_PATH.'/lib/lang');
+while ($file = @readdir ($handle)) {
+ if ($file != '.' && $file != '..') {
+ if(@is_file(ISPC_ROOT_PATH.'/lib/lang/'.$file) and substr($file,-4,4) == '.lng') {
+ $tmp = substr($file, 0, 2);
+ $language_list[$tmp] = $tmp;
+ }
+ }
+}
+
+//* Load themes
+$themes_list = array();
+$handle = @opendir(ISPC_THEMES_PATH);
+while ($file = @readdir ($handle)) {
+ if (substr($file, 0, 1) != '.') {
+ if(@is_dir(ISPC_THEMES_PATH."/$file")) {
+ $themes_list[$file] = $file;
+ }
+ }
+}
+
+$form['tabs']['main'] = array (
+ 'title' => 'Settings',
+ 'width' => 80,
+ 'template' => 'templates/interface_settings.htm',
+ 'fields' => array (
+ ##################################
+ # Beginn Datenbankfelder
+ ##################################
+ 'startmodule' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $modules_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'language' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'language_is_empty'),
+ 1 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[a-z]{2}$/i',
+ 'errmsg'=> 'language_regex_mismatch'),
+ ),
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => '',
+ 'value' => $language_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '2',
+ 'rows' => '',
+ 'cols' => ''
+ ),
+ 'app_theme' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'regex' => '',
+ 'errmsg' => '',
+ 'default' => 'default',
+ 'value' => $themes_list,
+ 'separator' => '',
+ 'width' => '30',
+ 'maxlength' => '255',
+ 'rows' => '',
+ 'cols' => ''
+ )
+ ##################################
+ # ENDE Datenbankfelder
+ ##################################
+ )
+);
+
+
+?>
diff --git a/interface/web/tools/interface_settings.php b/interface/web/tools/interface_settings.php
new file mode 100644
index 0000000..f3751df
--- /dev/null
+++ b/interface/web/tools/interface_settings.php
@@ -0,0 +1,108 @@
+<?php
+/*
+Copyright (c) 2008, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of ISPConfig nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/interface_settings.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//* Check permissions for module
+$app->auth->check_module_permissions('tools');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onLoad() {
+ global $app, $conf, $tform_def_file;
+
+ // Loading template classes and initialize template
+ if(!is_object($app->tpl)) $app->uses('tpl');
+ if(!is_object($app->tform)) $app->uses('tform');
+
+ $app->tpl->newTemplate("tabbed_form.tpl.htm");
+
+ // Load table definition from file
+ $app->tform->loadFormDef($tform_def_file);
+
+ // Importing ID
+ $this->id = $_SESSION['s']['user']['userid'];
+ $_POST['id'] = $_SESSION['s']['user']['userid'];
+
+ if(count($_POST) > 1) {
+ $this->dataRecord = $_POST;
+ $this->onSubmit();
+ } else {
+ $this->onShow();
+ }
+ }
+
+ function onBeforeInsert() {
+ global $app, $conf;
+
+ if(!in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
+ $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
+ }
+ }
+
+ function onInsert() {
+ die('No inserts allowed.');
+ }
+
+ function onBeforeUpdate() {
+ global $app, $conf;
+
+ if($conf['demo_mode'] == true && $this->id <= 3) $app->tform->errorMessage .= 'This function is disabled in demo mode.';
+
+ $_SESSION['s']['user']['language'] = $_POST['language'];
+ $_SESSION['s']['language'] = $_POST['language'];
+
+ if(@is_array($this->dataRecord['modules']) && !in_array($this->dataRecord['startmodule'],$this->dataRecord['modules'])) {
+ $app->tform->errorMessage .= $app->tform->wordbook['startmodule_err'];
+ }
+ }
+
+
+}
+
+$page = new page_action;
+$page->onLoad();
+
+?>
diff --git a/interface/web/tools/lib/interface.d/default-v2.menu.php b/interface/web/tools/lib/interface.d/default-v2.menu.php
new file mode 100644
index 0000000..6d6b0c0
--- /dev/null
+++ b/interface/web/tools/lib/interface.d/default-v2.menu.php
@@ -0,0 +1,7 @@
+<?php
+
+$items[] = array( 'title' => 'Default-v2 Theme',
+ 'target' => 'content',
+ 'link' => 'tools/default-v2_settings.php',
+ 'html_id' => 'default-v2_settings');
+?>
diff --git a/interface/web/tools/lib/lang/de.lng b/interface/web/tools/lib/lang/de.lng
index 2162baa..3c04ff1 100644
--- a/interface/web/tools/lib/lang/de.lng
+++ b/interface/web/tools/lib/lang/de.lng
@@ -2,6 +2,7 @@
$wb['User Settings'] = 'Benutzereinstellungen';
$wb['Settings'] = 'Einstellungen';
$wb['ISPConfig Tools'] = 'Einstellungen';
+$wb['Interface'] = 'Interface';
$wb['Password and Language'] = 'Passwort und Sprache';
$wb['ispconfig_tools_note'] = 'Dieses Modul erlaubt Ihnen, das Passwort und die Sprache zu ändern sowie einen Resync der DNS-Records anzustoßen.';
$wb['Resync'] = 'Resync';
diff --git a/interface/web/tools/lib/lang/de_default-v2.lng b/interface/web/tools/lib/lang/de_default-v2.lng
new file mode 100644
index 0000000..b60be64
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_default-v2.lng
@@ -0,0 +1,5 @@
+<?php
+$wb['language_txt'] = 'Sprache';
+$wb['startmodule_txt'] = 'Startmodul';
+$wb['app_theme_txt'] = 'Design';
+?>
diff --git a/interface/web/tools/lib/lang/de_interface.lng b/interface/web/tools/lib/lang/de_interface.lng
new file mode 100644
index 0000000..b60be64
--- /dev/null
+++ b/interface/web/tools/lib/lang/de_interface.lng
@@ -0,0 +1,5 @@
+<?php
+$wb['language_txt'] = 'Sprache';
+$wb['startmodule_txt'] = 'Startmodul';
+$wb['app_theme_txt'] = 'Design';
+?>
diff --git a/interface/web/tools/lib/lang/en.lng b/interface/web/tools/lib/lang/en.lng
index fee9301..7794543 100644
--- a/interface/web/tools/lib/lang/en.lng
+++ b/interface/web/tools/lib/lang/en.lng
@@ -2,6 +2,7 @@
$wb['User Settings'] = 'User Settings';
$wb['Settings'] = 'Settings';
$wb['ISPConfig Tools'] = 'ISPConfig Tools';
+$wb['Interface'] = 'Interface';
$wb['Password and Language'] = 'Password and Language';
$wb['ispconfig_tools_note'] = 'This module allows you to change the password and language and to start a resync of the DNS records.';
$wb['Sync Tools'] = 'Sync Tools';
diff --git a/interface/web/tools/lib/lang/en_default-v2.lng b/interface/web/tools/lib/lang/en_default-v2.lng
new file mode 100644
index 0000000..b702ba3
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_default-v2.lng
@@ -0,0 +1,5 @@
+<?php
+$wb["language_txt"] = 'Language';
+$wb["startmodule_txt"] = 'Startmodule';
+$wb["app_theme_txt"] = 'Design';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_interface.lng b/interface/web/tools/lib/lang/en_interface.lng
new file mode 100644
index 0000000..b702ba3
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_interface.lng
@@ -0,0 +1,5 @@
+<?php
+$wb["language_txt"] = 'Language';
+$wb["startmodule_txt"] = 'Startmodule';
+$wb["app_theme_txt"] = 'Design';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
index 3190d70..d053779 100644
--- a/interface/web/tools/lib/module.conf.php
+++ b/interface/web/tools/lib/module.conf.php
@@ -2,8 +2,8 @@
global $conf;
-$module['name'] = 'tools';
-$module['title'] = 'top_menu_tools';
+$module['name'] = 'tools';
+$module['title'] = 'top_menu_tools';
$module['template'] = 'module.tpl.htm';
$module['startpage'] = 'tools/index.php';
$module['tab_width'] = '60';
@@ -12,28 +12,46 @@
//**** Change User password
$items = array();
-$items[] = array( 'title' => 'Password and Language',
- 'target' => 'content',
- 'link' => 'tools/user_settings.php',
- 'html_id'=> 'user_settings');
+$items[] = array( 'title' => 'Password and Language',
+ 'target' => 'content',
+ 'link' => 'tools/user_settings.php',
+ 'html_id' => 'user_settings');
-$module['nav'][] = array( 'title' => 'User Settings',
- 'open' => 1,
- 'items' => $items);
+$module['nav'][] = array( 'title' => 'User Settings',
+ 'open' => 1,
+ 'items' => $items);
+unset($items);
+//**** Change interface settings + load settings page of the activated theme
+$items = array();
+
+$items[] = array( 'title' => 'Interface',
+ 'target' => 'content',
+ 'link' => 'tools/interface_settings.php',
+ 'html_id' => 'interface_settings');
+
+include_once(ISPC_WEB_PATH.'/tools/lib/interface.d/' . $_SESSION['s']['user']['app_theme'] . '.menu.php');
+
+$module['nav'][] = array( 'title' => 'Interface',
+ 'open' => 1,
+ 'items' => $items);
+
+unset($items);
+
+//**** Load additional menu items
$menu_dir = ISPC_WEB_PATH.'/tools/lib/menu.d';
if (is_dir($menu_dir)) {
- if ($dh = opendir($menu_dir)) {
- //** Go through all files in the menu dir
- while (($file = readdir($dh)) !== false) {
- if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php' && $file != 'dns_resync.menu.php') {
- include_once($menu_dir.'/'.$file);
- }
- }
- }
+ if ($dh = opendir($menu_dir)) {
+ //** Go through all files in the menu dir
+ while (($file = readdir($dh)) !== false) {
+ if ($file != '.' && $file != '..' && substr($file, -9, 9) == '.menu.php' && $file != 'dns_resync.menu.php') {
+ include_once($menu_dir . '/' . $file);
+ }
+ }
+ }
}
?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/default-v2_settings.htm b/interface/web/tools/templates/default-v2_settings.htm
new file mode 100644
index 0000000..045fc02
--- /dev/null
+++ b/interface/web/tools/templates/default-v2_settings.htm
@@ -0,0 +1,37 @@
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_tools_interface">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="startmodule">{tmpl_var name='startmodule_txt'}</label>
+ <select name="startmodule" id="startmodule" class="selectInput formLengthHalf">
+ {tmpl_var name='startmodule'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="language">{tmpl_var name='language_txt'}</label>
+ <select name="language" id="language" class="selectInput flags">
+ {tmpl_var name='language'}
+ </select>
+ </div>
+ <!-- TODO: If user theme change is activated -->
+ <div class="ctrlHolder">
+ <label for="app_theme">{tmpl_var name='app_theme_txt'}</label>
+ <select name="app_theme" id="app_theme" class="selectInput formLengthHalf">
+ {tmpl_var name='app_theme'}
+ </select>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','tools/interface_settings.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('tools/index.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
\ No newline at end of file
diff --git a/interface/web/tools/templates/interface_settings.htm b/interface/web/tools/templates/interface_settings.htm
new file mode 100644
index 0000000..045fc02
--- /dev/null
+++ b/interface/web/tools/templates/interface_settings.htm
@@ -0,0 +1,37 @@
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_tools_interface">
+
+ <div class="pnl_formsarea">
+ <fieldset class="inlineLabels">
+ <div class="ctrlHolder">
+ <label for="startmodule">{tmpl_var name='startmodule_txt'}</label>
+ <select name="startmodule" id="startmodule" class="selectInput formLengthHalf">
+ {tmpl_var name='startmodule'}
+ </select>
+ </div>
+ <div class="ctrlHolder">
+ <label for="language">{tmpl_var name='language_txt'}</label>
+ <select name="language" id="language" class="selectInput flags">
+ {tmpl_var name='language'}
+ </select>
+ </div>
+ <!-- TODO: If user theme change is activated -->
+ <div class="ctrlHolder">
+ <label for="app_theme">{tmpl_var name='app_theme_txt'}</label>
+ <select name="app_theme" id="app_theme" class="selectInput formLengthHalf">
+ {tmpl_var name='app_theme'}
+ </select>
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+ <div class="buttonHolder buttons">
+ <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','tools/interface_settings.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+ <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('tools/index.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+ </div>
+ </div>
+
+</div>
\ No newline at end of file
--
Gitblit v1.9.1