libs/cbi: Fixed CBI handling of "Save & Apply"
This commit is contained in:
parent
8c3ee6f9b7
commit
5c7ab64306
2 changed files with 29 additions and 6 deletions
|
@ -144,20 +144,44 @@ function Map.__init__(self, config, ...)
|
||||||
Node._i18n(self, config, nil, nil, ...)
|
Node._i18n(self, config, nil, nil, ...)
|
||||||
|
|
||||||
self.config = config
|
self.config = config
|
||||||
|
self.parsechain = {self.config}
|
||||||
self.template = "cbi/map"
|
self.template = "cbi/map"
|
||||||
if not uci.load(self.config) then
|
if not uci.load(self.config) then
|
||||||
error("Unable to read UCI data: " .. self.config)
|
error("Unable to read UCI data: " .. self.config)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Chain foreign config
|
||||||
|
function Map.chain(self, config)
|
||||||
|
table.insert(self.parsechain, config)
|
||||||
|
end
|
||||||
|
|
||||||
-- Use optimized UCI writing
|
-- Use optimized UCI writing
|
||||||
function Map.parse(self, ...)
|
function Map.parse(self, ...)
|
||||||
Node.parse(self, ...)
|
Node.parse(self, ...)
|
||||||
uci.save(self.config)
|
for i, config in ipairs(self.parsechain) do
|
||||||
if luci.http.formvalue("cbi.apply") then
|
uci.save(config)
|
||||||
uci.commit(self.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
|
end
|
||||||
uci.unload(self.config)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Creates a child section
|
-- Creates a child section
|
||||||
|
|
|
@ -13,6 +13,7 @@ You may obtain a copy of the License at
|
||||||
$Id$
|
$Id$
|
||||||
]]--
|
]]--
|
||||||
m = Map("wireless", translate("wifi"), translate("a_w_devices1"))
|
m = Map("wireless", translate("wifi"), translate("a_w_devices1"))
|
||||||
|
m:chain("network")
|
||||||
|
|
||||||
s = m:section(TypedSection, "wifi-device", translate("devices"))
|
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)
|
luci.model.uci.set("network", "wan", "_ifname", oldif)
|
||||||
end
|
end
|
||||||
luci.model.uci.set("network", "wan", "ifname", " ")
|
luci.model.uci.set("network", "wan", "ifname", " ")
|
||||||
luci.model.uci.save("network")
|
|
||||||
luci.model.uci.unload("network")
|
|
||||||
|
|
||||||
self.map:set(section, "network", "wan")
|
self.map:set(section, "network", "wan")
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue