diff options
author | Steven Barth <steven@midlink.org> | 2009-09-24 16:40:32 +0000 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2009-09-24 16:40:32 +0000 |
commit | 7bd891326df0eb265a9f26fadf1c5a1764a8faa4 (patch) | |
tree | 2a787747fc97fd6e5a9ae2965045657dbdbe8ae8 | |
parent | 48465cebabb7ebf34f1471eecfff9f9011b5b442 (diff) |
Fix Save & Apply for lists
-rw-r--r-- | libs/cbi/luasrc/cbi.lua | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 33b0c7cb47..23a5f01a56 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 |