luci-0.9: merge r5340
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 24 Sep 2009 16:52:27 +0000 (16:52 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 24 Sep 2009 16:52:27 +0000 (16:52 +0000)
libs/cbi/luasrc/cbi.lua

index 83f5c27e7c48f4661142312b9e63f38b947b63da..d391acf7cc031d52bb2249f047e6eb03fbdd8acf 100644 (file)
@@ -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)
 
@@ -1292,6 +1292,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