diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index d55a440e54faf87b433e22908fcb2018b5dded3f..d3796714996d2ae5453432bb633d05b08a224f5b 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -590,6 +590,27 @@ CREATE TABLE `spamfilter_wblist` ( -- +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `support_message` +-- + +CREATE TABLE `support_message` ( + `support_message_id` bigint(20) NOT NULL auto_increment, + `sys_userid` int(11) NOT NULL default '0', + `sys_groupid` int(11) NOT NULL default '0', + `sys_perm_user` varchar(5) default NULL, + `sys_perm_group` varchar(5) default NULL, + `sys_perm_other` varchar(5) default NULL, + `recipient_id` int(11) NOT NULL default '0', + `sender_id` int(11) NOT NULL default '0', + `subject` varchar(255) default NULL, + `message` varchar(255) default NULL, + `tstamp` int(11) NOT NULL default '1187707778', + PRIMARY KEY (`support_message_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + -- -------------------------------------------------------- -- diff --git a/interface/web/help/form/support_message.tform.php b/interface/web/help/form/support_message.tform.php new file mode 100644 index 0000000000000000000000000000000000000000..092150753a7915f0e95c8c6a1ce30fddb472e9d7 --- /dev/null +++ b/interface/web/help/form/support_message.tform.php @@ -0,0 +1,120 @@ +<?php + +//* Title of the form +$form["title"] = "Support Message"; + +//* Description of the form (optional) +$form["description"] = ""; + +//* Name of the form. The name shall not contain spaces or foreign characters +$form["name"] = "support_message"; + +//* The file that is used to call the form in the browser +$form["action"] = "support_message_edit.php"; + +//* The name of the database table that shall be used to store the data +$form["db_table"] = "support_message"; + +//* The name of the database table index field, this field must be a numeric auto increment column +$form["db_table_idx"] = "support_message_id"; + +//* Shall changes to this table be stored in the database history (sys_datalog) table. +//* This should be set to "yes" for all tables that store configuration information. +$form["db_history"] = "no"; // yes / no + +//* The name of the tab that is shown when the form is opened +$form["tab_default"] = "message"; + +//* The name of the default list file of this form +$form["list_default"] = "support_message_list.php"; + +//* Use the internal authentication system for this table. This should +//* be set to yes in most cases +$form["auth"] = 'yes'; // yes / no + +//* Authentocation presets. The defaults below does not need to be changed in most cases. +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user +$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user +$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete +$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete + + +//* Begin of the form definition of the first tab. The name of the tab is called "message". We refer +//* to this name in the $form["tab_default"] setting above. +$form["tabs"]['message'] = array ( + 'title' => "Message", // Title of the Tab + 'width' => 100, // Tab width + 'template' => "templates/support_message_edit.htm", // Template file name + 'fields' => array ( + ################################## + # Begin Datatable fields + ################################## + 'recipient_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT userid,username FROM sys_user WHERE {AUTHSQL} ORDER BY username', + 'keyfield' => 'userid', + 'valuefield' => 'username' + ), + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'recipient_id_is_not_integer'), + ), + 'value' => '' + ), + 'sender_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => 'SELECT userid,username FROM sys_user WHERE {AUTHSQL} ORDER BY username', + 'keyfield' => 'userid', + 'valuefield' => 'username' + ), + 'validators' => array ( 0 => array ( 'type' => 'ISINT', + 'errmsg'=> 'recipient_id_is_not_integer'), + ), + 'value' => '' + ), + 'subject' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'subject_is_empty'), + ), + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'message' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXTAREA', + 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', + 'errmsg'=> 'message_is_empty'), + ), + 'default' => '', + 'value' => '', + 'cols' => '30', + 'rows' => '10', + 'maxlength' => '255' + ), + 'tstamp' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'TEXT', + 'default' => time(), + 'value' => '', + 'width' => '30', + 'maxlength' => '30' + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + + +?> \ No newline at end of file diff --git a/interface/web/help/lib/admin.conf.php b/interface/web/help/lib/admin.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..ea21b3e5ebb21400853eebb9209a64554dcc2827 --- /dev/null +++ b/interface/web/help/lib/admin.conf.php @@ -0,0 +1,8 @@ +<?php + +/* + The admin.conf.php file contains menu definitions to be displayed in the administration modile. +*/ + + +?> \ No newline at end of file diff --git a/interface/web/help/lib/lang/en_support_message.lng b/interface/web/help/lib/lang/en_support_message.lng new file mode 100644 index 0000000000000000000000000000000000000000..be03ebdb56c39ae39b499bfbba5833dcefa49ea4 --- /dev/null +++ b/interface/web/help/lib/lang/en_support_message.lng @@ -0,0 +1,9 @@ +<?php +$wb["recipient_id_txt"] = 'recipient_id'; +$wb["sender_id_txt"] = 'sender_id'; +$wb["subject_txt"] = 'subject'; +$wb["message_txt"] = 'message'; +$wb["tstamp_txt"] = 'tstamp'; +$wb["btn_save_txt"] = 'Save'; +$wb["btn_cancel_txt"] = 'Cancel'; +?> \ No newline at end of file diff --git a/interface/web/help/lib/lang/en_support_message_list.lng b/interface/web/help/lib/lang/en_support_message_list.lng new file mode 100644 index 0000000000000000000000000000000000000000..73a1fdab6a5bf0f387a94e2372fdaf2971c8609f --- /dev/null +++ b/interface/web/help/lib/lang/en_support_message_list.lng @@ -0,0 +1,11 @@ +<?php +$wb["list_head_txt"] = 'support_message'; +$wb["sender_id_txt"] = 'sender_id'; +$wb["subject_txt"] = 'subject'; +$wb["page_txt"] = 'Page'; +$wb["page_of_txt"] = 'of'; +$wb["page_next_txt"] = 'Next'; +$wb["page_back_txt"] = 'Back'; +$wb["delete_txt"] = 'Delete'; +$wb["filter_txt"] = 'Filter'; +?> \ No newline at end of file diff --git a/interface/web/help/lib/module.conf.php b/interface/web/help/lib/module.conf.php new file mode 100644 index 0000000000000000000000000000000000000000..c6cdfd74c85161fd8179322e0e7ddedc6de12371 --- /dev/null +++ b/interface/web/help/lib/module.conf.php @@ -0,0 +1,43 @@ +<?php + +//* Name of the module. The module name must match the name of the module directory. The module name may not contain spaces. +$module["name"] = "help"; + +//* Title of the module. The title is dispalayed in the top navigation. +$module["title"] = "Help"; + +//* The template file of the module. This is always module.tpl.htm if you do not have any special requirements like a 3 column layout. +$module["template"] = "module.tpl.htm"; + +//* The page that is displayed when the module is loaded. the path must is relative to the web directory +$module["startpage"] = "help/index.php"; + +//* The width of the tab. Normally you should leave this empty and let the browser define the width automatically. +$module["tab_width"] = ''; + +/* +------------------------------------------ +- Menu Definition +------------------------------------------ +*/ + +//* make sure that the items array is empty +$items = array(); + +//* Add a menu item with the label "Send message" +$items[] = array( 'title' => 'Send message', + 'target' => 'content', + 'link' => 'help/support_message_edit.php'); + +//* Add a menu item with the label "View messages" +$items[] = array( 'title' => 'View messages', + 'target' => 'content', + 'link' => 'help/support_message_list.php'); + + +//* Add the menu items defined above to a menu section labeled 'Support' +$module["nav"][] = array( 'title' => 'Support', + 'open' => 1, + 'items' => $items); + +?> \ No newline at end of file diff --git a/interface/web/help/list/support_message.list.php b/interface/web/help/list/support_message.list.php new file mode 100644 index 0000000000000000000000000000000000000000..368076db8ace6c129c8592c01e214498955510f3 --- /dev/null +++ b/interface/web/help/list/support_message.list.php @@ -0,0 +1,62 @@ +<?php + +//* Name of the list +$liste["name"] = "support_message"; + +//* Database table +$liste["table"] = "support_message"; + +//* Index index field of the database table +$liste["table_idx"] = "support_message_id"; + +//* Search Field Prefix +$liste["search_prefix"] = "search_"; + +//* Records per page +$liste["records_per_page"] = 15; + +//* Script File of the list +$liste["file"] = "support_message_list.php"; + +//* Script file of the edit form +$liste["edit_file"] = "support_message_edit.php"; + +//* Script File of the delete script +$liste["delete_file"] = "support_message_del.php"; + +//* Paging Template +$liste["paging_tpl"] = "templates/paging.tpl.htm"; + +//* Enable auth +$liste["auth"] = "yes"; + + +/***************************************************** +* Search fields +*****************************************************/ + +$liste["item"][] = array( 'field' => "sender_id", + 'datatype' => "VARCHAR", + 'formtype' => "SELECT", + 'op' => "=", + 'prefix' => "", + 'suffix' => "", + 'width' => "", + 'datasource'=> array ( 'type' => 'SQL', + 'querystring' => 'SELECT userid,username FROM sys_user WHERE {AUTHSQL} ORDER BY username', + 'keyfield' => 'userid', + 'valuefield' => 'username' + ), + 'value' => ""); + +$liste["item"][] = array( 'field' => "subject", + 'datatype' => "VARCHAR", + 'formtype' => "TEXT", + 'op' => "like", + 'prefix' => "%", + 'suffix' => "%", + 'width' => "", + 'value' => ""); + + +?> \ No newline at end of file diff --git a/interface/web/help/support_message_del.php b/interface/web/help/support_message_del.php new file mode 100644 index 0000000000000000000000000000000000000000..1ef035eef2f9bbbfade7080d25051d9379e4baa5 --- /dev/null +++ b/interface/web/help/support_message_del.php @@ -0,0 +1,51 @@ +<?php + +/* +Copyright (c) 2007, 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. +*/ + + + +//* From and List definition files +$list_def_file = "list/support_message.list.php"; +$tform_def_file = "form/support_message.tform.php"; + +//* Include the base libraries +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +// Check module permissions +if(!stristr($_SESSION["s"]["user"]["modules"],'help')) { + header("Location: ../index.php"); + exit; +} + +//* Load the form +$app->uses("tform_actions"); +$app->tform_actions->onDelete(); + +?> \ No newline at end of file diff --git a/interface/web/help/support_message_edit.php b/interface/web/help/support_message_edit.php new file mode 100644 index 0000000000000000000000000000000000000000..f97bb88dc0078e77d62789a5b9ade318fecff00a --- /dev/null +++ b/interface/web/help/support_message_edit.php @@ -0,0 +1,63 @@ +<?php + +//* Set the path to the form definition file. +$tform_def_file = "form/support_message.tform.php"; + +//* include the basic application and configuration files +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +//* Checking module permissions +if(!stristr($_SESSION["s"]["user"]["modules"],'help')) { + header("Location: ../index.php"); + exit; +} + +//* Loading the templating and form classes +$app->uses('tpl,tform,tform_actions'); +$app->load('tform_actions'); + +//* Creating a class page_action that extends the tform_actions base class +class page_action extends tform_actions { + + //* Custom onSubmit Event handler + function onSubmit() { + global $app, $conf; + + //* If the current user is not the admin user + if($_SESSION["s"]["user"]["typ"] != 'admin') { + //* Set the admin as recipient + $this->dataRecord["recipient_id"] = 1; + } + + // Set the sender_id field to the ID of the current user + $this->dataRecord["sender_id"] = $_SESSION["s"]["user"]["userid"]; + + //* call the onSubmit function of the parent class + parent::onSubmit(); + } + + //* Custom onShow Event handler + function onShow() { + global $app, $conf; + + //* We do not want that messages get edited, so we switch to a + // read only template if a existing message is loaded + if($this->id > 0) { + $app->tform->formDef['tabs']['message']['template'] = 'templates/support_message_view.htm'; + } + + //* call the onShow function of the parent class + parent::onShow(); + } +} + +//* Create the new page object +$page = new page_action(); + + + +//* Start the page rendering and action handling +$page->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/help/support_message_list.php b/interface/web/help/support_message_list.php new file mode 100644 index 0000000000000000000000000000000000000000..5fc45e5ce45f71a5c58dbc543f70f342cc169716 --- /dev/null +++ b/interface/web/help/support_message_list.php @@ -0,0 +1,23 @@ +<?php +require_once('../../lib/config.inc.php'); +require_once('../../lib/app.inc.php'); + +//* Path to the list definition file +$list_def_file = "list/support_message.list.php"; + +//* Check the module permissions +if(!stristr($_SESSION["s"]["user"]["modules"],'help')) { + header("Location: ../index.php"); + exit; +} + +//* Loading the class +$app->uses('listform_actions'); + +//* Optional limit +// $app->listform_actions->SQLExtWhere = "type = 'alias'"; + +//* Start the form rendering and action ahndling +$app->listform_actions->onLoad(); + +?> \ No newline at end of file diff --git a/interface/web/help/templates/support_message_edit.htm b/interface/web/help/templates/support_message_edit.htm new file mode 100644 index 0000000000000000000000000000000000000000..58e46b10600b0730cc3274cb0cbe4901c8eb280f --- /dev/null +++ b/interface/web/help/templates/support_message_edit.htm @@ -0,0 +1,32 @@ +<table width="500" border="0" cellspacing="0" cellpadding="2"> + <tmpl_if name="is_admin"> + <tr> + <td class="frmText11">{tmpl_var name='recipient_id_txt'}:</td> + <td class="frmText11"> + <select name="recipient_id" class="text"> + {tmpl_var name='recipient_id'} + </select> + </td> + </tr> + </tmpl_if> + <tr> + <td class="frmText11">{tmpl_var name='subject_txt'}:</td> + <td class="frmText11"><input name="subject" type="text" class="text" value="{tmpl_var name='subject'}" size="30" maxlength="255"></td> + </tr> + <tr> + <td class="frmText11">{tmpl_var name='message_txt'}:</td> + <td class="frmText11"><textarea name='message' cols='30' rows='10'>{tmpl_var name='message'}</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','help/support_message_edit.php');"><div class="buttonEnding"></div> + <input name="btn_cancel" type="button" class="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('help/support_message_list.php');"><div class="buttonEnding"></div> + </td> + </tr> +</table> +<input type="hidden" name="id" value="{tmpl_var name='id'}"> +<input type="hidden" name="tstamp" value="{tmpl_var name='tstamp'}"> \ No newline at end of file diff --git a/interface/web/help/templates/support_message_list.htm b/interface/web/help/templates/support_message_list.htm new file mode 100644 index 0000000000000000000000000000000000000000..66ec25c0471898f9f05bb3509a5e327cd8825dbd --- /dev/null +++ b/interface/web/help/templates/support_message_list.htm @@ -0,0 +1,25 @@ +<div class="frmTextHead"><tmpl_var name="list_head_txt"></div><br /> +<input type="button" value="{tmpl_var name="add_new_record_txt"}" class="button" onClick="loadContent('help/support_message_edit.php');" /><div class="buttonEnding"></div><br /><br /> +<table width="100%" border="0" cellspacing="0" cellpadding="4" class="listTable"> + <tr> + <td class="tblHead"><tmpl_var name="sender_id_txt"></td> + <td class="tblHead"><tmpl_var name="subject_txt"></td> + <td class="tblHead"> </td> + </tr> + <tr> + <td class="frmText11"><select name="search_sender_id" onChange="submitForm('pageForm','help/support_message_list.php');">{tmpl_var name='search_sender_id'}</select></td> + <td class="frmText11"><input type="text" name="search_subject" value="{tmpl_var name='search_subject'}" class="text" /></td> + <td class="frmText11" align="right"><input name="Filter" type="button" id="Filter" value="{tmpl_var name="filter_txt"}" class="button" onClick="submitForm('pageForm','help/support_message_list.php');"><div class="buttonEnding"></div></td> + </tr> + <tmpl_loop name="records"> + <tr bgcolor="{tmpl_var name="bgcolor"}"> + <td class="frmText11"><a href="#" onClick="loadContent('help/support_message_edit.php?id={tmpl_var name='id'}');" class="frmText11">{tmpl_var name="sender_id"}</a></td> + <td class="frmText11"><a href="#" onClick="loadContent('help/support_message_edit.php?id={tmpl_var name='id'}');" class="frmText11">{tmpl_var name="subject"}</a></td> + <td class="frmText11" align="right">[<a href="javascript: del_record('help/support_message_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');" class="frmText11">{tmpl_var name='delete_txt'}</a>]</td> + </tr> + </tmpl_loop> + + <tr> + <td colspan="3" height="40" align="center" class="tblFooter"><tmpl_var name="paging"></td> + </tr> +</table> \ No newline at end of file diff --git a/interface/web/help/templates/support_message_view.htm b/interface/web/help/templates/support_message_view.htm new file mode 100644 index 0000000000000000000000000000000000000000..394682760e93195534133896cac5fbe29f9f2d56 --- /dev/null +++ b/interface/web/help/templates/support_message_view.htm @@ -0,0 +1,14 @@ +<table width="500" border="0" cellspacing="0" cellpadding="2"> + <tr> + <td class="frmText11">{tmpl_var name='subject_txt'}:</td> + <td class="frmText11">{tmpl_var name='subject'}</td> + </tr> + <tr> + <td class="frmText11">{tmpl_var name='message_txt'}:</td> + <td class="frmText11">{tmpl_var name='message'}</td> + </tr> + <tr> + <td class="frmText11"> </td> + <td class="frmText11"> </td> + </tr> +</table> \ No newline at end of file