-- 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")
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()}
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
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
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
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
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
function index()
require("luci.i18n")
+ require("luci.model.uci")
local i18n = luci.i18n.translate
local page = node("admin", "network")
page.target = cbi("admin_network/ifaces")
page.title = i18n("interfaces", "Schnittstellen")
page.order = 20
-
+ page.leaf = true
+
+ luci.model.uci.foreach("network", "interface",
+ function (section)
+ local ifc = section[".name"]
+ if ifc ~= "loopback" then
+ entry({"admin", "network", "ifaces", ifc}, page.target, ifc)
+ end
+ end
+ )
+
+
local page = node("admin", "network", "dhcp")
page.target = cbi("admin_network/dhcp")
page.title = "DHCP"
m = Map("network", translate("interfaces"), translate("a_n_ifaces1"))
s = m:section(TypedSection, "interface", "")
-s.addremove = true
-s:exclude("loopback")
+function s.filter(section)
+ return section ~= "loopback" and (not arg or #arg == 0 or
+ luci.util.contains(arg, section))
+end
+
+if not arg or #arg == 0 then
+ s.addremove = true
+end
s:depends("proto", "static")
s:depends("proto", "dhcp")