diff options
4 files changed, 38 insertions, 63 deletions
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index c4066a259..d85cb5824 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -40,6 +40,28 @@ function build_url(...) return table.concat(url, "") end +function _ordered_children(node) + local name, child, children = nil, nil, {} + + for name, child in pairs(node.nodes) do + children[#children+1] = { + name = name, + node = child, + order = child.order or 100 + } + end + + table.sort(children, function(a, b) + if a.order == b.order then + return a.name < b.name + else + return a.order < b.order + end + end) + + return children +end + function node_visible(node) if node then return not ( @@ -55,15 +77,10 @@ end function node_childs(node) local rv = { } if node then - local k, v - for k, v in util.spairs(node.nodes, - function(a, b) - return (node.nodes[a].order or 100) - < (node.nodes[b].order or 100) - end) - do - if node_visible(v) then - rv[#rv+1] = k + local _, child + for _, child in ipairs(_ordered_children(node)) do + if node_visible(child.node) then + rv[#rv+1] = child.name end end end @@ -595,11 +612,9 @@ function createtree() local ctx = context local tree = {nodes={}, inreq=true} - local modi = {} ctx.treecache = setmetatable({}, {__mode="v"}) ctx.tree = tree - ctx.modifiers = modi local scope = setmetatable({}, {__index = luci.dispatcher}) @@ -609,28 +624,9 @@ function createtree() v() end - local function modisort(a,b) - return modi[a].order < modi[b].order - end - - for _, v in util.spairs(modi, modisort) do - scope._NAME = v.module - setfenv(v.func, scope) - v.func() - end - return tree end -function modifier(func, order) - context.modifiers[#context.modifiers+1] = { - func = func, - order = order or 0, - module - = getfenv(2)._NAME - } -end - function assign(path, clone, title, order) local obj = node(unpack(path)) obj.nodes = nil @@ -720,24 +716,7 @@ end -- Subdispatchers -- function _find_eligible_node(root, prefix, deep, types, descend) - local _, cur_name, cur_node - local childs = { } - - for cur_name, cur_node in pairs(root.nodes) do - childs[#childs+1] = { - node = cur_node, - name = cur_name, - order = cur_node.order or 100 - } - end - - table.sort(childs, function(a, b) - if a.order == b.order then - return a.name < b.name - else - return a.order < b.order - end - end) + local children = _ordered_children(root) if not root.leaf and deep ~= nil then local sub_path = { unpack(prefix) } @@ -746,10 +725,11 @@ function _find_eligible_node(root, prefix, deep, types, descend) deep = nil end - for _, cur_node in ipairs(childs) do - sub_path[#prefix+1] = cur_node.name + local _, child + for _, child in ipairs(children) do + sub_path[#prefix+1] = child.name - local res_path = _find_eligible_node(cur_node.node, sub_path, + local res_path = _find_eligible_node(child.node, sub_path, deep, types, true) if res_path then diff --git a/modules/luci-base/luasrc/dispatcher.luadoc b/modules/luci-base/luasrc/dispatcher.luadoc index f26256953..a77f8d8b0 100644 --- a/modules/luci-base/luasrc/dispatcher.luadoc +++ b/modules/luci-base/luasrc/dispatcher.luadoc @@ -82,15 +82,6 @@ Build the index before if it does not exist yet. ]] ---[[ -Register a tree modifier. - -@class function -@name modifier -@param func Modifier function -@param order Modifier order value (optional) -]] - ----[[ Clone a node of the dispatching tree to another position. @class function diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css index 394361ecd..98f6022ca 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/cascade.css @@ -174,6 +174,10 @@ a:hover { float: left; } +.nowrap { + white-space: nowrap; +} + /* Typography.less * Headings, body text, lists, code, and more for a versatile and durable typography system * ---------------------------------------------------------------------------------------- */ @@ -1020,8 +1024,9 @@ header .dropdown-menu a.hover, padding: 0 2px; list-style: none; display: flex; - background: linear-gradient(#ddd 0%, #ddd 100%) repeat-x; - background-size: 1px 1px; + flex-wrap: wrap; + background: linear-gradient(#fff 28px, #ddd 28px); + background-size: 1px 29px; background-position: left bottom; } diff --git a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css index 2e1ffb035..062d274b7 100644 --- a/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css +++ b/themes/luci-theme-bootstrap/htdocs/luci-static/bootstrap/mobile.css @@ -11,7 +11,6 @@ header h3 a, header .brand { background: linear-gradient(#fff 20%, #ddd 100%); background-size: 1px 34px; margin-bottom: 10px; - flex-wrap: wrap; } .tabs > li, .cbi-tabmenu > li { |