end
-- Init template engine
- if not track.notemplate then
+ 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
+ media = nil
+ for name, theme in pairs(luci.config.themes) do
+ if name:sub(1,1) ~= "." and pcall(tpl.Template,
+ "themes/%s/header" % fs.basename(theme)) then
+ media = theme
+ end
+ end
+ assert(media, "No valid theme found")
+ end
+
local viewns = setmetatable({}, {__index=_G})
tpl.context.viewns = viewns
viewns.write = luci.http.write
viewns.translate = function(...) return require("luci.i18n").translate(...) end
viewns.striptags = util.striptags
viewns.controller = luci.http.getenv("SCRIPT_NAME")
- viewns.media = luci.config.main.mediaurlbase
+ viewns.media = media
+ viewns.theme = fs.basename(media)
viewns.resource = luci.config.main.resourcebase
viewns.REQUEST_URI = (luci.http.getenv("SCRIPT_NAME") or "") .. (luci.http.getenv("PATH_INFO") or "")
end
luci.sys.process.setuser(track.setuser)
end
- if c and type(c.target) == "function" then
- context.dispatched = c
+ if c and (c.index or type(c.target) == "function") then
+ ctx.dispatched = c
+ ctx.requested = ctx.requested or ctx.dispatched
+ end
+ if c and c.index then
+ local tpl = require "luci.template"
+
+ if util.copcall(tpl.render, "indexer", {}) then
+ return true
+ end
+ end
+
+ if c and type(c.target) == "function" then
util.copcall(function()
local oldenv = getfenv(c.target)
local module = require(c.module)