libs/cbi: Added magic ;-)
[project/luci.git] / libs / cbi / luasrc / cbi.lua
index 8c8f68b..ff33604 100644 (file)
@@ -37,13 +37,13 @@ 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")
-       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
@@ -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()}
 
@@ -167,7 +168,7 @@ function Map.parse(self, ...)
                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
@@ -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