diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-06-29 17:46:56 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-07-02 08:46:26 +0200 |
commit | 3aba615029c73912f3f3c40d14bbb0081940ac8a (patch) | |
tree | 5957b4cd7eea4301fb7501d8d8f3fa9540ffaf2d /modules/luci-base | |
parent | 2e2dab3e56f89fc15e1b7604e4ae83fa6c6ab544 (diff) |
luci-base: rework "in request" flagging logic for menu nodes
The previous implementation failed to mark active nodes under some
circumstances.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base')
-rw-r--r-- | modules/luci-base/luasrc/dispatcher.lua | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index 6850d7e3a..6d5a8f4d3 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -703,15 +703,22 @@ function _create_node(path) local last = table.remove(path) local parent = _create_node(path) - c = {nodes={}, auto=true} - -- the node is "in request" if the request path matches - -- at least up to the length of the node path - if parent.inreq and context.path[#path+1] == last then - c.inreq = true + c = {nodes={}, auto=true, inreq=true} + + local _, n + for _, n in ipairs(path) do + if context.path[_] ~= n then + c.inreq = false + break + end end + + c.inreq = c.inreq and (context.path[#path + 1] == last) + parent.nodes[last] = c context.treecache[name] = c end + return c end |