From d30ca9d95aed1c4c95d5e2814ca9cf4881632195 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Sun, 9 Jun 2002 21:36:37 +0000 Subject: [PATCH] inital import of Tab-Widget --- etemplate/inc/class.tab_widget.inc.php | 97 ++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 etemplate/inc/class.tab_widget.inc.php diff --git a/etemplate/inc/class.tab_widget.inc.php b/etemplate/inc/class.tab_widget.inc.php new file mode 100644 index 0000000000..6c31e4dcb8 --- /dev/null +++ b/etemplate/inc/class.tab_widget.inc.php @@ -0,0 +1,97 @@ + * + * -------------------------------------------- * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU General Public License as published by the * + * Free Software Foundation; either version 2 of the License, or (at your * + * option) any later version. * + \**************************************************************************/ + + /* $Id$ */ + + /*! + @class tab_widget + @abstract widget that shows one row of tabs and an other row with the eTemplate of the selected tab + @note This widget is independent of the UI as it only uses etemplate-widgets and has therefor no render-function + */ + class tab_widget + { + var $public_functions = array( + 'pre_process' => True, + 'post_process' => True + ); + var $human_name = 'Tabs'; // this is the name for the editor + + function tab_widget($ui) + { + } + + function pre_process(&$cell,&$value,&$parent) + { + $labels = explode('|',$cell['label']); + $helps = explode('|',$cell['help']); + $names = explode('|',$cell['name']); + + $cell['type'] = 'template'; + $templ = new etemplate(); + + $templ->init('*** generated tab_widget','','',0,'',0,0); // make an empty template + + $tabs = array(); // generate the tabs row + while (list($k,$name) = each($names)) + { + $tcell = $templ->empty_cell(); + $tcell['name'] = "_tab_widget[$name]"; + $tcell['type'] = 'button'; + $tcell['label'] = $labels[$k]; + $tcell['help'] = $helps[$k]; + if (is_array($value['_tab_widget']) && isset($value['_tab_widget'][$name])) + { + $tcell['span'] = ',nmh'; // set tab as selected + $GLOBALS['phpgw_info']['etemplate']['extension_data']['tab_widget'][$cell['name']] = $selected_tab = $name; + } + $tabs[$templ->num2chrs($k)] = $tcell; + } + // add one empty cell to take all the space of the row + $tabs[$k = $templ->num2chrs(sizeof($tabs))] = $templ->empty_cell(); + $templ->data[0][$k] = '99%'; // width + + if (!isset($selected_tab)) + { + $tabs['A']['span'] = ',nmh'; + $GLOBALS['phpgw_info']['etemplate']['extension_data']['tab_widget'][$cell['name']] = $selected_tab = $names[0]; + } + $templ->data[1] = $tabs; + + $tcell = $templ->empty_cell(); // make the tabwidget-body + $tcell['type'] = 'template'; + $tcell['name'] = $selected_tab; + $tcell['span'] = 'all'; + $templ->data[2]['A'] = $tcell; + + $templ->rows = 2; + $templ->cols = sizeof($tabs); + + $cell['type'] = 'template'; + $cell['name'] = $templ; + $cell['label'] = $cell['help'] = ''; + + return False; // extra Label NOT ok + } + + function post_process(&$cell,&$value,&$templ) + { + $old_value = array( + '_tab_widget' => array( + $GLOBALS['phpgw_info']['etemplate']['extension_data']['tab_widget'][$cell['name']] => True + )); + $this->pre_process($cell,$old_value,$templ); + + $templ->loop = is_array($value['_tab_widget']); + + return True; + } + } \ No newline at end of file