tbrehm
2007-02-22 58d10b8ea9a2fd133590fb8dd17b6a210292694c
Addad a new basic theme (grey).
2 files modified
36 files added
1384 ■■■■ changed files
interface/lib/classes/listform.inc.php 686 ●●●● patch | view | raw | blame | history
interface/lib/config.inc.php 2 ●●● patch | view | raw | blame | history
interface/web/themes/grey/icons/copy.png patch | view | raw | blame | history
interface/web/themes/grey/icons/folder.png patch | view | raw | blame | history
interface/web/themes/grey/icons/folder_closed.png patch | view | raw | blame | history
interface/web/themes/grey/icons/mail.png patch | view | raw | blame | history
interface/web/themes/grey/icons/paste.png patch | view | raw | blame | history
interface/web/themes/grey/icons/printer.png patch | view | raw | blame | history
interface/web/themes/grey/images/Nav_top_bg_2.png patch | view | raw | blame | history
interface/web/themes/grey/images/Thumbs.db patch | view | raw | blame | history
interface/web/themes/grey/images/bg_nav_1.jpg patch | view | raw | blame | history
interface/web/themes/grey/images/bg_nav_1.png patch | view | raw | blame | history
interface/web/themes/grey/images/bg_nav_2.png patch | view | raw | blame | history
interface/web/themes/grey/images/bottom.png patch | view | raw | blame | history
interface/web/themes/grey/images/btn_back.png patch | view | raw | blame | history
interface/web/themes/grey/images/btn_filter.png patch | view | raw | blame | history
interface/web/themes/grey/images/btn_left.png patch | view | raw | blame | history
interface/web/themes/grey/images/btn_next.png patch | view | raw | blame | history
interface/web/themes/grey/images/btn_right.png patch | view | raw | blame | history
interface/web/themes/grey/images/left_logo_1.png patch | view | raw | blame | history
interface/web/themes/grey/images/left_logo_2.png patch | view | raw | blame | history
interface/web/themes/grey/images/logout.png patch | view | raw | blame | history
interface/web/themes/grey/images/nav_top_bg.gif patch | view | raw | blame | history
interface/web/themes/grey/images/nav_top_bg.png patch | view | raw | blame | history
interface/web/themes/grey/images/table_head_bg.png patch | view | raw | blame | history
interface/web/themes/grey/images/x.gif patch | view | raw | blame | history
interface/web/themes/grey/printstyle.css 27 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/style.css 295 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/form.tpl.htm 25 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/listpage.tpl.htm 23 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/mail.tpl.htm 11 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/main.tpl.htm 48 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/module.tpl.htm 37 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/module_tree.tpl.htm 38 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/print.tpl.htm 12 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/searchpage.tpl.htm 23 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/tabbed_form.tpl.htm 70 ●●●●● patch | view | raw | blame | history
interface/web/themes/grey/templates/vorlage_gesamt.tpl.htm 87 ●●●●● patch | view | raw | blame | history
interface/lib/classes/listform.inc.php
@@ -1,344 +1,344 @@
<?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.
*/
/**
* Listenbehandlung
*
* @package listform
* @author Till Brehm
* @version 1.1
*/
class listform {
        var $debug = 0;
        var $errorMessage;
    var $listDef;
        var $searchValues;
        var $pagingHTML;
        var $pagingValues;
        var $searchChanged = 0;
        var $module;
        var $dateformat = 'd.m.Y';
    function loadListDef($file,$module = '') {
                global $app,$conf;
                if(!is_file($file)) die("List-Definition: $file not found.");
                include_once($file);
                $this->listDef = $liste;
                $this->module = $module;
                // Fill datasources
                foreach($this->listDef["item"] as $key => $field) {
                    if(is_array($field['datasource'])) {
                        $this->listDef["item"][$key]["value"] = $this->getDatasourceData($field);
                    }
                }
                return true;
        }
        /**
        * Get the key => value array of a form filed from a datasource definitiom
        *
        * @param field = array with field definition
        * @param record = Dataset as array
        * @return key => value array for the value field of a form
        */
        function getDatasourceData($field) {
                global $app;
                $values = array();
                if($field["datasource"]["type"] == 'SQL') {
                        // Preparing SQL string. We will replace some
                        // common placeholders
                        $querystring = $field["datasource"]["querystring"];
                        $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring);
                        $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring);
                        $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
                        $table_idx = $this->formDef['db_table_idx'];
                        //$querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring);
                        $app->uses("tform");
                        $querystring = str_replace("{AUTHSQL}",$app->tform->getAuthSQL('r'),$querystring);
                        // Getting the records
                        $tmp_records = $app->db->queryAllRecords($querystring);
                        if($app->db->errorMessage != '') die($app->db->errorMessage);
                        if(is_array($tmp_records)) {
                                $key_field = $field["datasource"]["keyfield"];
                                $value_field = $field["datasource"]["valuefield"];
                                foreach($tmp_records as $tmp_rec) {
                                        $tmp_id = $tmp_rec[$key_field];
                                        $values[$tmp_id] = $tmp_rec[$value_field];
                                }
                        }
                }
                if($field["datasource"]["type"] == 'CUSTOM') {
                        // Calls a custom class to validate this record
                        if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') {
                                $datasource_class = $field["datasource"]['class'];
                                $datasource_function = $field["datasource"]['function'];
                                $app->uses($datasource_class);
                                $record = array();
                                $values = $app->$datasource_class->$datasource_function($field, $record);
                        } else {
                                $this->errorMessage .= "Custom datasource class or function is empty<br>\r\n";
                        }
                }
                return $values;
        }
        function getSearchSQL($sql_where = "") {
                global $db;
                // Hole Config Variablen
                $list_name = $this->listDef["name"];
                $search_prefix = $this->listDef["search_prefix"];
                // speichere Suchanfrage
                foreach($this->listDef["item"] as $i) {
                        $field = $i["field"];
                        // hat sich die suche geändert
                        if(isset($_REQUEST[$search_prefix.$field]) and $_REQUEST[$search_prefix.$field] != $_SESSION["search"][$list_name][$search_prefix.$field]) $this->searchChanged = 1;
                        // suchfeld in session speichern.
                        if(isset($_REQUEST[$search_prefix.$field])) $_SESSION["search"][$list_name][$search_prefix.$field] = $_REQUEST[$search_prefix.$field];
                        if($i["formtype"] == "SELECT") {
                                if(is_array($i['value'])) {
                                        $out = '<option value=""></option>';
                                        foreach($i['value'] as $k => $v) {
                                                $selected = ($k == $_SESSION["search"][$list_name][$search_prefix.$field] && $_SESSION["search"][$list_name][$search_prefix.$field] != '')?' SELECTED':'';
                                                $out .= "<option value='$k'$selected>$v</option>\r\n";
                                        }
                                }
                                $this->searchValues[$search_prefix.$field] = $out;
                        } else {
                                $this->searchValues[$search_prefix.$field] = $_SESSION["search"][$list_name][$search_prefix.$field];
                        }
                }
                // Speichere Variablen in Objekt zum späteren einparsen in Template
                // $this->searchValues = $_SESSION["search"][$list_name];
                foreach($this->listDef["item"] as $i) {
                        $field = $i["field"];
                        //if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and";
                        if($_SESSION["search"][$list_name][$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_SESSION["search"][$list_name][$search_prefix.$field].$i["suffix"]."' and";
                }
                if($sql_where != '') {
                        $sql_where = substr($sql_where,0,-3);
                } else {
                        $sql_where = "1";
                }
                return $sql_where;
        }
        function getPagingSQL($sql_where = "1") {
                global $app, $conf;
                // Hole Config Variablen
                $list_name                         = $this->listDef["name"];
                $search_prefix                 = $this->listDef["search_prefix"];
                $records_per_page         = $this->listDef["records_per_page"];
                $table                                 = $this->listDef["table"];
                // setze page auf null, wenn in session nicht gesetzt
                if($_SESSION["search"][$list_name]["page"] == '') $_SESSION["search"][$list_name]["page"] = 0;
                // setze page auf wert der request variablen "page"
                if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $_REQUEST["page"];
                // page auf 0 setzen, wenn suche sich geändert hat.
                if($this->searchChanged == 1) $_SESSION["search"][$list_name]["page"] = 0;
                $sql_von = $_SESSION["search"][$list_name]["page"] * $records_per_page;
                $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table WHERE $sql_where");
                $pages = intval(($record_count["anzahl"] - 1) / $records_per_page);
                $vars["list_file"] = $this->listDef["file"];
                $vars["page"] = $_SESSION["search"][$list_name]["page"];
                $vars["last_page"] = $_SESSION["search"][$list_name]["page"] - 1;
                $vars["next_page"] = $_SESSION["search"][$list_name]["page"] + 1;
                $vars["pages"] = $pages;
                $vars["max_pages"] = $pages + 1;
                $vars["records_gesamt"] = $record_count["anzahl"];
                $vars["page_params"] = $this->listDef["page_params"];
                if($_SESSION["search"][$list_name]["page"] > 0) $vars["show_page_back"] = 1;
                if($_SESSION["search"][$list_name]["page"] <= $vars["pages"] - 1) $vars["show_page_next"] = 1;
                $this->pagingValues = $vars;
                $this->pagingHTML = $this->getPagingHTML($vars);
                $limit_sql = "LIMIT $sql_von, $records_per_page";
                return $limit_sql;
        }
        function getPagingHTML($vars) {
                global $app;
                $content = '<a href="'.$vars["list_file"].'?page=0'.$vars["page_params"].'"><img src="../themes/iprg/images/btn_left.png" border="0"></a> &nbsp; ';
                if($vars["show_page_back"] == 1) $content .= '<a href="'.$vars["list_file"].'?page='.$vars["last_page"].$vars["page_params"].'"><img src="../themes/iprg/images/btn_back.png" border="0"></a> ';
                $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' ';
                if($vars["show_page_next"] == 1) $content .= '<a href="'.$vars["list_file"].'?page='.$vars["next_page"].$vars["page_params"].'"><img src="../themes/iprg/images/btn_next.png" border="0"></a> &nbsp; ';
                $content .= '<a href="'.$vars["list_file"].'?page='.$vars["pages"].$vars["page_params"].'"> <img src="../themes/iprg/images/btn_right.png" border="0"></a>';
                return $content;
        }
        function getPagingHTMLasTXT($vars) {
                global $app;
                $content = '[<a href="'.$vars["list_file"].'?page=0'.$vars["page_params"].'">|&lt;&lt; </a>]';
                if($vars["show_page_back"] == 1) $content .= '[<< <a href="'.$vars["list_file"].'?page='.$vars["last_page"].$vars["page_params"].'">'.$app->lng('Back').'</a>] ';
                $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' ';
                if($vars["show_page_next"] == 1) $content .= '[<a href="'.$vars["list_file"].'?page='.$vars["next_page"].$vars["page_params"].'">'.$app->lng('Next').' >></a>] ';
                $content .= '[<a href="'.$vars["list_file"].'?page='.$vars["pages"].$vars["page_params"].'"> &gt;&gt;|</a>]';
                return $content;
        }
        function getSortSQL() {
                global $app, $conf;
                // Hole Config Variablen
                $sort_field = $this->listDef["sort_field"];
                $sort_direction = $this->listDef["sort_direction"];
                $sql_sort = '';
                if($sort_field != '' && $sort_direction != '') {
                        $sql_sort = "ORDER BY $sort_field $sort_direction";
                }
                return $sql_sort;
        }
        function decode($record) {
                if(is_array($record)) {
                        foreach($this->listDef["item"] as $field) {
                                $key = $field["field"];
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        $record[$key] = stripslashes($record[$key]);
                                break;
                                case 'TEXT':
                                        $record[$key] = stripslashes($record[$key]);
                                break;
                                case 'DATE':
                                        if($record[$key] > 0) {
                                                $record[$key] = date($this->dateformat,$record[$key]);
                                        } else {
                                            $record[$key] = '';
                                        }
                                break;
                                case 'INTEGER':
                                        $record[$key] = intval($record[$key]);
                                break;
                                case 'DOUBLE':
                                        $record[$key] = $record[$key];
                                break;
                                case 'CURRENCY':
                                        $record[$key] = number_format($record[$key], 2, ',', '');
                                break;
                                default:
                                        $record[$key] = stripslashes($record[$key]);
                                }
                        }
                }
        return $record;
        }
        function encode($record) {
                if(is_array($record)) {
                        foreach($this->listDef["item"] as $field) {
                                $key = $field["field"];
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        if(!is_array($record[$key])) {
                                                $record[$key] = addslashes($record[$key]);
                                        } else {
                                                $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]);
                                        }
                                break;
                                case 'TEXT':
                                        if(!is_array($record[$key])) {
                                                $record[$key] = addslashes($record[$key]);
                                        } else {
                                                $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]);
                                        }
                                break;
                                case 'DATE':
                                        if($record[$key] > 0) {
                                                list($tag,$monat,$jahr) = explode('.',$record[$key]);
                                                $record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
                                        }
                                break;
                                case 'INTEGER':
                                        $record[$key] = intval($record[$key]);
                                break;
                                case 'DOUBLE':
                                        $record[$key] = addslashes($record[$key]);
                                break;
                                case 'CURRENCY':
                                        $record[$key] = str_replace(",",".",$record[$key]);
                                break;
                                }
                        }
                }
                return $record;
        }
}
<?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.
*/
/**
* Listenbehandlung
*
* @package listform
* @author Till Brehm
* @version 1.1
*/
class listform {
        var $debug = 0;
        var $errorMessage;
    var $listDef;
        var $searchValues;
        var $pagingHTML;
        var $pagingValues;
        var $searchChanged = 0;
        var $module;
        var $dateformat = 'd.m.Y';
    function loadListDef($file,$module = '') {
                global $app,$conf;
                if(!is_file($file)) die("List-Definition: $file not found.");
                include_once($file);
                $this->listDef = $liste;
                $this->module = $module;
                // Fill datasources
                foreach($this->listDef["item"] as $key => $field) {
                    if(is_array($field['datasource'])) {
                        $this->listDef["item"][$key]["value"] = $this->getDatasourceData($field);
                    }
                }
                return true;
        }
        /**
        * Get the key => value array of a form filed from a datasource definitiom
        *
        * @param field = array with field definition
        * @param record = Dataset as array
        * @return key => value array for the value field of a form
        */
        function getDatasourceData($field) {
                global $app;
                $values = array();
                if($field["datasource"]["type"] == 'SQL') {
                        // Preparing SQL string. We will replace some
                        // common placeholders
                        $querystring = $field["datasource"]["querystring"];
                        $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring);
                        $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring);
                        $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
                        $table_idx = $this->formDef['db_table_idx'];
                        //$querystring = str_replace("{RECORDID}",$record[$table_idx],$querystring);
                        $app->uses("tform");
                        $querystring = str_replace("{AUTHSQL}",$app->tform->getAuthSQL('r'),$querystring);
                        // Getting the records
                        $tmp_records = $app->db->queryAllRecords($querystring);
                        if($app->db->errorMessage != '') die($app->db->errorMessage);
                        if(is_array($tmp_records)) {
                                $key_field = $field["datasource"]["keyfield"];
                                $value_field = $field["datasource"]["valuefield"];
                                foreach($tmp_records as $tmp_rec) {
                                        $tmp_id = $tmp_rec[$key_field];
                                        $values[$tmp_id] = $tmp_rec[$value_field];
                                }
                        }
                }
                if($field["datasource"]["type"] == 'CUSTOM') {
                        // Calls a custom class to validate this record
                        if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') {
                                $datasource_class = $field["datasource"]['class'];
                                $datasource_function = $field["datasource"]['function'];
                                $app->uses($datasource_class);
                                $record = array();
                                $values = $app->$datasource_class->$datasource_function($field, $record);
                        } else {
                                $this->errorMessage .= "Custom datasource class or function is empty<br>\r\n";
                        }
                }
                return $values;
        }
        function getSearchSQL($sql_where = "") {
                global $db;
                // Hole Config Variablen
                $list_name = $this->listDef["name"];
                $search_prefix = $this->listDef["search_prefix"];
                // speichere Suchanfrage
                foreach($this->listDef["item"] as $i) {
                        $field = $i["field"];
                        // hat sich die suche geändert
                        if(isset($_REQUEST[$search_prefix.$field]) and $_REQUEST[$search_prefix.$field] != $_SESSION["search"][$list_name][$search_prefix.$field]) $this->searchChanged = 1;
                        // suchfeld in session speichern.
                        if(isset($_REQUEST[$search_prefix.$field])) $_SESSION["search"][$list_name][$search_prefix.$field] = $_REQUEST[$search_prefix.$field];
                        if($i["formtype"] == "SELECT") {
                                if(is_array($i['value'])) {
                                        $out = '<option value=""></option>';
                                        foreach($i['value'] as $k => $v) {
                                                $selected = ($k == $_SESSION["search"][$list_name][$search_prefix.$field] && $_SESSION["search"][$list_name][$search_prefix.$field] != '')?' SELECTED':'';
                                                $out .= "<option value='$k'$selected>$v</option>\r\n";
                                        }
                                }
                                $this->searchValues[$search_prefix.$field] = $out;
                        } else {
                                $this->searchValues[$search_prefix.$field] = $_SESSION["search"][$list_name][$search_prefix.$field];
                        }
                }
                // Speichere Variablen in Objekt zum späteren einparsen in Template
                // $this->searchValues = $_SESSION["search"][$list_name];
                foreach($this->listDef["item"] as $i) {
                        $field = $i["field"];
                        //if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and";
                        if($_SESSION["search"][$list_name][$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_SESSION["search"][$list_name][$search_prefix.$field].$i["suffix"]."' and";
                }
                if($sql_where != '') {
                        $sql_where = substr($sql_where,0,-3);
                } else {
                        $sql_where = "1";
                }
                return $sql_where;
        }
        function getPagingSQL($sql_where = "1") {
                global $app, $conf;
                // Hole Config Variablen
                $list_name                         = $this->listDef["name"];
                $search_prefix                 = $this->listDef["search_prefix"];
                $records_per_page         = $this->listDef["records_per_page"];
                $table                                 = $this->listDef["table"];
                // setze page auf null, wenn in session nicht gesetzt
                if($_SESSION["search"][$list_name]["page"] == '') $_SESSION["search"][$list_name]["page"] = 0;
                // setze page auf wert der request variablen "page"
                if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $_REQUEST["page"];
                // page auf 0 setzen, wenn suche sich geändert hat.
                if($this->searchChanged == 1) $_SESSION["search"][$list_name]["page"] = 0;
                $sql_von = $_SESSION["search"][$list_name]["page"] * $records_per_page;
                $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table WHERE $sql_where");
                $pages = intval(($record_count["anzahl"] - 1) / $records_per_page);
                $vars["list_file"] = $this->listDef["file"];
                $vars["page"] = $_SESSION["search"][$list_name]["page"];
                $vars["last_page"] = $_SESSION["search"][$list_name]["page"] - 1;
                $vars["next_page"] = $_SESSION["search"][$list_name]["page"] + 1;
                $vars["pages"] = $pages;
                $vars["max_pages"] = $pages + 1;
                $vars["records_gesamt"] = $record_count["anzahl"];
                $vars["page_params"] = $this->listDef["page_params"];
                if($_SESSION["search"][$list_name]["page"] > 0) $vars["show_page_back"] = 1;
                if($_SESSION["search"][$list_name]["page"] <= $vars["pages"] - 1) $vars["show_page_next"] = 1;
                $this->pagingValues = $vars;
                $this->pagingHTML = $this->getPagingHTML($vars);
                $limit_sql = "LIMIT $sql_von, $records_per_page";
                return $limit_sql;
        }
        function getPagingHTML($vars) {
                global $app;
                $content = '<a href="'.$vars["list_file"].'?page=0'.$vars["page_params"].'"><img src="../themes/grey/images/btn_left.png" border="0"></a> &nbsp; ';
                if($vars["show_page_back"] == 1) $content .= '<a href="'.$vars["list_file"].'?page='.$vars["last_page"].$vars["page_params"].'"><img src="../themes/grey/images/btn_back.png" border="0"></a> ';
                $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' ';
                if($vars["show_page_next"] == 1) $content .= '<a href="'.$vars["list_file"].'?page='.$vars["next_page"].$vars["page_params"].'"><img src="../themes/grey/images/btn_next.png" border="0"></a> &nbsp; ';
                $content .= '<a href="'.$vars["list_file"].'?page='.$vars["pages"].$vars["page_params"].'"> <img src="../themes/grey/images/btn_right.png" border="0"></a>';
                return $content;
        }
        function getPagingHTMLasTXT($vars) {
                global $app;
                $content = '[<a href="'.$vars["list_file"].'?page=0'.$vars["page_params"].'">|&lt;&lt; </a>]';
                if($vars["show_page_back"] == 1) $content .= '[<< <a href="'.$vars["list_file"].'?page='.$vars["last_page"].$vars["page_params"].'">'.$app->lng('Back').'</a>] ';
                $content .= ' '.$app->lng('Page').' '.$vars["next_page"].' '.$app->lng('of').' '.$vars["max_pages"].' ';
                if($vars["show_page_next"] == 1) $content .= '[<a href="'.$vars["list_file"].'?page='.$vars["next_page"].$vars["page_params"].'">'.$app->lng('Next').' >></a>] ';
                $content .= '[<a href="'.$vars["list_file"].'?page='.$vars["pages"].$vars["page_params"].'"> &gt;&gt;|</a>]';
                return $content;
        }
        function getSortSQL() {
                global $app, $conf;
                // Hole Config Variablen
                $sort_field = $this->listDef["sort_field"];
                $sort_direction = $this->listDef["sort_direction"];
                $sql_sort = '';
                if($sort_field != '' && $sort_direction != '') {
                        $sql_sort = "ORDER BY $sort_field $sort_direction";
                }
                return $sql_sort;
        }
        function decode($record) {
                if(is_array($record)) {
                        foreach($this->listDef["item"] as $field) {
                                $key = $field["field"];
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        $record[$key] = stripslashes($record[$key]);
                                break;
                                case 'TEXT':
                                        $record[$key] = stripslashes($record[$key]);
                                break;
                                case 'DATE':
                                        if($record[$key] > 0) {
                                                $record[$key] = date($this->dateformat,$record[$key]);
                                        } else {
                                            $record[$key] = '';
                                        }
                                break;
                                case 'INTEGER':
                                        $record[$key] = intval($record[$key]);
                                break;
                                case 'DOUBLE':
                                        $record[$key] = $record[$key];
                                break;
                                case 'CURRENCY':
                                        $record[$key] = number_format($record[$key], 2, ',', '');
                                break;
                                default:
                                        $record[$key] = stripslashes($record[$key]);
                                }
                        }
                }
        return $record;
        }
        function encode($record) {
                if(is_array($record)) {
                        foreach($this->listDef["item"] as $field) {
                                $key = $field["field"];
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        if(!is_array($record[$key])) {
                                                $record[$key] = addslashes($record[$key]);
                                        } else {
                                                $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]);
                                        }
                                break;
                                case 'TEXT':
                                        if(!is_array($record[$key])) {
                                                $record[$key] = addslashes($record[$key]);
                                        } else {
                                                $record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]);
                                        }
                                break;
                                case 'DATE':
                                        if($record[$key] > 0) {
                                                list($tag,$monat,$jahr) = explode('.',$record[$key]);
                                                $record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
                                        }
                                break;
                                case 'INTEGER':
                                        $record[$key] = intval($record[$key]);
                                break;
                                case 'DOUBLE':
                                        $record[$key] = addslashes($record[$key]);
                                break;
                                case 'CURRENCY':
                                        $record[$key] = str_replace(",",".",$record[$key]);
                                break;
                                }
                        }
                }
                return $record;
        }
}
?>
interface/lib/config.inc.php
@@ -79,7 +79,7 @@
        Themes
