diff options
author | Steven Barth <steven@midlink.org> | 2008-07-15 13:17:28 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2008-07-15 13:17:28 +0000 |
commit | d0a622dce8163cb1f9d0a178127b7abda6c4e818 (patch) | |
tree | 44b1b5d8d01f98c24bdc0c378af5cf6004220d96 | |
parent | 97ff4a156ff1aa6a4d2ab65ab13d12b4eb2651e2 (diff) |
lib/cbi: Added support for multiple CBI maps per model
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 12 | ||||
-rw-r--r-- | libs/web/luasrc/dispatcher.lua | 18 | ||||
-rw-r--r-- | modules/admin-mini/luasrc/controller/mini/index.lua (renamed from modules/admin-mini/luasrc/controller/index.lua) | 0 |
3 files changed, 18 insertions, 12 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 6e0845565..7370a04c4 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -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 diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index 689d060d5..735e2a715 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -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 diff --git a/modules/admin-mini/luasrc/controller/index.lua b/modules/admin-mini/luasrc/controller/mini/index.lua index eb58e0042..eb58e0042 100644 --- a/modules/admin-mini/luasrc/controller/index.lua +++ b/modules/admin-mini/luasrc/controller/mini/index.lua |