Merge pull request #2749 from dibdot/wg
[oweals/luci.git] / modules / luci-base / luasrc / cbi.lua
index d275c5b27564366041a56fc3010b07d4a938e8dc..450e413916774669e9e7c4bca75247ab6c25c407 100644 (file)
@@ -1199,19 +1199,20 @@ function TypedSection.parse(self, novld)
                        if name then
                                -- Ignore if it already exists
                                if self:cfgvalue(name) then
-                                       name = nil;
-                               end
-
-                               name = self:checkscope(name)
-
-                               if not name then
+                                       name = nil
                                        self.err_invalid = true
-                               end
+                               else
+                                       name = self:checkscope(name)
 
-                               if name and #name > 0 then
-                                       created = self:create(name, origin) and name
-                                       if not created then
-                                               self.invalid_cts = true
+                                       if not name then
+                                               self.err_invalid = true
+                                       end
+
+                                       if name and #name > 0 then
+                                               created = self:create(name, origin) and name
+                                               if not created then
+                                                       self.invalid_cts = true
+                                               end
                                        end
                                end
                        end
@@ -1346,6 +1347,18 @@ function AbstractValue.deplist2json(self, section, deplist)
        return util.serialize_json(deps)
 end
 
+-- Serialize choices
+function AbstractValue.choices(self)
+       if type(self.keylist) == "table" and #self.keylist > 0 then
+               local i, k, v = nil, nil, {}
+               for i, k in ipairs(self.keylist) do
+                       v[k] = self.vallist[i] or k
+               end
+               return v
+       end
+       return nil
+end
+
 -- Generates the unique CBID
 function AbstractValue.cbid(self, section)
        return "cbid."..self.map.config.."."..section.."."..self.option