libs/cbi: Fixed CBI handling of "Save & Apply"

This commit is contained in:
Steven Barth 2008-07-30 19:01:07 +00:00
parent 8c3ee6f9b7
commit 5c7ab64306
2 changed files with 29 additions and 6 deletions

View file

@ -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)
if luci.http.formvalue("cbi.apply") then
uci.commit(self.config)
for i, config in ipairs(self.parsechain) do
uci.save(config)
end
if luci.http.formvalue("cbi.apply") then
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

View file

@ -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