-- 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")
- require("luci.sys")
+ require("luci.util")
- local cbidir = luci.sys.libpath() .. "/model/cbi/"
+ local cbidir = luci.util.libpath() .. "/model/cbi/"
local func, err = loadfile(cbidir..cbimap..".lua")
if not func then
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()}
for i, config in ipairs(self.parsechain) do
uci.commit(config)
if luci.config.uci_oncommit and luci.config.uci_oncommit[config] then
- luci.sys.exec(luci.config.uci_oncommit[config])
+ luci.util.exec(luci.config.uci_oncommit[config])
end
-- Refresh data because commit changes section names
self.template = "cbi/tsection"
self.deps = {}
- self.excludes = {}
self.anonymous = false
end
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
-- 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
if cond then
return string.format(
' %s="%s"', tostring(key),
- tostring( val or scope[key] or self[key] or "" )
+ tostring( val
+ or scope[key]
+ or (type(self[key]) ~= "function" and self[key])
+ or "" )
)
else
return ''
function Value.__init__(self, ...)
AbstractValue.__init__(self, ...)
self.template = "cbi/value"
-
- self.maxlength = nil
+ self.keylist = {}
+ self.vallist = {}
end
--- This validation is a bit more complex
-function Value.validate(self, val)
- if self.maxlength and tostring(val):len() > self.maxlength then
- val = nil
- end
-
- return val
+function Value.value(self, key, val)
+ val = val or key
+ table.insert(self.keylist, tostring(key))
+ table.insert(self.vallist, tostring(val))
end