*/
$conf["theme"]                                    = 'default';
$conf["theme"]                                    = 'grey';
$conf["html_content_encoding"]    = 'text/html; charset=iso-8859-1';
$conf["logo"]                                     = 'themes/default/images/mydnsconfig_logo.gif';
interface/web/themes/grey/icons/copy.png
interface/web/themes/grey/icons/folder.png
interface/web/themes/grey/icons/folder_closed.png
interface/web/themes/grey/icons/mail.png
interface/web/themes/grey/icons/paste.png
interface/web/themes/grey/icons/printer.png
interface/web/themes/grey/images/Nav_top_bg_2.png
interface/web/themes/grey/images/Thumbs.db
Binary files differ
interface/web/themes/grey/images/bg_nav_1.jpg
interface/web/themes/grey/images/bg_nav_1.png
interface/web/themes/grey/images/bg_nav_2.png
interface/web/themes/grey/images/bottom.png
interface/web/themes/grey/images/btn_back.png
interface/web/themes/grey/images/btn_filter.png
interface/web/themes/grey/images/btn_left.png
interface/web/themes/grey/images/btn_next.png
interface/web/themes/grey/images/btn_right.png
interface/web/themes/grey/images/left_logo_1.png
interface/web/themes/grey/images/left_logo_2.png
interface/web/themes/grey/images/logout.png
interface/web/themes/grey/images/nav_top_bg.gif
interface/web/themes/grey/images/nav_top_bg.png
interface/web/themes/grey/images/table_head_bg.png
interface/web/themes/grey/images/x.gif
interface/web/themes/grey/printstyle.css
New file
@@ -0,0 +1,27 @@
.fieldTitle {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 14px;
    color: #000000;
    font-weight:bold;
    text-decoration: none;
}
.fielContent {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 14px;
    color: #000000;
    text-decoration: none;
}
h1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 26px;
    font-weight:bold;
    color: #000000;
    text-decoration: none;
}
interface/web/themes/grey/style.css
New file
@@ -0,0 +1,295 @@
.navTopSelected {
    background-color: #FFFFFF;
    border-top: 1px solid #999999;
    border-right: 1px solid #999999;
    border-bottom: 1px none #999999;
    border-left: 1px solid #999999;
    text-align: center;
}
.navTop {
    border-top: 1px none #999999;
    border-right: 1px none #999999;
    border-bottom: 1px solid #999999;
    border-left: 1px none #999999;
}
.navTopDefault {
    background-color: #ADADAD;
    border: 1px solid #999999;
    text-align: center;
}
.mainContent {
    background-color: #FFFFFF;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-left-style: solid;
    border-top-color: #999999;
    border-right-color: #999999;
    border-bottom-color: #999999;
    border-left-color: #999999;
}
.txtNavTopDefault {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: bold;
    color: #FFFFFF;
    text-decoration: none;
}
.txtNavTopSelected {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: bold;
    color: #333333;
    text-decoration: none;
}
.navLeftHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: bold;
    color: #333333;
    text-decoration: none;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-top-style: none;
    border-right-style: none;
    border-bottom-style: solid;
    border-left-style: none;
    border-top-color: #999999;
    border-right-color: #999999;
    border-bottom-color: #4E70A7;
    border-left-color: #999999;
    text-align: left;
}
.navLeftItem {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    color: #333333;
    text-decoration: none;
    line-height: 15px;
}
.txtNavTopHelp {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #FFFFFF;
    text-decoration: none;
}
.tblHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #333333;
    /*background-color: #CCCCCC;*/
    background-image:url(../../themes/grey/images/table_head_bg.png);
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-top-style: solid;
    border-right-style: none;
    border-bottom-style: solid;
    border-left-style: solid;
    border-top-color: #C0CCDA;
    border-right-color: #C0CCDA;
    border-bottom-color: #C0CCDA;
    border-left-color: #C0CCDA;
}
.tblFooter {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: normal;
    color: #666666;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-top-style: solid;
    border-right-style: none;
    border-bottom-style: none;
    border-left-style: none;
    border-top-color: #C0CCDA;
    border-right-color: #999999;
    border-bottom-color: #999999;
    border-left-color: #999999;
}
.frmText11 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #333333;
    text-decoration: none;
}
.frmText11:Hover {
    text-decoration: underline;
}
textarea,input.text,select,option{
    color:#000000;
    font-family:CourierNew,Courier,monospace;
    background-color:#FCFCFC;
    font-size:14px;
    font-style:normal;
    font-variant:normal;
    font-weight:normal;
    scrollbar-arrow-color:#FFFFFF;
    scrollbar-track-color:#BFCBD9;
    scrollbar-face-color:#BFCBD9;
    scrollbar-base-color:#BFCBD9;
    scrollbar-3dlight-color:#BFCBD9;
    border: 1 solid ##BFCBD9;
    position: relative;
}
.frmTextHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 18px;
    color: #333333;
    text-decoration: none;
}
.frmTextSubHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 12px;
    color: #333333;
    text-decoration: none;
}
.button {
    border-color : #666699 #666699 #666699 #666699;
    border-width : 1 1 1 1; color : Black;
    background-color : #FFFFFF;
    height : 19px;
    font-size : 12px;
}
.frmTab {
    border-top: 1px none #999999;
    border-right: 1px none #999999;
    border-bottom: 1px solid #C0CCDA;
    border-left: 1px none #999999;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    line-height: 16px;
}
.frmTabSelected {
    background-color: #FFFFFF;
    border-top: 1px solid #C0CCDA;
    border-right: 1px solid #C0CCDA;
    border-bottom: 1px none #999999;
    border-left: 1px solid #C0CCDA;
    text-align: center;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    line-height: 16px;
}
.frmTabDefault {
    background-color: #DEE4F2;
    border: 1px solid #C0CCDA;
    text-align: center;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    line-height: 16px;
}
.frmHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
    color: #666666;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-top-style: none;
    border-right-style: none;
    border-bottom-style: solid;
    border-left-style: none;
    border-top-color: #999999;
    border-right-color: #999999;
    border-bottom-color: #999999;
    border-left-color: #999999;
}
.frmSubHead {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #666666;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-top-style: none;
    border-right-style: none;
    border-bottom-style: solid;
    border-left-style: none;
    border-top-color: #999999;
    border-right-color: #999999;
    border-bottom-color: #999999;
    border-left-color: #999999;
    font-weight: bold;
}
.error {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    color: #000000;
    border: 1px solid #CC0000;
    text-decoration: none;
}
INPUT {
    border: 1px solid #BFCBD9;
}
TEXTAREA {
    border: 1px solid #BFCBD9;
}
.fieldTitle {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000000;
    font-weight:bold;
    text-decoration: none;
}
.fielContent {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #000000;
    text-decoration: none;
}
h2 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 18px;
    color: #333333;
    text-decoration: none;
    font-weight:bold;
}
h3 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 16px;
    color: #333333;
    text-decoration: none;
    font-weight:bold;
}
interface/web/themes/grey/templates/form.tpl.htm
New file
@@ -0,0 +1,25 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../themes/{tmpl_var name="theme"}/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function del_record(link) {
  if(window.confirm("<tmpl_var name='delete_confirmation'>")) {
          location.href = link;
  }
}
//-->
</script>
</head>
<body>
<form method="post" action="<tmpl_var name='form_action'>" name="myform" enctype="multipart/form-data">
<tmpl_dyninclude name="content_tpl">
</form>
</body>
</html>
interface/web/themes/grey/templates/listpage.tpl.htm
New file
@@ -0,0 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../themes/{tmpl_var name="theme"}/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function del_record(link) {
  if(window.confirm("<tmpl_var name='delete_confirmation'>")) {
          location.href = link;
  }
}
//-->
</script>
</head>
<body>
<tmpl_dyninclude name="content_tpl">
</body>
</html>
interface/web/themes/grey/templates/mail.tpl.htm
New file
@@ -0,0 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<tmpl_dyninclude name="content_tpl">
</body>
</html>
interface/web/themes/grey/templates/main.tpl.htm
New file
@@ -0,0 +1,48 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><tmpl_var name="app_title"></title>
<meta http-equiv="Content-Type" content="{tmpl_var name='html_content_encoding'}">
<link href="themes/{tmpl_var name="theme"}/style.css" rel="stylesheet" type="text/css">
<script language= "JavaScript">
function breakout()
{
if (window.top != window.self)
 {
 window.top.location="index.php"
 }
}
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onLoad="breakout()">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr bgcolor="#496FA8">
    <td height="30" colspan="2" align="right" valign="top" background="themes/{tmpl_var name="theme"}/images/bg_nav_1.png"><img src="themes/grey/images/left_logo_1.png" style="float:left;"><a href="login/logout.php?phpsessid=<tmpl_var name='phpsessid'>"><img src="themes/grey/images/logout.png" style="float:right;" border="0"></a></td>
  </tr>
  <tr>
    <td width="128" height="18" align="left" valign="middle" background="themes/{tmpl_var name="theme"}/images/nav_top_bg_2.png" ><img src="themes/grey/images/left_logo_2.png" style="float:left;"><br>
    </td>
    <td height="18" align="left" valign="bottom" bgcolor="#E3E3E3">
        <table width="100%" height="18" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <tmpl_loop name="nav_top">
        <tmpl_if name="active">
        <td width="{tmpl_var name='tab_width'}" class="navTopSelected"><a href="#" class="txtNavTopSelected"><tmpl_var name="title"></a></td>
        <tmpl_else>
        <td width="{tmpl_var name='tab_width'}" class="navTopDefault"><a href="capp.php?mod=<tmpl_var name='module'>&phpsessid=<tmpl_var name='phpsessid'>" class="txtNavTopDefault"><tmpl_var name="title"></a></td>
        </tmpl_if>
        </tmpl_loop>
        <td align="right" valign="middle" class="navTop" background="themes/{tmpl_var name="theme"}/images/bg_nav_2.png"><img src="themes/{tmpl_var name="theme"}/images/x.gif" width="123" height="1"> </td>
          </tr>
    </table>
    </td>
  </tr>
  <tmpl_dyninclude name="module_tpl">
