From: Steven Barth Date: Sat, 30 Aug 2008 10:18:56 +0000 (+0000) Subject: libs/cbi: Create section after validation to avoid validation errors with empty fields X-Git-Tag: 0.8.0~240 X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=7e792dad2e8be495009f4b78856fb9797a7de019 libs/cbi: Create section after validation to avoid validation errors with empty fields --- diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 7dabe2d600..9c5501d69b 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -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