diff options
author | lutty <lutty@lutty.me> | 2017-05-02 12:17:24 +0800 |
---|---|---|
committer | lutty <lutty@lutty.me> | 2017-05-02 12:17:24 +0800 |
commit | 9a067e896d81ccd338a57bd24eeb951ad06f854b (patch) | |
tree | 88d567f3d1d0b41e2eec62d6104d7fe2947ea793 | |
parent | 61797d5b1323646af148e839e01fe41ea29e22da (diff) |
fix some bug and sync some code from luci-theme-bootstrap
Signed-off-by: lutty <lutty@lutty.me>
-rw-r--r--[-rwxr-xr-x] | themes/luci-theme-material/luasrc/view/themes/material/header.htm | 215 |
1 files changed, 115 insertions, 100 deletions
diff --git a/themes/luci-theme-material/luasrc/view/themes/material/header.htm b/themes/luci-theme-material/luasrc/view/themes/material/header.htm index 8419ade76..d84fd278a 100755..100644 --- a/themes/luci-theme-material/luasrc/view/themes/material/header.htm +++ b/themes/luci-theme-material/luasrc/view/themes/material/header.htm @@ -2,14 +2,14 @@ Material is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI luci-theme-material - Copyright 2015 Lutty Yang <lutty@wcan.in> + Copyright 2015-2017 Lutty Yang <lutty@wcan.in> Have a bug? Please create an issue here on GitHub! https://github.com/LuttyYang/luci-theme-material/issues luci-theme-bootstrap: Copyright 2008 Steven Barth <steven@midlink.org> - Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2008-2016 Jo-Philipp Wich <jow@openwrt.org> Copyright 2012 David Menting <david@nut-bolt.nl> MUI: @@ -19,7 +19,6 @@ -%> <% - local ver = require "luci.version" local sys = require "luci.sys" local util = require "luci.util" local http = require "luci.http" @@ -51,30 +50,27 @@ end end - -- send as HTML5 + -- send as HTML5 http.prepare_content("text/html") local function nodeurl(prefix, name, query) - local url = controller .. prefix .. name .. "/" + local u = url(prefix, name) if query then - url = url .. http.build_querystring(query) + u = u .. http.build_querystring(query) end - return pcdata(url) + return pcdata(u) end - local function subtree(prefix, node, level) + local function render_tabmenu(prefix, node, level) if not level then level = 1 end local childs = disp.node_childs(node) if #childs > 0 then - - if level > 2 then -%> - <ul class="tabs"> - <% - end + if level > 2 then + write('<ul class="tabs">') + end local selected_node local selected_name @@ -86,21 +82,100 @@ selected_node = nnode selected_name = v end - if level > 2 then - %> - <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 + + if level > 2 then + write('<li class="tabmenu-item-%s %s"><a href="%s">%s</a></li>' %{ + v, (nnode._menu_selected or (node.leaf and v == leaf)) and 'active' or '', + nodeurl(prefix, v, nnode.query), + striptags(translate(nnode.title)) + }) + end end - if level > 2 then - %> - </ul> -<% end + if level > 2 then + write('</ul>') + end if selected_node then - subtree(prefix .. selected_name .. "/", selected_node, level + 1) + render_tabmenu(prefix .. "/" .. selected_name, selected_node, level + 1) + end + end + end + + local function render_submenu(prefix, node) + local childs = disp.node_childs(node) + if #childs > 0 then + write('<ul class="slide-menu">') + + for i, r in ipairs(childs) do + local nnode = node.nodes[r] + local title = pcdata(striptags(translate(nnode.title))) + + write('<li><a data-title="%s" href="%s">%s</a></li>' %{ + title, + nodeurl(prefix, r, nnode.query), + title + }) + end + + write('</ul>') + end + end + + local function render_topmenu() + local childs = disp.node_childs(cattree) + if #childs > 0 then + write('<ul class="nav">') + + for i, r in ipairs(childs) do + local nnode = cattree.nodes[r] + local grandchildren = disp.node_childs(nnode) + + if #grandchildren > 0 then + local title = pcdata(striptags(translate(nnode.title))) + + write('<li class="slide"><a class="menu" data-title="%s" href="#">%s</a>' %{ + title, + title + }) + + render_submenu(category .. "/" .. r, nnode) + write('</li>') + else + local title = pcdata(striptags(translate(nnode.title))) + + write('<li><a data-title="%s" href="%s">%s</a></li>' %{ + title, + nodeurl(category, r, nnode.query), + title + }) + end + end + + write('</ul>') + end + end + + local function render_changes() + -- calculate the number of unsaved changes + if tree.nodes[category] and tree.nodes[category].ucidata then + local ucichanges = 0 + + for i, j in pairs(require("luci.model.uci").cursor():changes()) do + for k, l in pairs(j) do + for m, n in pairs(l) do + ucichanges = ucichanges + 1; + end + end + end + + if ucichanges > 0 then + write('<a class="label notice" href="%s?redir=%s">%s: %d</a>' %{ + url(category, 'uci/changes'), + http.urlencode(http.formvalue('redir') or REQUEST_URI), + translate('Unsaved Changes'), + ucichanges + }) end end end @@ -134,96 +209,30 @@ <link rel="stylesheet" href="<%=resource%>/<%=node.css%>"> <% end -%> <% if css then %> - <style title="text/css"> - <%-= css %> - </style> + <style title="text/css"><%= css %></style> <% end -%> <script src="<%=resource%>/xhr.js"></script> </head> - <body class="lang_<%=luci.i18n.context.lang%> <%- if node then %><%= striptags( node.title ) %><%- end %> <% if luci.dispatcher.context.authsession then %>logged-in<% end %>"> - <header> <div class="container"> <span class="showSide"></span> <a class="brand" href="#"><%=boardinfo.hostname or "?"%></a> <div class="pull-right"> - <% - -- calculate the number of unsaved changes - if tree.nodes[category] and tree.nodes[category].ucidata then - local ucichanges = 0 - for i, j in pairs(require("luci.model.uci").cursor():changes()) do - for k, l in pairs(j) do - for m, n in pairs(l) do - ucichanges = ucichanges + 1; - end - end - end - %> - <% if ucichanges > 0 then %> - <a class="label notice" href="<%=controller%>/<%=category%>/uci/changes?redir=<%=http.urlencode(http.formvalue("redir") or REQUEST_URI)%>"><span class="mobile-hide"><%:Unsaved Changes%>: </span><%=ucichanges%></a> - <% end %> + <% render_changes() %> <span id="xhr_poll_status" style="display:none" onclick="XHR.running() ? XHR.halt() : XHR.run()"> - <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%> </span><%:on%></span> - <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%> </span><%:off%></span> + <span class="label success" id="xhr_poll_status_on"><span class="mobile-hide"><%:Auto Refresh%></span> <%:on%></span> + <span class="label" id="xhr_poll_status_off" style="display:none"><span class="mobile-hide"><%:Auto Refresh%></span> <%:off%></span> </span> - <% end %> </div> </div> </header> - - <div class="main"> +<div class="main"> <div style="" class="loading"><span><div class="loading-img"></div>Loading...</span></div> <div class="main-left"> - <ul class="nav"> - <%- - local function submenu(prefix, node) - local childs = disp.node_childs(node) - if #childs > 0 then - %> - <ul class="slide-menu"> - <%- - for i, r in ipairs(childs) do - local nnode = node.nodes[r] - local href = controller .. prefix .. r .. - (nnode.query and http.build_querystring(nnode.query) or "") - %> - <li><a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a></li> - <%- - end - %> - </ul> - <%- - end - end - - childs = disp.node_childs(cattree) - - if #childs > 0 then - for i, r in ipairs(childs) do - local nnode = cattree.nodes[r] - local href = controller .. "/" .. category .. "/" .. r .. - (nnode.query and http.build_querystring(k.query) or "") - local grandchildren = disp.node_childs(nnode) - - if #grandchildren > 0 then - %> - <li class="slide"> - <a class="menu" data-title="<%=pcdata(striptags(nnode.title))%>" href="#"><%=pcdata(striptags(translate(nnode.title)))%></a> - <%- submenu(category .. "/" .. r .. "/", nnode) %> - </li> - <% else %> - <li> - <a data-title="<%=pcdata(striptags(nnode.title))%>" href="<%=pcdata(href)%>"><%=pcdata(striptags(translate(nnode.title)))%></a> - </li> - <% - end - end - end - %> - </ul> + <% render_topmenu() %> </div> - <div class="main-right"> + <div class="main-right"> <div class="darkMask"></div> <div id="maincontent"> <div class="container"> @@ -234,5 +243,11 @@ <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a> </div> <%- end -%> - <% if category then subtree("/" .. category .. "/", cattree) end %> - + <% if category then render_tabmenu(category, cattree) end %> + + <noscript> + <div class="alert-message warning"> + <strong><%:JavaScript required!%></strong><br /> + <%:You must enable JavaScript in your browser or LuCI will not work properly.%> + </div> + </noscript> |