From 8a2259ae99dc402bb8c08447573a00109587cae6 Mon Sep 17 00:00:00 2001 From: Nathan Gray Date: Mon, 6 May 2013 17:17:52 +0000 Subject: [PATCH] Enhance tab widget's 'tabs' attribute to include hidden, and id to access content array --- etemplate/js/et2_widget_tabs.js | 49 +++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/etemplate/js/et2_widget_tabs.js b/etemplate/js/et2_widget_tabs.js index 8201dba675..66aad0a32e 100644 --- a/etemplate/js/et2_widget_tabs.js +++ b/etemplate/js/et2_widget_tabs.js @@ -29,7 +29,7 @@ var et2_tabbox = et2_DOMWidget.extend( 'tabs': { 'name': 'Tabs', 'default': et2_no_init, - 'description': "Array of [extra] tabs. Each tab needs {label:..., template:...}" + 'description': "Array of [extra] tabs. Each tab needs {label:..., template:...}. Additional optional keys are hidden and id, for access into content array" } }, @@ -166,30 +166,37 @@ var et2_tabbox = et2_DOMWidget.extend( // Read and create the widgets defined in the "tabpanels" this._readTabPanels(tabData, tabpanels); - - // Add any extra tabs - if(this.options.tabs) - { - for(var i = 0; i < this.options.tabs.length; i++) - { - var tab = this.options.tabs[i]; - tabData.push({ - "label": this.egw().lang(tab.label), - "widget": et2_createWidget('template',{id:tab.template},this), - "contentDiv": null, - "flagDiv": null, - "hidden": false - }); - } - } - - // Create the tab DOM-Nodes - this.createTabs(tabData); } else { - throw("Error while parsing tabbox, none or multiple tabs or tabpanels tags!"); + this.egw().debug("error","Error while parsing tabbox, none or multiple tabs or tabpanels tags!",this); } + + // Add any extra tabs + if(this.options.tabs.length) + { + var readonly = this.getArrayMgr("readonlys").getEntry(this.id) || {}; + for(var i = 0; i < this.options.tabs.length; i++) + { + var tab = this.options.tabs[i]; + var tab_id = tab.id || tab.template; + var tab_options = {id: tab_id, template:tab.template}; + if(tab.id) + { + tab_options.content = tab.id; + } + tabData.push({ + "label": this.egw().lang(tab.label), + "widget": et2_createWidget('template',tab_options,this), + "contentDiv": null, + "flagDiv": null, + "hidden": typeof tab.hidden != "undefined" ? tab.hidden : readonly[tab_id] || false + }); + } + } + + // Create the tab DOM-Nodes + this.createTabs(tabData); }, /**