X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fweb%2Fluasrc%2Fdispatcher.lua;h=03e7c7d65928c183d470092cea8418bb503ce7f1;hp=d58987a3f2f4a5ec394f1bd73646e428c8e2da3f;hb=b202a403ff38453c978c7ad0d972525cd81c7b99;hpb=511b573c9513f7ba9d01d4532d0af0695b578758 diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index d58987a3f..03e7c7d65 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -440,8 +440,12 @@ end --- Create a redirect to another dispatching node. -- @param ... Virtual path destination function alias(...) - local req = arg - return function() + local req = {...} + return function(...) + for _, r in ipairs({...}) do + req[#req+1] = r + end + dispatch(req) end end @@ -450,17 +454,23 @@ end -- @param n Number of path values to replace -- @param ... Virtual path to replace removed path values with function rewrite(n, ...) - local req = arg - return function() + local req = {...} + return function(...) + local dispatched = util.clone(context.dispatched) + for i=1,n do - table.remove(context.path, 1) + table.remove(dispatched, 1) + end + + for i, r in ipairs(req) do + table.insert(dispatched, i, r) end - for i,r in ipairs(req) do - table.insert(context.path, i, r) + for _, r in ipairs({...}) do + dispatched[#dispatched+1] = r end - dispatch() + dispatch(dispatched) end end @@ -507,11 +517,11 @@ function cbi(model) end http.header("X-CBI-State", state or 0) - luci.template.render("cbi/header") + luci.template.render("cbi/header", {state = state}) for i, res in ipairs(maps) do res:render() end - luci.template.render("cbi/footer") + luci.template.render("cbi/footer", {state = state}) end end