summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2009-09-24 16:40:32 +0000
committerSteven Barth <steven@midlink.org>2009-09-24 16:40:32 +0000
commit7bd891326df0eb265a9f26fadf1c5a1764a8faa4 (patch)
tree2a787747fc97fd6e5a9ae2965045657dbdbe8ae8
parent48465cebabb7ebf34f1471eecfff9f9011b5b442 (diff)
Fix Save & Apply for lists
-rw-r--r--libs/cbi/luasrc/cbi.lua18
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index 33b0c7cb4..23a5f01a5 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -369,7 +369,7 @@ function Map.parse(self, readinput, ...)
for i, config in ipairs(self.parsechain) do
self.uci:save(config)
end
- if self:submitstate() and not self.proceed and (self.flow.autoapply or luci.http.formvalue("cbi.apply")) then
+ if self:submitstate() and ((not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply")) then
for i, config in ipairs(self.parsechain) do
self.uci:commit(config)
@@ -1330,6 +1330,22 @@ function AbstractValue.parse(self, section, novld)
local fvalue = self:formvalue(section)
local cvalue = self:cfgvalue(section)
+ -- If favlue and cvalue are both tables and have the same content
+ -- make them identical
+ if type(fvalue) == "table" and type(cvalue) == "table" then
+ local equal = #fvalue == #cvalue
+ if equal then
+ for i=1, #fvalue do
+ if cvalue[i] ~= fvalue[i] then
+ equal = false
+ end
+ end
+ end
+ if equal then
+ fvalue = cvalue
+ end
+ end
+
if fvalue and #fvalue > 0 then -- If we have a form value, write it to UCI
fvalue = self:transform(self:validate(fvalue, section))
if not fvalue and not novld then