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