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"> </td>
+ <td class="frmText11"> </td>
+ </tr>
+ <tr>
+ <td> </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>
+ <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