summaryrefslogtreecommitdiffhomepage
path: root/libs
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-08-07 19:03:25 +0000
committerSteven Barth <steven@midlink.org>2008-08-07 19:03:25 +0000
commite72a526984982f6fa2b6f2ed5ce01523094bfe43 (patch)
tree2f34fbbe1e21e58d9292fd13305c834cb0613b17 /libs
parentd79794c1194c65861253e20681fabe103cc85740 (diff)
libs/cbi: Added magic ;-)
Diffstat (limited to 'libs')
-rw-r--r--libs/cbi/luasrc/cbi.lua11
-rw-r--r--libs/web/luasrc/dispatcher.lua15
2 files changed, 15 insertions, 11 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index f81f7f1b94..ff33604254 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -37,7 +37,7 @@ local instanceof = luci.util.instanceof
-- Loads a CBI map from given file, creating an environment and returns it
-function load(cbimap)
+function load(cbimap, ...)
require("luci.fs")
require("luci.i18n")
require("luci.config")
@@ -56,6 +56,7 @@ function load(cbimap)
luci.util.updfenv(func, luci.cbi)
luci.util.extfenv(func, "translate", luci.i18n.translate)
luci.util.extfenv(func, "translatef", luci.i18n.translatef)
+ luci.util.extfenv(func, "arg", {...})
local maps = {func()}
@@ -414,7 +415,6 @@ function TypedSection.__init__(self, map, type, ...)
self.template = "cbi/tsection"
self.deps = {}
- self.excludes = {}
self.anonymous = false
end
@@ -437,11 +437,6 @@ function TypedSection.depends(self, option, value)
table.insert(self.deps, {option=option, value=value})
end
--- Excludes several sections by name
-function TypedSection.exclude(self, field)
- self.excludes[field] = true
-end
-
function TypedSection.parse(self)
if self.addremove then
-- Create
@@ -492,7 +487,7 @@ end
-- Verifies scope of sections
function TypedSection.checkscope(self, section)
-- Check if we are not excluded
- if self.excludes[section] then
+ if self.filter and not self.filter(section) then
return nil
end
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 840dbf3c26..9ba74c49c9 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -126,9 +126,12 @@ function dispatch(request)
local c = context.tree
local track = {}
+ local args = {}
+ local n
for i, s in ipairs(request) do
c = c.nodes[s]
+ n = i
if not c or c.leaf then
break
end
@@ -138,6 +141,12 @@ function dispatch(request)
end
end
+ if c and c.leaf then
+ for j=n+1, #request do
+ table.insert(args, request[j])
+ end
+ end
+
if track.i18n then
require("luci.i18n").loadc(track.i18n)
end
@@ -190,7 +199,7 @@ function dispatch(request)
luci.util.updfenv(c.target, mod)
end
- stat, err = luci.util.copcall(c.target)
+ stat, err = luci.util.copcall(c.target, unpack(args))
if not stat then
error500(err)
end
@@ -430,8 +439,8 @@ function cbi(model)
require("luci.cbi")
require("luci.template")
- return function()
- local stat, maps = luci.util.copcall(luci.cbi.load, model)
+ return function(...)
+ local stat, maps = luci.util.copcall(luci.cbi.load, model, ...)
if not stat then
error500(maps)
return true