libs/cbi: Create section after validation to avoid validation errors with empty fields
authorSteven Barth <steven@midlink.org>
Sat, 30 Aug 2008 10:18:56 +0000 (10:18 +0000)
committerSteven Barth <steven@midlink.org>
Sat, 30 Aug 2008 10:18:56 +0000 (10:18 +0000)
libs/cbi/luasrc/cbi.lua

index 7dabe2d..9c5501d 100644 (file)
@@ -699,35 +699,9 @@ end
 
 function TypedSection.parse(self)
        if self.addremove then
-               -- Create
-               local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype
-               local name  = luci.http.formvalue(crval)
-               if self.anonymous then
-                       if name then
-                               self:create()
-                       end
-               else
-                       if name then
-                               -- Ignore if it already exists
-                               if self:cfgvalue(name) then
-                                       name = nil;
-                               end
-
-                               name = self:checkscope(name)
-
-                               if not name then
-                                       self.err_invalid = true
-                               end
-
-                               if name and #name > 0 then
-                                       self:create(name)
-                               end
-                       end
-               end
-
                -- Remove
-               crval = REMOVE_PREFIX .. self.config
-               name = luci.http.formvaluetable(crval)
+               local crval = REMOVE_PREFIX .. self.config
+               local name = luci.http.formvaluetable(crval)
                for k,v in pairs(name) do
                        if self:cfgvalue(k) and self:checkscope(k) then
                                self:remove(k)
@@ -765,6 +739,34 @@ function TypedSection.parse(self)
                end
                AbstractSection.parse_optionals(self, k)
        end
+
+       if self.addremove then
+               -- Create
+               local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype
+               local name  = luci.http.formvalue(crval)
+               if self.anonymous then
+                       if name then
+                               self:create()
+                       end
+               else
+                       if name then
+                               -- Ignore if it already exists
+                               if self:cfgvalue(name) then
+                                       name = nil;
+                               end
+
+                               name = self:checkscope(name)
+
+                               if not name then
+                                       self.err_invalid = true
+                               end
+
+                               if name and #name > 0 then
+                                       self:create(name)
+                               end
+                       end
+               end
+       end
 end
 
 -- Verifies scope of sections