From d0a622dce8163cb1f9d0a178127b7abda6c4e818 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Tue, 15 Jul 2008 13:17:28 +0000 Subject: [PATCH] lib/cbi: Added support for multiple CBI maps per model --- libs/cbi/luasrc/cbi.lua | 12 +++++++----- libs/web/luasrc/dispatcher.lua | 18 +++++++++++------- .../admin-mini/luasrc/controller/{ => mini}/index.lua | 0 3 files changed, 18 insertions(+), 12 deletions(-) rename modules/admin-mini/luasrc/controller/{ => mini}/index.lua (100%) 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 similarity index 100% rename from modules/admin-mini/luasrc/controller/index.lua rename to modules/admin-mini/luasrc/controller/mini/index.lua -- 2.11.0