libs/cbi: Added "Save & Apply" button to CBI forms
[project/luci.git] / libs / cbi / luasrc / cbi.lua
index 879717a..e695289 100644 (file)
@@ -154,6 +154,9 @@ end
 function Map.parse(self, ...)
        Node.parse(self, ...)
        uci.save(self.config)
+       if luci.http.formvalue("cbi.apply") then
+               uci.commit(self.config)
+       end
        uci.unload(self.config)
 end
 
@@ -304,7 +307,14 @@ end
 
 -- Creates the section
 function AbstractSection.create(self, section)
-       local stat = self.map:set(section, nil, self.sectiontype)
+       local stat
+       
+       if section then
+               stat = self.map:set(section, nil, self.sectiontype)
+       else
+               section = self.map:add(self.sectiontype)
+               stat = section
+       end
 
        if stat then
                for k,v in pairs(self.children) do
@@ -349,10 +359,9 @@ function NamedSection.parse(self)
                                return
                        end
                else           -- Create and apply default values
-                       if luci.http.formvalue("cbi.cns."..path) and self:create(s) then
-                               for k,v in pairs(self.children) do
-                                       v:write(s, v.default)
-                               end
+                       if luci.http.formvalue("cbi.cns."..path) then
+                               self:create(s)
+                               return
                        end
                end
        end
@@ -399,12 +408,6 @@ function TypedSection.cfgsections(self)
        return sections
 end
 
--- Creates a new section of this type with the given name (or anonymous)
-function TypedSection.create(self, name)
-       name = name or self.map:add(self.sectiontype)
-       AbstractSection.create(self, name)
-end
-
 -- Limits scope to sections that have certain option => value pairs
 function TypedSection.depends(self, option, value)
        table.insert(self.deps, {option=option, value=value})
@@ -642,10 +645,6 @@ function DummyValue.parse(self)
 
 end
 
-function DummyValue.render(self, s)
-       luci.template.render(self.template, {self=self, section=s})
-end
-
 
 --[[
 Flag - A flag being enabled or disabled