themes/openwrt: cleanup menu construction code, use node_visible() and node_childs() helper

This commit is contained in:
Jo-Philipp Wich 2011-10-26 00:27:00 +00:00
parent 5f7d2719b2
commit 6516d7ba5b

View file

@ -13,19 +13,30 @@ $Id$
-%> -%>
<% <%
require("luci.sys") local sys = require "luci.sys"
local load1, load5, load15 = luci.sys.loadavg() local http = require "luci.http"
local request = require("luci.dispatcher").context.path local disp = require "luci.dispatcher"
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 category = request[1]
local request2 = require("luci.dispatcher").context.request local cattree = category and disp.node(category)
local leaf = request2[#request2] local leaf = request2[#request2]
local tree = luci.dispatcher.node()
local cattree = category and luci.dispatcher.node(category) local tree = disp.node()
local node = luci.dispatcher.context.dispatched local node = disp.context.dispatched
local hostname = luci.sys.hostname()
local categories = disp.node_childs(tree)
local c = tree local c = tree
local i, r local i, r
-- tag all nodes leading to this page
for i, r in ipairs(request) do for i, r in ipairs(request) do
if c.nodes and c.nodes[r] then if c.nodes and c.nodes[r] then
c = c.nodes[r] c = c.nodes[r]
@ -33,68 +44,43 @@ for i,r in ipairs(request) do
end end
end end
local has_categories = 0 http.prepare_content("application/xhtml+xml")
for i,r in pairs(tree.nodes) do
if r.title and not r.hidden then
has_categories = has_categories + 1
end
end
require("luci.i18n").loadc("base")
require("luci.http").prepare_content("application/xhtml+xml")
local function nodeurl(prefix, name, query) local function nodeurl(prefix, name, query)
local url = controller .. prefix .. name .. "/" local url = controller .. prefix .. name .. "/"
if query then if query then
url = url .. luci.http.build_querystring(query) url = url .. http.build_querystring(query)
end end
return pcdata(url) return pcdata(url)
end end
local function subtree(prefix, node, level) local function subtree(prefix, node, level)
if not node.nodes or node.hidden then
return false
end
if not level then if not level then
level = 1 level = 1
end end
local index = {} local childs = disp.node_childs(node)
local count = 0 if #childs > 0 then
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
%> %>
<div class="tabmenu<%=level%>"> <div class="tabmenu<%=level%>">
<ul class="tabmenu l<%=level%>"> <ul class="tabmenu l<%=level%>">
<% <%
local selected_node local selected_node
local selected_name local selected_name
local i, v
for j, v in pairs(index) do for i, v in ipairs(childs) do
if #v.name > 0 then local nnode = node.nodes[v]
local nnode = node.nodes[v.name]
if nnode._menu_selected then if nnode._menu_selected then
selected_node = nnode selected_node = nnode
selected_name = v.name selected_name = v
end end
%> %>
<li class="tabmenu-item-<%=v.name%><% if nnode._menu_selected or (node.leaf and v.name == leaf) then %> active<% end %>"> <li class="tabmenu-item-<%=v%><% if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>">
<a href="<%=nodeurl(prefix, v.name, nnode.query)%>"><%=striptags(translate(nnode.title))%></a> <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a>
</li> </li>
<% <%
end end
end
%> %>
</ul> </ul>
<br style="clear:both" /> <br style="clear:both" />
@ -107,8 +93,6 @@ require("luci.http").prepare_content("application/xhtml+xml")
<% <%
end end
end end
-%> -%>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
@ -146,14 +130,11 @@ require("luci.http").prepare_content("application/xhtml+xml")
</span> </span>
</div> </div>
<% if has_categories > 1 then %> <% if #categories > 1 then %>
<ul id="modemenu"><% <ul id="modemenu">
for k,node in pairs(tree.nodes) do <% for i, r in ipairs(categories) do %>
if node.title and not node.hidden then %> <li><a<% if request[1] == r then %> class="active"<%end%> href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a></li>
<li><a<% if request[1] == k then %> class="active"<%end%> href="<%=controller%>/<%=k%>/"><%=striptags(translate(node.title))%></a></li><% <% end %>
end
end
%>
</ul> </ul>
<% end %> <% end %>