summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--libs/cbi/luasrc/cbi.lua30
-rw-r--r--modules/admin-mini/luasrc/model/cbi/mini/wifi.lua3
2 files changed, 28 insertions, 5 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index e6952899f..fe99f0246 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -144,20 +144,44 @@ function Map.__init__(self, config, ...)
Node._i18n(self, config, nil, nil, ...)
self.config = config
+ self.parsechain = {self.config}
self.template = "cbi/map"
if not uci.load(self.config) then
error("Unable to read UCI data: " .. self.config)
end
end
+
+-- Chain foreign config
+function Map.chain(self, config)
+ table.insert(self.parsechain, config)
+end
+
-- Use optimized UCI writing
function Map.parse(self, ...)
Node.parse(self, ...)
- uci.save(self.config)
+ for i, config in ipairs(self.parsechain) do
+ uci.save(config)
+ end
if luci.http.formvalue("cbi.apply") then
- uci.commit(self.config)
+ for i, config in ipairs(self.parsechain) do
+ uci.commit(config)
+ if luci.config.uci_oncommit and luci.config.uci_oncommit[config] then
+ luci.sys.exec(luci.config.uci_oncommit[config])
+ end
+
+ -- Refresh data because commit changes section names
+ uci.unload(config)
+ uci.load(config)
+ end
+
+ -- Reparse sections
+ Node.parse(self, ...)
+
+ end
+ for i, config in ipairs(self.parsechain) do
+ uci.unload(config)
end
- uci.unload(self.config)
end
-- Creates a child section
diff --git a/modules/admin-mini/luasrc/model/cbi/mini/wifi.lua b/modules/admin-mini/luasrc/model/cbi/mini/wifi.lua
index 30766a47c..2890a78a3 100644
--- a/modules/admin-mini/luasrc/model/cbi/mini/wifi.lua
+++ b/modules/admin-mini/luasrc/model/cbi/mini/wifi.lua
@@ -13,6 +13,7 @@ You may obtain a copy of the License at
$Id$
]]--
m = Map("wireless", translate("wifi"), translate("a_w_devices1"))
+m:chain("network")
s = m:section(TypedSection, "wifi-device", translate("devices"))
@@ -67,8 +68,6 @@ function mode.write(self, section, value)
luci.model.uci.set("network", "wan", "_ifname", oldif)
end
luci.model.uci.set("network", "wan", "ifname", " ")
- luci.model.uci.save("network")
- luci.model.uci.unload("network")
self.map:set(section, "network", "wan")
else