From 76a1008a5c4d6bacc000eec590006ea57c7dbb4f Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Sun, 20 May 2007 14:00:24 -0400
Subject: [PATCH] updated client form
---
interface/web/client/client_edit.php | 64 ++++++++
interface/web/client/templates/client_edit_limits.htm | 44 ++++++
interface/lib/classes/tform.inc.php | 7
interface/web/client/form/client.tform.php | 9 +
interface/lib/classes/validate_client.inc.php | 66 +++++++++
interface/web/client/templates/client_edit_address.htm | 92 +++++++++++++
interface/web/client/lib/lang/en_client.lng | 84 ++++++------
7 files changed, 319 insertions(+), 47 deletions(-)
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index 0fed37f..d8c58a3 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -104,10 +104,11 @@
var $errorMessage = '';
var $dateformat = "d.m.Y";
- var $formDef;
+ var $formDef;
var $wordbook;
var $module;
var $primary_id;
+ var $diffrec = array();
/**
* Laden der Tabellendefinition
@@ -611,7 +612,7 @@
$validator_class = $validator['class'];
$validator_function = $validator['function'];
$app->uses($validator_class);
- $this->errorMessage .= $app->$validator_class->$validator_function($validator);
+ $this->errorMessage .= $app->$validator_class->$validator_function($field_name, $field_value, $validator);
} else {
$this->errorMessage .= "Custom validator class or function is empty<br>\r\n";
}
@@ -852,6 +853,8 @@
// Insert the server_id, if the record has a server_id
$server_id = ($record_old["server_id"] > 0)?$record_old["server_id"]:0;
+
+ $this->diffrec = $diffrec;
if(count($diffrec) > 0) {
diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
new file mode 100644
index 0000000..a7b7ae8
--- /dev/null
+++ b/interface/lib/classes/validate_client.inc.php
@@ -0,0 +1,66 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, Falko Timme, 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.
+*/
+
+
+class validate_client {
+
+ /*
+ Validator function to check if a username is unique.
+ */
+ function username_unique($field_name, $field_value, $validator) {
+ global $app;
+
+ if($app->tform->action == 'NEW') {
+ $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."'");
+ if($num_rec["number"] > 0) {
+ $errmsg = $validator['errmsg'];
+ if(isset($this->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg]."<br>\r\n";
+ } else {
+ return $errmsg."<br>\r\n";
+ }
+ }
+ } else {
+ $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."' AND client_id != ".$app->tform->primary_id);
+ if($num_rec["number"] > 0) {
+ $errmsg = $validator['errmsg'];
+ if(isset($app->tform->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg]."<br>\r\n";
+ } else {
+ return $errmsg."<br>\r\n";
+ }
+ }
+ }
+ }
+
+
+
+
+}
\ No newline at end of file
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index d66d612..68b8d3a 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -49,8 +49,68 @@
// Loading classes
$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
-// let tform_actions handle the page
-$app->tform_actions->onLoad();
+class page_action extends tform_actions {
+
+ /*
+ This function is called automatically right after
+ the data was successful inserted in the database.
+ */
+ function onAfterInsert() {
+ global $app;
+ // Create the group for the client
+ $sql = "INSERT INTO sys_group (name,description,client_id) VALUES ('".addslashes($this->dataRecord["username"])."','',".$this->id.")";
+ $app->db->query($sql);
+ $groupid = $app->db->insertID();
+
+ $username = addslashes($this->dataRecord["username"]);
+ $password = addslashes($this->dataRecord["password"]);
+ $modules = 'mail';
+ $startmodule = 'mail';
+ $usertheme = addslashes($this->dataRecord["usertheme"]);
+ $type = 'user';
+ $active = 1;
+ $language = addslashes($this->dataRecord["language"]);
+
+ // Create the controlpaneluser for the client
+ $sql = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id)
+ VALUES ('$username',md5('$password'),'$modules','$startmodule','$usertheme','$type','$active','$language',$groupid,$groupid,".$this->id.")";
+ $app->db->query($sql);
+ }
+
+
+ /*
+ This function is called automatically right after
+ the data was successful updated in the database.
+ */
+ function onAfterUpdate() {
+ global $app;
+
+ // username changed
+ if(isset($app->tform->diffrec['username'])) {
+ $username = addslashes($this->dataRecord["username"]);
+ $client_id = $this->id;
+ $sql = "UPDATE sys_user SET username = '$username' WHERE client_id = $client_id";
+ $app->db->query($sql);
+ $sql = "UPDATE sys_group SET name = '$username' WHERE client_id = $client_id";
+ $app->db->query($sql);
+ }
+
+ // password changed
+ if($this->dataRecord["password"] != '') {
+ $password = addslashes($this->dataRecord["password"]);
+ $sql = "UPDATE sys_user SET passwort = md5('$password') WHERE client_id = $client_id";
+ }
+
+
+
+ }
+
+
+}
+
+$page = new page_action;
+$page->onLoad();
?>
\ No newline at end of file
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 491d010..d783d2f 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -86,6 +86,13 @@
'username' => array (
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'username_error_empty'),
+ 1 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_client',
+ 'function' => 'username_unique',
+ 'errmsg'=> 'username_error_unique'),
+ ),
'default' => '',
'value' => '',
'separator' => '',
@@ -120,7 +127,7 @@
'datatype' => 'VARCHAR',
'formtype' => 'SELECT',
'default' => 'default',
- 'value' => array('default' => 'default','grey' => 'grey'),
+ 'value' => array('default' => 'default'),
'separator' => '',
'width' => '30',
'maxlength' => '255',
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 0accf4b..a471785 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -1,43 +1,43 @@
-<?php
-$wb["username_txt"] = 'Username';
-$wb["password_txt"] = 'Password';
-$wb["language_txt"] = 'Language';
-$wb["usertheme_txt"] = 'Theme';
-$wb["btn_save_txt"] = 'Save';
-$wb["btn_cancel_txt"] = 'Cancel';
-$wb["limit_maildomain_txt"] = 'Max. number of email domains';
-$wb["limit_mailbox_txt"] = 'Max. number of mailboxes';
-$wb["limit_mailalias_txt"] = 'Max. number of email aliases and redirects';
-$wb["limit_mailcatchall_txt"] = 'Max. number of email catchall accounts';
-$wb["limit_mailrouting_txt"] = 'Max. number of email routes';
-$wb["limit_mailfilter_txt"] = 'Max. number of email filters';
-$wb["limit_fetchmail_txt"] = 'Max. number of fetchmail accounts';
-$wb["limit_mailquota_txt"] = 'Mailbox quota';
-$wb["company_name_txt"] = 'Company name';
-$wb["contact_name_txt"] = 'Contact name';
-$wb["street_txt"] = 'Street';
-$wb["zip_txt"] = 'ZIP';
-$wb["city_txt"] = 'City';
-$wb["state_txt"] = 'State';
-$wb["country_txt"] = 'Country';
-$wb["telephone_txt"] = 'Telephone';
-$wb["mobile_txt"] = 'Mobile';
-$wb["fax_txt"] = 'Fax';
-$wb["email_txt"] = 'Email';
-$wb["internet_txt"] = 'Internet';
-$wb["icq_txt"] = 'ICQ';
-$wb["notes_txt"] = 'Notes';
-$wb["company_txt"] = 'Company';
-$wb["title_txt"] = 'Title';
-$wb["firstname_txt"] = 'Firstname';
-$wb["surname_txt"] = 'Surname';
-$wb["limit_client_txt"] = 'limit_client';
-$wb["limit_domain_txt"] = 'limit_domain';
-$wb["limit_subdomain_txt"] = 'limit_subdomain';
-$wb["limit_webquota_txt"] = 'limit_webquota';
-$wb["limit_database_txt"] = 'limit_database';
-$wb["ip_address_txt"] = 'ip_address';
-$wb["limit_client_error_notint"] = 'Client Limit is not a number.';
-$wb["firstname_error_empty"] = 'Firstname is empty.';
-$wb["contact_error_empty"] = 'Contact name is empty.';
+<?php
+$wb["limit_maildomain_txt"] = 'Max. number of email domains';
+$wb["limit_mailbox_txt"] = 'Max. number of mailboxes';
+$wb["limit_mailalias_txt"] = 'Max. number of email aliases and redirects';
+$wb["limit_mailcatchall_txt"] = 'Max. number of email catchall accounts';
+$wb["limit_mailrouting_txt"] = 'Max. number of email routes';
+$wb["limit_mailfilter_txt"] = 'Max. number of email filters';
+$wb["limit_fetchmail_txt"] = 'Max. number of fetchmail accounts';
+$wb["limit_mailquota_txt"] = 'Mailbox quota';
+$wb["btn_save_txt"] = 'Save';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb["company_name_txt"] = 'Company name';
+$wb["contact_name_txt"] = 'Contact name';
+$wb["username_txt"] = 'Username';
+$wb["password_txt"] = 'Password';
+$wb["language_txt"] = 'Language';
+$wb["usertheme_txt"] = 'Theme';
+$wb["street_txt"] = 'Street';
+$wb["zip_txt"] = 'ZIP';
+$wb["city_txt"] = 'City';
+$wb["state_txt"] = 'State';
+$wb["country_txt"] = 'Country';
+$wb["telephone_txt"] = 'Telephone';
+$wb["mobile_txt"] = 'Mobile';
+$wb["fax_txt"] = 'Fax';
+$wb["email_txt"] = 'Email';
+$wb["internet_txt"] = 'Internet';
+$wb["icq_txt"] = 'ICQ';
+$wb["notes_txt"] = 'Notes';
+$wb["company_txt"] = 'Company';
+$wb["title_txt"] = 'Title';
+$wb["firstname_txt"] = 'Firstname';
+$wb["surname_txt"] = 'Surname';
+$wb["limit_client_txt"] = 'limit_client';
+$wb["limit_domain_txt"] = 'limit_domain';
+$wb["limit_subdomain_txt"] = 'limit_subdomain';
+$wb["limit_webquota_txt"] = 'limit_webquota';
+$wb["limit_database_txt"] = 'limit_database';
+$wb["ip_address_txt"] = 'ip_address';
+$wb["limit_client_error_notint"] = 'Client Limit is not a number.';
+$wb["firstname_error_empty"] = 'Firstname is empty.';
+$wb["contact_error_empty"] = 'Contact name is empty.';
?>
\ No newline at end of file
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
new file mode 100644
index 0000000..499e230
--- /dev/null
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -0,0 +1,92 @@
+<table width="500" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td class="frmText11">{tmpl_var name='company_name_txt'}:</td>
+ <td class="frmText11"><input name="company_name" type="text" class="text" value="{tmpl_var name='company_name'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='contact_name_txt'}:</td>
+ <td class="frmText11"><input name="contact_name" type="text" class="text" value="{tmpl_var name='contact_name'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='username_txt'}:</td>
+ <td class="frmText11"><input name="username" type="text" class="text" value="{tmpl_var name='username'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='password_txt'}:</td>
+ <td class="frmText11"><input name="password" type="password" class="text" value="{tmpl_var name='password'}" size="30" maxlength="255"></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">{tmpl_var name='usertheme_txt'}:</td>
+ <td class="frmText11">
+ <select name="usertheme" class="text">
+ {tmpl_var name='usertheme'}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='street_txt'}:</td>
+ <td class="frmText11"><input name="street" type="text" class="text" value="{tmpl_var name='street'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='zip_txt'}:</td>
+ <td class="frmText11"><input name="zip" type="text" class="text" value="{tmpl_var name='zip'}" size="10" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='city_txt'}:</td>
+ <td class="frmText11"><input name="city" type="text" class="text" value="{tmpl_var name='city'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='state_txt'}:</td>
+ <td class="frmText11"><input name="state" type="text" class="text" value="{tmpl_var name='state'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='country_txt'}:</td>
+ <td class="frmText11"><input name="country" type="text" class="text" value="{tmpl_var name='country'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='telephone_txt'}:</td>
+ <td class="frmText11"><input name="telephone" type="text" class="text" value="{tmpl_var name='telephone'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='mobile_txt'}:</td>
+ <td class="frmText11"><input name="mobile" type="text" class="text" value="{tmpl_var name='mobile'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='fax_txt'}:</td>
+ <td class="frmText11"><input name="fax" type="text" class="text" value="{tmpl_var name='fax'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='email_txt'}:</td>
+ <td class="frmText11"><input name="email" type="text" class="text" value="{tmpl_var name='email'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='internet_txt'}:</td>
+ <td class="frmText11"><input name="internet" type="text" class="text" value="{tmpl_var name='internet'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='icq_txt'}:</td>
+ <td class="frmText11"><input name="icq" type="text" class="text" value="{tmpl_var name='icq'}" size="30" maxlength="255"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='notes_txt'}:</td>
+ <td class="frmText11"><textarea name='notes' cols='30' rows='10'>{tmpl_var name='notes'}</textarea></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','client/client_edit.php');"><div class="buttonEnding"></div>
+ <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.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/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
new file mode 100644
index 0000000..11ded73
--- /dev/null
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -0,0 +1,44 @@
+<table width="500" border="0" cellspacing="0" cellpadding="2">
+ <tr>
+ <td class="frmText11" width="280">{tmpl_var name='limit_maildomain_txt'}:</td>
+ <td class="frmText11" width="220"><input name="limit_maildomain" type="text" class="text" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailbox_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailbox" type="text" class="text" value="{tmpl_var name='limit_mailbox'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailalias_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailalias" type="text" class="text" value="{tmpl_var name='limit_mailalias'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailcatchall_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailcatchall" type="text" class="text" value="{tmpl_var name='limit_mailcatchall'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailrouting_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailrouting" type="text" class="text" value="{tmpl_var name='limit_mailrouting'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailfilter_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailfilter" type="text" class="text" value="{tmpl_var name='limit_mailfilter'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_fetchmail_txt'}:</td>
+ <td class="frmText11"><input name="limit_fetchmail" type="text" class="text" value="{tmpl_var name='limit_fetchmail'}" size="10" maxlength="10"></td>
+ </tr>
+ <tr>
+ <td class="frmText11">{tmpl_var name='limit_mailquota_txt'}:</td>
+ <td class="frmText11"><input name="limit_mailquota" type="text" class="text" value="{tmpl_var name='limit_mailquota'}" size="10" maxlength="10"> MB</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','client/client_edit.php');"><div class="buttonEnding"></div>
+ <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('client/client_list.php');"><div class="buttonEnding"></div>
+ </td>
+ </tr>
+</table>
+<input type="hidden" name="id" value="{tmpl_var name='id'}">
\ No newline at end of file
--
Gitblit v1.9.1