luci-base: dispatcher.lua: factor out template class init into own function

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2019-12-04 19:04:50 +01:00
parent a6b214f873
commit 1ec6e72106

View file

@ -668,55 +668,10 @@ function menu_json()
}) })
end end
function dispatch(request) local function init_template_engine(ctx)
--context._disable_memtrace = require "luci.debug".trap_memtrace("l") local tpl = require "luci.template"
local ctx = context local media = luci.config.main.mediaurlbase
ctx.path = request
local c = ctx.tree
local stat
if not c then
c = createtree()
end
local track = {}
local args = {}
ctx.args = args
ctx.requestargs = ctx.requestargs or args
local n
local preq = {}
local freq = {}
for i, s in ipairs(request) do
preq[#preq+1] = s
freq[#freq+1] = s
c = c.nodes[s]
n = i
if not c then
break
end
util.update(track, c)
if c.leaf then
break
end
end
if c and c.leaf then
for j=n+1, #request do
args[#args+1] = request[j]
freq[#freq+1] = request[j]
end
end
ctx.requestpath = ctx.requestpath or freq
ctx.path = preq
-- Init template engine
if (c and c.index) or not track.notemplate then
local tpl = require("luci.template")
local media = track.mediaurlbase or luci.config.main.mediaurlbase
if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then
media = nil media = nil
for name, theme in pairs(luci.config.themes) do for name, theme in pairs(luci.config.themes) do
@ -787,6 +742,58 @@ function dispatch(request)
return rawget(tbl, key) or _G[key] return rawget(tbl, key) or _G[key]
end end
end}) end})
return tpl
end
function dispatch(request)
--context._disable_memtrace = require "luci.debug".trap_memtrace("l")
local ctx = context
ctx.path = request
local c = ctx.tree
local stat
if not c then
c = createtree()
end
local track = {}
local args = {}
ctx.args = args
ctx.requestargs = ctx.requestargs or args
local n
local preq = {}
local freq = {}
for i, s in ipairs(request) do
preq[#preq+1] = s
freq[#freq+1] = s
c = c.nodes[s]
n = i
if not c then
break
end
util.update(track, c)
if c.leaf then
break
end
end
if c and c.leaf then
for j=n+1, #request do
args[#args+1] = request[j]
freq[#freq+1] = request[j]
end
end
ctx.requestpath = ctx.requestpath or freq
ctx.path = preq
-- Init template engine
if (c and c.index) or not track.notemplate then
init_template_engine(ctx)
end end
track.dependent = (track.dependent ~= false) track.dependent = (track.dependent ~= false)