lib/cbi: Added support for multiple CBI maps per model
This commit is contained in:
parent
97ff4a156f
commit
d0a622dce8
3 changed files with 18 additions and 12 deletions
|
@ -57,14 +57,16 @@ function load(cbimap)
|
|||
luci.util.extfenv(func, "translate", luci.i18n.translate)
|
||||
luci.util.extfenv(func, "translatef", luci.i18n.translatef)
|
||||
|
||||
local map = func()
|
||||
local maps = {func()}
|
||||
|
||||
if not instanceof(map, Map) then
|
||||
error("CBI map returns no valid map object!")
|
||||
return nil
|
||||
for i, map in ipairs(maps) do
|
||||
if not instanceof(map, Map) then
|
||||
error("CBI map returns no valid map object!")
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
return map
|
||||
return maps
|
||||
end
|
||||
|
||||
-- Node pseudo abstract class
|
||||
|
|
|
@ -381,20 +381,24 @@ function cbi(model)
|
|||
require("luci.template")
|
||||
|
||||
return function()
|
||||
local stat, res = luci.util.copcall(luci.cbi.load, model)
|
||||
local stat, maps = luci.util.copcall(luci.cbi.load, model)
|
||||
if not stat then
|
||||
error500(res)
|
||||
error500(maps)
|
||||
return true
|
||||
end
|
||||
|
||||
local stat, err = luci.util.copcall(res.parse, res)
|
||||
if not stat then
|
||||
error500(err)
|
||||
return true
|
||||
for i, res in ipairs(maps) do
|
||||
local stat, err = luci.util.copcall(res.parse, res)
|
||||
if not stat then
|
||||
error500(err)
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
luci.template.render("cbi/header")
|
||||
res:render()
|
||||
for i, res in ipairs(maps) do
|
||||
res:render()
|
||||
end
|
||||
luci.template.render("cbi/footer")
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue