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>
This commit is contained in:
Jo-Philipp Wich 2018-06-29 17:46:56 +02:00
parent 2e2dab3e56
commit 3aba615029

View file

@ -703,15 +703,22 @@ function _create_node(path)
local last = table.remove(path) local last = table.remove(path)
local parent = _create_node(path) local parent = _create_node(path)
c = {nodes={}, auto=true} c = {nodes={}, auto=true, inreq=true}
-- the node is "in request" if the request path matches
-- at least up to the length of the node path local _, n
if parent.inreq and context.path[#path+1] == last then for _, n in ipairs(path) do
c.inreq = true if context.path[_] ~= n then
c.inreq = false
break
end
end end
c.inreq = c.inreq and (context.path[#path + 1] == last)
parent.nodes[last] = c parent.nodes[last] = c
context.treecache[name] = c context.treecache[name] = c
end end
return c return c
end end