</table>
<map name="Map">
<area shape="rect" coords="68,2,108,20" href="login/logout.php?phpsessid=<tmpl_var name='phpsessid'>">
<area shape="rect" coords="8,2,50,7" href="help/index.php?phpsessid=<tmpl_var name='phpsessid'>" target="content">
</map>
</body>
</html>
interface/web/themes/grey/templates/module.tpl.htm
New file
@@ -0,0 +1,37 @@
  <tr>
    <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.png">&nbsp;</td>
    <td rowspan="3" class="mainContent">
        <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
            <tr>
                <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
              </tr>
        </table>
    </td>
  </tr>
  <tr>
    <td width="128" align="right" valign="top" bgcolor="#DEDEDE"><table width="128" border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td height="10">&nbsp;</td>
      </tr>
      <tr><td align="center">
      <tmpl_loop name="nav_left">
      <table bgcolor="#FFFFFF" width="115">
      <tr>
        <td class="navLeftHead"><tmpl_var name="title"></td>
        </tr>
      <tr>
        <td>
          <tmpl_loop name="items">
          <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
          </tmpl_loop>
        </td>
      </tr>
      </table>
      <br />
      </tmpl_loop>
      </td></tr>
    </table></td>
  </tr>
  <tr>
    <td align="left" valign="bottom" bgcolor="#DEDEDE"><img src="themes/{tmpl_var name="theme"}/images/bottom.png" /></td>
  </tr>
