From cf71a4677eff547c9cedeb1871fc109ae181b0c2 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Sat, 17 Mar 2007 16:30:41 -0400 Subject: [PATCH] Rebuild the complete interface to use ajax. --- interface/lib/classes/tform_tpl_generator.inc.php | 628 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 315 insertions(+), 313 deletions(-) diff --git a/interface/lib/classes/tform_tpl_generator.inc.php b/interface/lib/classes/tform_tpl_generator.inc.php index dcc92ff..7bc9944 100644 --- a/interface/lib/classes/tform_tpl_generator.inc.php +++ b/interface/lib/classes/tform_tpl_generator.inc.php @@ -1,314 +1,316 @@ -<?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. -*/ - - -class tform_tpl_generator { - - function buildHTML($formDef,$tab) { - - global $app; - - $html = '<table width="500" border="0" cellspacing="0" cellpadding="2">'; - $lang = array(); - - foreach($formDef['tabs'][$tab]['fields'] as $key => $field) { - switch ($field['formtype']) { - case 'TEXT': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\"><input name=\"".$key."\" type=\"text\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td> - </tr>"; - break; - case 'TEXTAREA': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\"><textarea name='$key' cols='".$field['cols']."' rows='".$field['rows']."'>{tmpl_var name='".$key."'}</textarea></td> - </tr>"; - break; - case 'SELECT': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\"> - <select name=\"".$key."\" class=\"text\"> - {tmpl_var name='".$key."'} - </select> - </td> - </tr>"; - break; - case 'MULTIPLE': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\"> - <select name=\"".$key."\" class=\"text\" size=\"".$field['rows']."\" multiple> - {tmpl_var name='".$key."'} - </select> - </td> - </tr>"; - break; - case 'PASSWORD': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\"><input name=\"".$key."\" type=\"password\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td> - </tr>"; - break; - case 'CHECKBOX': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> - </tr>"; - break; - case 'CHECKBOXARRAY': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> - </tr>"; - break; - case 'RADIO': - $html .= " - <tr> - <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> - <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> - </tr>"; - break; - } - - // Language File Eintrag f�r "Feld-Titel" anlegen - $lang[$key."_txt"] = $key; - - // language File Eintrag, f�r error-Text anlegen - if($field["errmsg"] != '') { - $errmsg = $field["errmsg"]; - $lang[$errmsg] = $errmsg; - } - - - } - - $html .= " <tr> - <td class=\"frmText11\"> </td> - <td class=\"frmText11\"> </td> - </tr> - <tr> - <td> </td> - <td><input name=\"btn_save\" type=\"submit\" class=\"button\" value=\"{tmpl_var name='btn_save_txt'}\"> - <input name=\"btn_cancel\" type=\"button\" class=\"button\" value=\"{tmpl_var name='btn_cancel_txt'}\" onClick=\"self.location.href='".$formDef["list_default"]."';\"> - </td> - </tr>"; - - $lang['btn_save_txt'] = "Save"; - $lang['btn_cancel_txt'] = "Cancel"; - - $html .= "\r\n</table>\r\n<input type=\"hidden\" name=\"id\" value=\"{tmpl_var name='id'}\">"; - - // speichere Template - if (!$handle = fopen($formDef['tabs'][$tab]['template'], 'w')) { - print "Cannot open file ($filename)"; - exit; - } - - if (!fwrite($handle, $html)) { - print "Cannot write to file ($filename)"; - exit; - } - fclose($handle); - - // speichere language Datei - $this->lng_add($lang,$formDef); - - // �berpr�fe, ob es die Tabelle schon gibt, - // ansonsten wird sie angelegt - $tables = $app->db->getTables(); - - if(!@in_array($formDef['db_table'],$tables)) { - // Datenbank noch nicht vorhanden - - $columns = array(); - - // f�ge ID Feld hinzu - $col = array( 'action' => 'add', - 'name' => $formDef["db_table_idx"], - 'type' => 'int64', - 'typeValue' => '', - 'defaultValue' => false, - 'notNull' => true, - 'autoInc' => true, - 'option' => 'primary' - ); - - $columns[] = $col; - $app->db->show_error_messages = true; - - if($formDef["auth"] == 'yes') { - - $col = array( 'action' => 'add', - 'name' => 'sys_userid', - 'type' => 'int32', - 'typeValue' => '', - 'defaultValue' => '0', - 'notNull' => true - ); - $columns[] = $col; - $col = array( 'action' => 'add', - 'name' => 'sys_groupid', - 'type' => 'int32', - 'typeValue' => '', - 'defaultValue' => '0', - 'notNull' => true - ); - $columns[] = $col; - $col = array( 'action' => 'add', - 'name' => 'sys_perm_user', - 'type' => 'varchar', - 'typeValue' => '5', - 'defaultValue' => 'NULL', - 'notNull' => true - ); - $columns[] = $col; - $col = array( 'action' => 'add', - 'name' => 'sys_perm_group', - 'type' => 'varchar', - 'typeValue' => '5', - 'defaultValue' => 'NULL', - 'notNull' => true - ); - $columns[] = $col; - $col = array( 'action' => 'add', - 'name' => 'sys_perm_other', - 'type' => 'varchar', - 'typeValue' => '5', - 'defaultValue' => 'NULL', - 'notNull' => true - ); - $columns[] = $col; - - } - - - foreach($formDef['tabs'] as $tab) { - foreach($tab["fields"] as $name => $field) { - /* - $columns = array(action => add | alter | drop - name => Spaltenname - name_new => neuer Spaltenname, nur bei 'alter' belegt - type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob - typeValue => Wert z.B. bei Varchar - defaultValue => Default Wert - notNull => true | false - autoInc => true | false - option => unique | primary | index) - - - */ - switch ($field["datatype"]) { - case 'INTEGER': - $type = 'int32'; - $typevalue = ''; - $defaultValue = ($field["default"] != '')?$field["default"]:'0'; - break; - case 'DOUBLE': - $type = 'double'; - $typevalue = ''; - $defaultValue = ($field["default"] != '')?$field["default"]:'0'; - break; - case 'CURRENCY': - $type = 'double'; - $typevalue = ''; - $defaultValue = ($field["default"] != '')?$field["default"]:'0'; - break; - case 'VARCHAR': - $type = 'varchar'; - $typeValue = ($field["maxlength"] > 0 and $field["maxlength"] <= 256)?$field["maxlength"]:255; - // $defaultValue = ($field["default"] != '')?$field["default"]:'NOT NULL'; - $defaultValue = ($field["default"] != '')?$field["default"]:'NULL'; - break; - case 'TEXT': - $type = 'text'; - $typevalue = ''; - $defaultValue = 'NULL'; - break; - case 'DATE': - $type = 'int64'; - $typevalue = ''; - $defaultValue = ($field["default"] != '')?$field["default"]:'0'; - break; - } - - - $col = array( 'action' => 'add', - 'name' => $name, - 'type' => $type, - 'typeValue' => $typeValue, - 'defaultValue' => $defaultValue, - 'notNull' => true - ); - - $columns[] = $col; - } - } - - $app->db->createTable($formDef["db_table"],$columns); - - } - } - - function lng_add($lang,$formDef) { - global $go_api, $go_info,$conf; - - $lng_file = "lib/lang/".$conf["language"]."_".$formDef['name'].".lng"; - if(is_file($lng_file)) { - include($lng_file); - } else { - $wb = array(); - } - - $wb_out = array_merge($wb,$lang); - - if(is_array($wb_out)) { - $fp = fopen ($lng_file, "w"); - fwrite($fp,"<?php\r\n"); - foreach($wb_out as $key => $val) { - $new_line = '$wb["'.$key.'"] = '."'$val';\r\n"; - fwrite($fp,$new_line); - - } - fwrite($fp,"?>"); - fclose($fp); - } - } -} - +<?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. +*/ + + +class tform_tpl_generator { + + function buildHTML($formDef,$tab) { + + global $app; + + $module = $_SESSION["s"]["module"]["name"]; + + $html = '<table width="500" border="0" cellspacing="0" cellpadding="2">'; + $lang = array(); + + foreach($formDef['tabs'][$tab]['fields'] as $key => $field) { + switch ($field['formtype']) { + case 'TEXT': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\"><input name=\"".$key."\" type=\"text\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td> + </tr>"; + break; + case 'TEXTAREA': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\"><textarea name='$key' cols='".$field['cols']."' rows='".$field['rows']."'>{tmpl_var name='".$key."'}</textarea></td> + </tr>"; + break; + case 'SELECT': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\"> + <select name=\"".$key."\" class=\"text\"> + {tmpl_var name='".$key."'} + </select> + </td> + </tr>"; + break; + case 'MULTIPLE': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\"> + <select name=\"".$key."\" class=\"text\" size=\"".$field['rows']."\" multiple> + {tmpl_var name='".$key."'} + </select> + </td> + </tr>"; + break; + case 'PASSWORD': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\"><input name=\"".$key."\" type=\"password\" class=\"text\" value=\"{tmpl_var name='".$key."'}\" size=\"".$field['width']."\" maxlength=\"".$field['maxlength']."\"></td> + </tr>"; + break; + case 'CHECKBOX': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> + </tr>"; + break; + case 'CHECKBOXARRAY': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> + </tr>"; + break; + case 'RADIO': + $html .= " + <tr> + <td class=\"frmText11\">{tmpl_var name='".$key."_txt'}:</td> + <td class=\"frmText11\">{tmpl_var name='".$key."'}</td> + </tr>"; + break; + } + + // Language File Eintrag f�r "Feld-Titel" anlegen + $lang[$key."_txt"] = $key; + + // language File Eintrag, f�r error-Text anlegen + if($field["errmsg"] != '') { + $errmsg = $field["errmsg"]; + $lang[$errmsg] = $errmsg; + } + + + } + + $html .= " <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','".$module."/".$formDef["action"]."');\"><div class=\"buttonEnding\"></div> + <input name=\"btn_cancel\" type=\"button\" class=\"button\" value=\"{tmpl_var name='btn_cancel_txt'}\" onClick=\"loadContent('".$module."/".$formDef["list_default"]."');\"><div class=\"buttonEnding\"></div> + </td> + </tr>"; + + $lang['btn_save_txt'] = "Save"; + $lang['btn_cancel_txt'] = "Cancel"; + + $html .= "\r\n</table>\r\n<input type=\"hidden\" name=\"id\" value=\"{tmpl_var name='id'}\">"; + + // speichere Template + if (!$handle = fopen($formDef['tabs'][$tab]['template'], 'w')) { + print "Cannot open file ($filename)"; + exit; + } + + if (!fwrite($handle, $html)) { + print "Cannot write to file ($filename)"; + exit; + } + fclose($handle); + + // speichere language Datei + $this->lng_add($lang,$formDef); + + // �berpr�fe, ob es die Tabelle schon gibt, + // ansonsten wird sie angelegt + $tables = $app->db->getTables(); + + if(!@in_array($formDef['db_table'],$tables)) { + // Datenbank noch nicht vorhanden + + $columns = array(); + + // f�ge ID Feld hinzu + $col = array( 'action' => 'add', + 'name' => $formDef["db_table_idx"], + 'type' => 'int64', + 'typeValue' => '', + 'defaultValue' => false, + 'notNull' => true, + 'autoInc' => true, + 'option' => 'primary' + ); + + $columns[] = $col; + $app->db->show_error_messages = true; + + if($formDef["auth"] == 'yes') { + + $col = array( 'action' => 'add', + 'name' => 'sys_userid', + 'type' => 'int32', + 'typeValue' => '', + 'defaultValue' => '0', + 'notNull' => true + ); + $columns[] = $col; + $col = array( 'action' => 'add', + 'name' => 'sys_groupid', + 'type' => 'int32', + 'typeValue' => '', + 'defaultValue' => '0', + 'notNull' => true + ); + $columns[] = $col; + $col = array( 'action' => 'add', + 'name' => 'sys_perm_user', + 'type' => 'varchar', + 'typeValue' => '5', + 'defaultValue' => 'NULL', + 'notNull' => true + ); + $columns[] = $col; + $col = array( 'action' => 'add', + 'name' => 'sys_perm_group', + 'type' => 'varchar', + 'typeValue' => '5', + 'defaultValue' => 'NULL', + 'notNull' => true + ); + $columns[] = $col; + $col = array( 'action' => 'add', + 'name' => 'sys_perm_other', + 'type' => 'varchar', + 'typeValue' => '5', + 'defaultValue' => 'NULL', + 'notNull' => true + ); + $columns[] = $col; + + } + + + foreach($formDef['tabs'] as $tab) { + foreach($tab["fields"] as $name => $field) { + /* + $columns = array(action => add | alter | drop + name => Spaltenname + name_new => neuer Spaltenname, nur bei 'alter' belegt + type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob + typeValue => Wert z.B. bei Varchar + defaultValue => Default Wert + notNull => true | false + autoInc => true | false + option => unique | primary | index) + + + */ + switch ($field["datatype"]) { + case 'INTEGER': + $type = 'int32'; + $typevalue = ''; + $defaultValue = ($field["default"] != '')?$field["default"]:'0'; + break; + case 'DOUBLE': + $type = 'double'; + $typevalue = ''; + $defaultValue = ($field["default"] != '')?$field["default"]:'0'; + break; + case 'CURRENCY': + $type = 'double'; + $typevalue = ''; + $defaultValue = ($field["default"] != '')?$field["default"]:'0'; + break; + case 'VARCHAR': + $type = 'varchar'; + $typeValue = ($field["maxlength"] > 0 and $field["maxlength"] <= 256)?$field["maxlength"]:255; + // $defaultValue = ($field["default"] != '')?$field["default"]:'NOT NULL'; + $defaultValue = ($field["default"] != '')?$field["default"]:'NULL'; + break; + case 'TEXT': + $type = 'text'; + $typevalue = ''; + $defaultValue = 'NULL'; + break; + case 'DATE': + $type = 'int64'; + $typevalue = ''; + $defaultValue = ($field["default"] != '')?$field["default"]:'0'; + break; + } + + + $col = array( 'action' => 'add', + 'name' => $name, + 'type' => $type, + 'typeValue' => $typeValue, + 'defaultValue' => $defaultValue, + 'notNull' => true + ); + + $columns[] = $col; + } + } + + $app->db->createTable($formDef["db_table"],$columns); + + } + } + + function lng_add($lang,$formDef) { + global $go_api, $go_info,$conf; + + $lng_file = "lib/lang/".$conf["language"]."_".$formDef['name'].".lng"; + if(is_file($lng_file)) { + include($lng_file); + } else { + $wb = array(); + } + + $wb_out = array_merge($lang,$wb); + + if(is_array($wb_out)) { + $fp = fopen ($lng_file, "w"); + fwrite($fp,"<?php\r\n"); + foreach($wb_out as $key => $val) { + $new_line = '$wb["'.$key.'"] = '."'$val';\r\n"; + fwrite($fp,$new_line); + + } + fwrite($fp,"?>"); + fclose($fp); + } + } +} + ?> \ No newline at end of file -- Gitblit v1.9.1