diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-26 00:27:00 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2011-10-26 00:27:00 +0000 |
commit | 6516d7ba5b943ab741626d1d728893480116b317 (patch) | |
tree | 2d52206a9aa98de12a72628aa6937e75c36767a4 /themes | |
parent | 5f7d2719b23f30ebfcfc0fff13a3e87f6427c587 (diff) |
themes/openwrt: cleanup menu construction code, use node_visible() and node_childs() helper
Diffstat (limited to 'themes')
-rw-r--r-- | themes/openwrt/luasrc/view/themes/openwrt.org/header.htm | 113 |
1 files changed, 47 insertions, 66 deletions
diff --git a/themes/openwrt/luasrc/view/themes/openwrt.org/header.htm b/themes/openwrt/luasrc/view/themes/openwrt.org/header.htm index 19f061443..ddd960401 100644 --- a/themes/openwrt/luasrc/view/themes/openwrt.org/header.htm +++ b/themes/openwrt/luasrc/view/themes/openwrt.org/header.htm @@ -13,87 +13,73 @@ $Id$ -%> <% -require("luci.sys") -local load1, load5, load15 = luci.sys.loadavg() -local request = require("luci.dispatcher").context.path -local category = request[1] -local request2 = require("luci.dispatcher").context.request -local leaf = request2[#request2] -local tree = luci.dispatcher.node() -local cattree = category and luci.dispatcher.node(category) -local node = luci.dispatcher.context.dispatched -local hostname = luci.sys.hostname() - -local c = tree -local i, r -for i,r in ipairs(request) do - if c.nodes and c.nodes[r] then - c = c.nodes[r] - c._menu_selected = true - end -end + local sys = require "luci.sys" + local http = require "luci.http" + local disp = require "luci.dispatcher" -local has_categories = 0 -for i,r in pairs(tree.nodes) do - if r.title and not r.hidden then - has_categories = has_categories + 1 - end -end + local hostname = sys.hostname() + local load1, load5, load15 = sys.loadavg() + + local request = disp.context.path + local request2 = disp.context.request + + local category = request[1] + local cattree = category and disp.node(category) + + local leaf = request2[#request2] + + local tree = disp.node() + local node = disp.context.dispatched -require("luci.i18n").loadc("base") -require("luci.http").prepare_content("application/xhtml+xml") + local categories = disp.node_childs(tree) + local c = tree + local i, r + + -- tag all nodes leading to this page + for i, r in ipairs(request) do + if c.nodes and c.nodes[r] then + c = c.nodes[r] + c._menu_selected = true + end + end + + http.prepare_content("application/xhtml+xml") local function nodeurl(prefix, name, query) local url = controller .. prefix .. name .. "/" if query then - url = url .. luci.http.build_querystring(query) + url = url .. http.build_querystring(query) end return pcdata(url) end local function subtree(prefix, node, level) - if not node.nodes or node.hidden then - return false - end - if not level then level = 1 end - local index = {} - local count = 0 - for k, n in pairs(node.nodes) do - if n.title and n.target then - table.insert(index, {name=k, order=n.order or 100}) - count = count + 1 - end - end - - table.sort(index, function(a, b) return a.order < b.order end) - - if count > 0 then + local childs = disp.node_childs(node) + if #childs > 0 then %> <div class="tabmenu<%=level%>"> <ul class="tabmenu l<%=level%>"> <% local selected_node local selected_name + local i, v - for j, v in pairs(index) do - if #v.name > 0 then - local nnode = node.nodes[v.name] - - if nnode._menu_selected then - selected_node = nnode - selected_name = v.name - end + for i, v in ipairs(childs) do + local nnode = node.nodes[v] + if nnode._menu_selected then + selected_node = nnode + selected_name = v + end %> - <li class="tabmenu-item-<%=v.name%><% if nnode._menu_selected or (node.leaf and v.name == leaf) then %> active<% end %>"> - <a href="<%=nodeurl(prefix, v.name, nnode.query)%>"><%=striptags(translate(nnode.title))%></a> + <li class="tabmenu-item-<%=v%><% if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>"> + <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a> </li> <% - end end %> </ul> @@ -107,8 +93,6 @@ require("luci.http").prepare_content("application/xhtml+xml") <% end end - - -%> <?xml version="1.0" encoding="utf-8"?> @@ -146,15 +130,12 @@ require("luci.http").prepare_content("application/xhtml+xml") </span> </div> -<% if has_categories > 1 then %> -<ul id="modemenu"><% -for k,node in pairs(tree.nodes) do - if node.title and not node.hidden then %> -<li><a<% if request[1] == k then %> class="active"<%end%> href="<%=controller%>/<%=k%>/"><%=striptags(translate(node.title))%></a></li><% - end -end -%> -</ul> +<% if #categories > 1 then %> + <ul id="modemenu"> + <% for i, r in ipairs(categories) do %> + <li><a<% if request[1] == r then %> class="active"<%end%> href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a></li> + <% end %> + </ul> <% end %> <% |