interface/web/themes/grey/templates/module_tree.tpl.htm
New file
@@ -0,0 +1,38 @@
  <tr>
    <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif">&nbsp;</td>
    <td rowspan="3" class="mainContent">
        <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
            <tr>
                <td width="200"><iframe height="100%" width="100%" frameborder="0" name="navframe" src="{tmpl_var name="navframe_page"}"></iframe></td>
                <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
              </tr>
        </table>
    </td>
  </tr>
  <tr>
    <td width="128" align="right" valign="top" bgcolor="#DEE4F2"><table width="128" border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td height="10">&nbsp;</td>
      </tr>
      <tr><td align="center">
      <tmpl_loop name="nav_left">
      <table bgcolor="#F4F6FB" width="115">
      <tr>
        <td class="navLeftHead"><tmpl_var name="title"></td>
        </tr>
      <tr>
        <td>
          <tmpl_loop name="items">
          <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
          </tmpl_loop>
        </td>
      </tr>
      </table>
      <br />
      </tmpl_loop>
      </td></tr>
    </table></td>
  </tr>
  <tr>
    <td align="left" valign="bottom" bgcolor="#DEE4F2">&nbsp;</td>
  </tr>
interface/web/themes/grey/templates/print.tpl.htm
New file
@@ -0,0 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../themes/{tmpl_var name="theme"}/printstyle.css" rel="stylesheet" type="text/css">
</head>
<body onLoad="window.print();">
<tmpl_dyninclude name="content_tpl">
</body>
</html>
interface/web/themes/grey/templates/searchpage.tpl.htm
New file
@@ -0,0 +1,23 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../themes/{tmpl_var name="theme"}/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function del_record(link) {
  if(window.confirm("<tmpl_var name='delete_confirmation'>")) {
          location.href = link;
  }
}
//-->
</script>
</head>
<body>
<tmpl_dyninclude name="content_tpl">
</body>
</html>
interface/web/themes/grey/templates/tabbed_form.tpl.htm
New file
@@ -0,0 +1,70 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>42go Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../themes/{tmpl_var name="theme"}/style.css" rel="stylesheet" type="text/css">
<script language="JavaScript">
<!--
function changeTab(tab) {
    document.myform.next_tab.value = tab;
    document.myform.submit();
}
//-->
</script>
</head>
<body>
<form method="post" action="<tmpl_var name='form_action'>" name="myform" enctype="multipart/form-data">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tmpl_if name="form_hint">
  <tr>
    <td class="frmTextHead"><div style="float:left;"><tmpl_var name="form_hint"></div><div style="float:right; margin-right:20px; padding:5px; border: 1px solid #BFCBD9;"><tmpl_var name="form_navibar"><!-- &nbsp; <a href=""><img src="../themes/grey/icons/copy.png" border="0" alt="Kopieren" /></a> &nbsp; <a href=""><img src="../themes/iprg/icons/paste.png" border="0" alt="Einfügen" /></a>--></div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  </tmpl_if>
  <tr>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="2" class="frmTab">&nbsp;</td>
        <tmpl_loop name="formTab">
        <tmpl_if name="active">
        <td width="<tmpl_var name='width'>" align="center" class="frmTabSelected"><a href="javascript:changeTab('<tmpl_var name='name'>')" class="frmText11"><tmpl_var name='title'></a></td>
        <td width="2" class="frmTab">&nbsp;</td>
        <tmpl_else>
        <td width="<tmpl_var name='width'>" class="frmTabDefault"><a href="javascript:changeTab('<tmpl_var name='name'>')" class="frmText11"><tmpl_var name='title'></a></td>
        <td width="2" class="frmTab">&nbsp;</td>
        </tmpl_if>
        </tmpl_loop>
        <td class="frmTab">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tmpl_if name="error">
  <tr>
    <td class="error"><tmpl_var name="error"></td>
  </tr>
  </tmpl_if>
  <tr>
    <td>
        <tmpl_dyninclude name="content_tpl">
    </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td class="tblFooter">&nbsp;</td>
  </tr>
