* Core translation part 1
[project/luci.git] / libs / web / luasrc / dispatcher.lua
index 14801c6..e9d3b24 100644 (file)
@@ -98,7 +98,7 @@ function dispatch()
 
        for i, s in ipairs(request) do
                c = c.nodes[s]
-               if not c then
+               if not c or c.leaf then
                        break
                end
 
@@ -128,9 +128,6 @@ function dispatch()
        tpl.viewns.media      = luci.config.main.mediaurlbase
        tpl.viewns.resource   = luci.config.main.resourcebase
        
-       -- Load default translation
-       require("luci.i18n").loadc("default")
-       
 
        if c and type(c.target) == "function" then
                dispatched = c
@@ -154,11 +151,13 @@ function createindex()
        local path = luci.sys.libpath() .. "/controller/"
        local suff = ".lua"
        
-       if pcall(require, "fastindex") then
+       --[[if pcall(require, "fastindex") then
                createindex_fastindex(path, suff)
        else
                createindex_plain(path, suff)
-       end
+       end]]--
+       
+       createindex_plain(path, suff)
        
        built_index = true
 end
@@ -222,10 +221,20 @@ function createtree()
        end
        
        require("luci.i18n")
+               
+       -- Load default translation
+       luci.i18n.loadc("default")
+       
+       local scope = _G
+       for k,v in pairs(_M) do
+               if type(v) == "function" then
+                       scope[k] = v
+               end
+       end
 
        for k, v in pairs(index) do
-               luci.util.updfenv(v, _M)
-               luci.util.extfenv(v, "_NAME", k)
+               scope._NAME = k
+               setfenv(v, scope)
                
                local stat, err = pcall(v)
                if not stat then
@@ -282,6 +291,21 @@ function alias(...)
        end
 end
 
+function rewrite(n, ...)
+       local req = arg
+       return function()
+               for i=1,n do 
+                       table.remove(request, 1)
+               end
+               
+               for i,r in ipairs(req) do
+                       table.insert(request, i, r)
+               end
+               
+               dispatch()
+       end
+end
+
 function call(name)
        return function() getfenv()[name]() end
 end