summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/acf_www-controller.lua11
-rw-r--r--app/template-html.lsp6
-rw-r--r--lib/menubuilder.lua15
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
</div>
<? local class="" ?>
- <? for k,v in pairs(submenu) do
- if v == pageinfo.action then
+ <? for k,v in pairs(submenu or {}) do
+ if submenu[k]["action"] == pageinfo.action then
class="class='selected'"
else
class=""
end
- io.write (string.format('\t\t\t<a %s href="%s">%s</a>\n',class,v,v ))
+ io.write (string.format('\t\t\t<a %s href="%s">%s</a>\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