-- Index table
local index = {}
--- Indexdump
-local indexcache = "/tmp/.luciindex"
-
-- Global request object
request = {}
local pathinfo = luci.http.env.PATH_INFO or ""
local c = tree
- for s in pathinfo:gmatch("([%w_]+)") do
+ for s in pathinfo:gmatch("([%w-]+)") do
table.insert(request, s)
end
if c and type(c.target) == "function" then
dispatched = c
-
+ stat, mod = pcall(require, c.module)
+ if stat then
+ luci.util.updfenv(c.target, mod)
+ end
+
stat, err = pcall(c.target)
if not stat then
error500(err)
end
end
- if not cachetime or luci.fs.mtime(path) > cachetime then
+ if not cachetime then
for i,c in ipairs(controllers) do
c = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
stat, mod = pcall(require, c)
end
end
end
- if indexcache then
- luci.fs.unlink(indexcache .. "/.index")
- luci.fs.writefile(indexcache .. "/.index", "")
- end
else
for i,c in ipairs(luci.fs.dir(indexcache)) do
if c:sub(1) ~= "." then
if not built_index then
createindex()
end
+
+ require("luci.i18n")
for k, v in pairs(index) do
luci.util.updfenv(v, _M)
+ luci.util.extfenv(v, "_NAME", k)
- local stat, mod = pcall(require, k)
- if stat then
- luci.util.updfenv(v, mod)
+ local stat, err = pcall(v)
+ if not stat then
+ error500(err)
+ os.exit(1)
end
-
- pcall(v)
end
built_tree = true
c.target = target
c.title = title
c.order = order
+ c.module = getfenv(2)._NAME
for k,v in pairs(add) do
c[k] = v
for k,v in ipairs(arg) do
if not c.nodes[v] then
- c.nodes[v] = {nodes={}}
+ c.nodes[v] = {nodes={}, module=getfenv(2)._NAME}
end
c = c.nodes[v]
end
end
+function call(name)
+ return function() getfenv()[name]() end
+end
+
function template(name)
require("luci.template")
return function() luci.template.render(name) end