* Fixed apply function
[project/luci.git] / module / admin-core / src / controller / admin / uci.lua
index 5c34e56d38cf14d15c55b8ca4a50acd42cc17f69..cb4a95ba5c2c930fc8746a19813895fc6201789b 100644 (file)
@@ -8,25 +8,29 @@ function action_apply()
        local output  = ""
        
        if changes then
-               local apply = {}
+               local com = {}
+               local run = {}
                
                -- Collect files to be applied and commit changes
                for i, line in ipairs(ffluci.util.split(changes)) do
                        local r = line:match("^-?([^.]+)")
-                       if r and not ffluci.util.contains(apply, ffluci.config.uci_oncommit[r]) then
-                               table.insert(apply, ffluci.config.uci_oncommit[r])
-                               ffluci.model.uci.commit(r)
+                       if r then
+                               com[r] = true
+                               
+                               if ffluci.config.uci_oncommit and ffluci.config.uci_oncommit[r] then
+                                       run[ffluci.config.uci_oncommit[r]] = true
+                               end
                        end
                end
                
+               -- Apply
+               for config, i in pairs(com) do
+                       ffluci.model.uci.commit(config)
+               end 
                
                -- Search for post-commit commands
-               if ffluci.config.uci_oncommit then
-                       for i, cmd in ipairs(apply) do
-                               if cmd then
-                                       output = output .. cmd .. ":" .. ffluci.sys.exec(cmd) .. "\n"
-                               end
-                       end
+               for cmd, i in pairs(run) do
+                       output = output .. cmd .. ":" .. ffluci.sys.exec(cmd) .. "\n"
                end
        end