</table>
<input type="hidden" name="next_tab" value="">
<input type="hidden" name="phpsessid" value="{tmpl_var name='phpsessid'}">
</form>
</body>
</html>
interface/web/themes/grey/templates/vorlage_gesamt.tpl.htm
New file
@@ -0,0 +1,87 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>42go</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../style.css" rel="stylesheet" type="text/css">
<script language= "JavaScript">
function breakout()
{
if (window.top != window.self)
 {
 window.top.location="index.php"
 }
}
</script>
</head>
<body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onload="breakout()">
<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
  <tr bgcolor="#7F99A6">
    <td height="30" colspan="2" align="center" valign="top"><table width="100%" height="30" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td align="left" valign="top"><img src="../images/mb_logo.gif" width="149" height="23"></td>
        <td align="right" valign="top"><img src="../images/nav_de_en.gif" width="125" height="23"></td>
      </tr>
    </table></td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td height="1" colspan="2" align="center" valign="bottom"><img src="../images/x.gif" width="1" height="1"></td>
  </tr>
  <tr>
    <td width="128" height="18" align="left" valign="middle" bgcolor="#003050"><img src="../images/login_logout.gif" width="109" height="18"><br>
    </td>
    <td height="18" align="left" valign="bottom" bgcolor="#003050">
        <table width="100%" height="18" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <tmpl_loop name="nav_top">
        <tmpl_if name="active">
        <td width="100" class="navTopSelected"><a href="#" class="txtNavTopSelected"><tmpl_var name="title"></a></td>
        <td width="2" class="navTop">&nbsp;</td>
        <tmpl_else>
        <td width="100" class="navTopDefault"><a href="capp.php?mod=<tmpl_var name='module'>&phpsessid=<tmpl_var name='phpsessid'>" class="txtNavTopDefault"><tmpl_var name="title"></a></td>
        <td width="2" class="navTop">&nbsp;</td>
        </tmpl_if>
        </tmpl_loop>
        <td align="right" valign="middle" class="navTop"><img src="../images/mp_logo.gif" width="111" height="18"> </td>
          </tr>
    </table>
    </td>
  </tr>
  <!-- BEGIN MODULE -->
  <tr>
    <td width="128" height="26" background="themes/{tmpl_var name="theme"}/images/nav_top_bg.gif">&nbsp;</td>
    <td rowspan="3" class="mainContent">
        <table width="100%" height="100%" border="0" cellpadding="20" cellspacing="0">
            <tr>
                <td><iframe height="100%" width="100%" frameborder="0" name="content" src="{tmpl_var name="startpage"}"></iframe></td>
              </tr>
        </table>
    </td>
  </tr>
  <tr>
    <td width="128" align="right" valign="top" bgcolor="#EEEEEE"><table width="115" border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td height="34">&nbsp;</td>
      </tr>
      <tmpl_loop name="nav_left">
      <tr>
        <td class="navLeftHead"><tmpl_var name="title"></td>
        </tr>
      <tr>
        <td>
          <tmpl_loop name="items">
          <a href="<tmpl_var name='link'>" class="navLeftItem" target="<tmpl_var name='target'>"><tmpl_var name="title"></a><br>
          </tmpl_loop>
        </td>
      </tr>
      </tmpl_loop>
    </table></td>
  </tr>
  <tr>
    <td align="left" valign="bottom" bgcolor="#EEEEEE"><img src="../images/ipr_logo.gif" width="121" height="53"></td>
  </tr>
  <!-- END MODULE -->
</table>
</body>
</html>