From 488d84633e944dda8381ce9e8fd99674702b9e8c Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Wed, 6 Feb 2008 19:45:08 +0000 Subject: Changed the way the submenu-tabs is displayed. Now tabs are defined in the .menu files. git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@705 ab2d0c66-481e-0410-8bed-d214d4d58bed --- app/acf_www-controller.lua | 11 ++++------- app/template-html.lsp | 6 +++--- lib/menubuilder.lua | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/acf_www-controller.lua b/app/acf_www-controller.lua index 4e89db3..6b4bfdf 100644 --- a/app/acf_www-controller.lua +++ b/app/acf_www-controller.lua @@ -179,13 +179,10 @@ view_resolver = function(self) m=require("menubuilder") local menu = m.get_menuitems(self.conf.appdir) - -- A quick hack - submenu = {} - for k,v in pairs ( self.worker ) do - if type ( self.worker[k] ) == "function" then - table.insert (submenu, k) - end - end + -- Build the submenu table + local submenu = m.get_submenuitems(self.conf.appdir) + -- Show only tabs for current controller + submenu = submenu[pageinfo.controller] return function (viewtable) local template = haserl.loadfile (template) diff --git a/app/template-html.lsp b/app/template-html.lsp index f042e23..884c5cc 100644 --- a/app/template-html.lsp +++ b/app/template-html.lsp @@ -116,13 +116,13 @@ Content-Type: text/html - %s\n',class,v,v )) + io.write (string.format('\t\t\t%s\n',class,submenu[k]["action"],submenu[k]["tab"] )) end ?> diff --git a/lib/menubuilder.lua b/lib/menubuilder.lua index 6def1fe..ecdf9f1 100644 --- a/lib/menubuilder.lua +++ b/lib/menubuilder.lua @@ -37,6 +37,21 @@ local t_compare = function (x,y,f) return false end +-- Returns a table of all submenu items found +-- Displayorder of the tabs comes from the order in the .menu files +get_submenuitems = function (startdir) + local t = {} + local menuitems = get_menuitems(startdir) + + for k,v in pairs(menuitems) do + if (menuitems[k]["tab"] ~= "") then + if not (t[menuitems[k]["controller"]]) then t[menuitems[k]["controller"]] = {} end + table.insert (t[menuitems[k]["controller"]], {tab=menuitems[k]["tab"],action=menuitems[k]["action"]}) + end + end + + return t +end -- returns a table of all the menu items found, sorted by priority -- Table format: prefix controller cat group tab action -- cgit v1.2.3