From: Steven Barth Date: Tue, 15 Jul 2008 13:17:28 +0000 (+0000) Subject: lib/cbi: Added support for multiple CBI maps per model X-Git-Tag: 0.8.0~662 X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=d0a622dce8163cb1f9d0a178127b7abda6c4e818 lib/cbi: Added support for multiple CBI maps per model --- 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/index.lua deleted file mode 100644 index eb58e0042..000000000 --- a/modules/admin-mini/luasrc/controller/index.lua +++ /dev/null @@ -1,49 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -$Id$ -]]-- -module("luci.controller.admin.index", package.seeall) - -function index() - luci.i18n.loadc("admin-core") - local i18n = luci.i18n.translate - - local root = node() - if not root.target then - root.target = alias("admin") - end - - entry({"about"}, template("about")).i18n = "admin-core" - - local page = node("admin") - page.target = alias("admin", "index") - page.title = i18n("administration", "Administration") - page.order = 10 - page.i18n = "admin-core" - page.sysauth = "root" - - local page = node("admin", "index") - page.target = template("admin_index/index") - page.title = i18n("overview", "Übersicht") - page.order = 10 - - local page = node("admin", "index", "luci") - page.target = cbi("admin_index/luci") - page.title = i18n("a_i_ui", "Oberfläche") - - entry({"admin", "logout"}, call("action_logout"), i18n("logout")) -end - -function action_logout() - luci.http.header("Set-Cookie", "sysauth=; path=/") - luci.http.redirect(luci.dispatcher.build_url()) -end \ No newline at end of file diff --git a/modules/admin-mini/luasrc/controller/mini/index.lua b/modules/admin-mini/luasrc/controller/mini/index.lua new file mode 100644 index 000000000..eb58e0042 --- /dev/null +++ b/modules/admin-mini/luasrc/controller/mini/index.lua @@ -0,0 +1,49 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2008 Steven Barth + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- +module("luci.controller.admin.index", package.seeall) + +function index() + luci.i18n.loadc("admin-core") + local i18n = luci.i18n.translate + + local root = node() + if not root.target then + root.target = alias("admin") + end + + entry({"about"}, template("about")).i18n = "admin-core" + + local page = node("admin") + page.target = alias("admin", "index") + page.title = i18n("administration", "Administration") + page.order = 10 + page.i18n = "admin-core" + page.sysauth = "root" + + local page = node("admin", "index") + page.target = template("admin_index/index") + page.title = i18n("overview", "Übersicht") + page.order = 10 + + local page = node("admin", "index", "luci") + page.target = cbi("admin_index/luci") + page.title = i18n("a_i_ui", "Oberfläche") + + entry({"admin", "logout"}, call("action_logout"), i18n("logout")) +end + +function action_logout() + luci.http.header("Set-Cookie", "sysauth=; path=/") + luci.http.redirect(luci.dispatcher.build_url()) +end \ No newline at end of file