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:
parent
2e2dab3e56
commit
3aba615029
1 changed files with 12 additions and 5 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue