From 85c90f882e3615a378eae6cac3b4104e93e91b8a Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 01 Aug 2008 16:37:32 -0400
Subject: [PATCH] - Added a tools module. - Added a form to change the language and password of the current user.

---
 install/tpl/config.inc.php.master                |    2 
 interface/web/tools/lib/module.conf.php          |   38 ++++++
 interface/web/tools/form/user_settings.tform.php |  143 +++++++++++++++++++++++
 interface/lib/classes/tform_actions.inc.php      |    2 
 interface/web/tools/templates/user_settings.htm  |   28 ++++
 interface/web/tools/index.php                    |   50 ++++++++
 interface/web/tools/lib/lang/en_usersettings.lng |    6 +
 interface/web/tools/user_settings.php            |   91 +++++++++++++++
 8 files changed, 359 insertions(+), 1 deletions(-)

diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master
index e058a59..dcb3511 100644
--- a/install/tpl/config.inc.php.master
+++ b/install/tpl/config.inc.php.master
@@ -59,7 +59,7 @@
 define('ISPC_CACHE_PATH',  ISPC_ROOT_PATH.'/cache');
 
 //** Interface settings
-define('ISPC_INTERFACE_MODULES_ENABLED', 'mail,sites,dns');
+define('ISPC_INTERFACE_MODULES_ENABLED', 'mail,sites,dns,tools');
 
 
 /*
diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index 7b9a5a9..023595e 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -60,11 +60,13 @@
 				
 				// show print version of the form
 				if(isset($_GET["print_form"]) && $_GET["print_form"] == 1) {
+					die('Function disabled.');
 					$this->onPrintForm();
 				}
 				
 				// send this form by email
 				if(isset($_GET["send_form_by_mail"]) && $_GET["send_form_by_mail"] == 1) {
+					die('Function disabled.');
 					$this->onMailSendForm();
 				}
 
diff --git a/interface/web/tools/form/user_settings.tform.php b/interface/web/tools/form/user_settings.tform.php
new file mode 100644
index 0000000..4ca9442
--- /dev/null
+++ b/interface/web/tools/form/user_settings.tform.php
@@ -0,0 +1,143 @@
+<?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'] 			= 'User Settings';
+$form['description'] 	= 'Form to edit the user password and language.';
+$form['name'] 			= 'usersettings';
+$form['action']			= 'user_settings.php';
+$form['db_table']		= 'sys_user';
+$form['db_table_idx']	= 'userid';
+$form["db_history"]		= "no";
+$form['tab_default']	= 'users';
+$form['list_default']	= 'index.php';
+$form['auth']			= 'yes';
+
+//* 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'] = '';
+
+//* 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;
+        }
+	}
+} 
+
+$form['tabs']['users'] = array (
+	'title' 	=> 'Settings',
+	'width' 	=> 80,
+	'template' 	=> 'templates/user_settings.htm',
+	'fields' 	=> array (
+	##################################
+	# Beginn Datenbankfelder
+	##################################
+		'passwort' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'PASSWORD',
+			'regex'		=> '',
+			'errmsg'	=> '',
+			'default'	=> '',
+			'value'		=> '',
+			'separator'	=> '',
+			'width'		=> '15',
+			'maxlength'	=> '100',
+			'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'		=> ''
+		)
+	##################################
+	# ENDE Datenbankfelder
+	##################################
+	)
+);
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/index.php b/interface/web/tools/index.php
new file mode 100644
index 0000000..e9010cc
--- /dev/null
+++ b/interface/web/tools/index.php
@@ -0,0 +1,50 @@
+<?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/user_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');
+
+echo $app->lng('ISPConfig Tools');
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/lang/en_usersettings.lng b/interface/web/tools/lib/lang/en_usersettings.lng
new file mode 100644
index 0000000..53a989a
--- /dev/null
+++ b/interface/web/tools/lib/lang/en_usersettings.lng
@@ -0,0 +1,6 @@
+<?php
+$wb["passwort_txt"] = 'Passwort';
+$wb["language_txt"] = 'Language';
+$wb["btn_save_txt"] = 'Save';
+$wb["btn_cancel_txt"] = 'Cancel';
+?>
\ No newline at end of file
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
new file mode 100644
index 0000000..78d6120
--- /dev/null
+++ b/interface/web/tools/lib/module.conf.php
@@ -0,0 +1,38 @@
+<?php
+
+global $conf;
+
+$module['name'] 		= 'tools';
+$module['title'] 		= 'Tools';
+$module['template'] 	= 'module.tpl.htm';
+$module['startpage'] 	= 'tools/index.php';
+$module['tab_width']    = '60';
+
+
+//**** Change User password
+$items = array();
+
+$items[] = array( 'title' 	=> 'Password and Language',
+				  'target' 	=> 'content',
+				  'link'	=> 'tools/user_settings.php');
+
+
+$module['nav'][] = array(	'title'	=> 'User Settings',
+							'open' 	=> 1,
+							'items'	=> $items);
+
+
+$menu_dir = ISPC_WEB_PATH.'/tools/lib/menu.d';
+		
+if (is_dir($menu_dir)) {
+	if ($dh = opendir($menu_dir)) {
+		//** Go trough all files in the menu dir
+		while (($file = readdir($dh)) !== false) {
+			if($file != '.' && $file != '..' && substr($file,-9,9) == '.menu.php') {
+				include_once($menu_dir.'/'.$file);
+			}
+		}
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/interface/web/tools/templates/user_settings.htm b/interface/web/tools/templates/user_settings.htm
new file mode 100644
index 0000000..32d8f4d
--- /dev/null
+++ b/interface/web/tools/templates/user_settings.htm
@@ -0,0 +1,28 @@
+<table width="500" border="0" cellspacing="0" cellpadding="2">
+  <tr>
+    <td class="frmText11">{tmpl_var name='passwort_txt'}:</td>
+    <td class="frmText11"><input name="passwort" type="password" class="text" value="{tmpl_var name='passwort'}" size="15" maxlength="100"></td>
+  </tr>
+  <tr>
+    <td class="frmText11">{tmpl_var name='passwort_txt'}:</td>
+    <td class="frmText11"><input name="passwort2" type="password" class="text" value="" size="15" maxlength="100"></td>
+  </tr>
+  <tr>
+    <td class="frmText11">{tmpl_var name='language_txt'}:</td>
+    <td class="frmText11">
+		<select name="language" class="text">
+			{tmpl_var name='language'}
+		</select>
+	</td>
+  </tr>  <tr>
+    <td class="frmText11">&nbsp;</td>
+    <td class="frmText11">&nbsp;</td>
+  </tr>
+  <tr>
+    <td>&nbsp;</td>
+    <td><input name="btn_save" type="button" class="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','tools/user_settings.php');"><div class="buttonEnding"></div>&nbsp;
+      <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('tools/index.php');"><div class="buttonEnding"></div>
+    </td>
+  </tr>
+</table>
+<input type="hidden" name="id" value="{tmpl_var name='id'}">
\ No newline at end of file
diff --git a/interface/web/tools/user_settings.php b/interface/web/tools/user_settings.php
new file mode 100644
index 0000000..eb52f58
--- /dev/null
+++ b/interface/web/tools/user_settings.php
@@ -0,0 +1,91 @@
+<?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/user_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'];
+
+                if(count($_POST) > 1) {
+                        $this->dataRecord = $_POST;
+                        $this->onSubmit();
+                } else {
+                        $this->onShow();
+                }
+        }
+		
+	function onBeforeUpdate() {
+		global $app, $conf;
+		
+		if($_POST['passwort'] != $_POST['passwort2']) {
+			$app->tform->errorMessage = 'The passwords in the second password field does not match the first password.';
+		}
+		
+	}
+	
+	
+}
+
+$page = new page_action;
+$page->onLoad();
+
+?>
\ No newline at end of file

--
Gitblit v1.9.1