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,87 +13,73 @@ $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 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 hostname = sys.hostname()
local i, r local load1, load5, load15 = sys.loadavg()
for i,r in ipairs(request) do
if c.nodes and c.nodes[r] then local request = disp.context.path
c = c.nodes[r] local request2 = disp.context.request
c._menu_selected = true
local category = request[1]
local cattree = category and disp.node(category)
local leaf = request2[#request2]
local tree = disp.node()
local node = disp.context.dispatched
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 end
end
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
require("luci.i18n").loadc("base")
require("luci.http").prepare_content("application/xhtml+xml")
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
selected_node = nnode
if nnode._menu_selected then selected_name = v
selected_node = nnode end
selected_name = v.name
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>
@ -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,15 +130,12 @@ 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 </ul>
end
%>
</ul>
<% end %> <% end %>
<% <%