diff options
Diffstat (limited to 'src/ffluci/controller/admin/uci.lua')
-rw-r--r-- | src/ffluci/controller/admin/uci.lua | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/ffluci/controller/admin/uci.lua b/src/ffluci/controller/admin/uci.lua new file mode 100644 index 0000000000..db70eb6a63 --- /dev/null +++ b/src/ffluci/controller/admin/uci.lua @@ -0,0 +1,57 @@ +module("ffluci.controller.admin.uci", package.seeall) + +-- This function has a higher priority than the admin_uci/apply template +function action_apply() + local changes = ffluci.model.uci.changes() + local output = "" + + if changes then + local apply = {} + + -- Collect files to be applied + for i, line in ipairs(ffluci.util.split(changes)) do + local r = line:match("^[^.]+") + if r then + apply[r] = true + end + end + + -- Commit changes + ffluci.model.uci.commit() + + -- Search for post-commit commands + if ffluci.config.uci_oncommit then + for k, v in pairs(apply) do + local cmd = ffluci.config.uci_oncommit[k] + if cmd then + output = output .. ffluci.util.exec(cmd) + end + end + end + end + + ffluci.template.render("admin_uci/apply", {changes=changes, output=output}) +end + + +function action_revert() + local changes = ffluci.model.uci.changes() + if changes then + local revert = {} + + -- Collect files to be reverted + for i, line in ipairs(ffluci.util.split(changes)) do + local r = line:match("^[^.]+") + if r then + revert[r] = true + end + end + + -- Revert them + for k, v in pairs(revert) do + ffluci.model.uci.revert(k) + end + end + + ffluci.template.render("admin_uci/revert", {changes=changes}) +end
\ No newline at end of file |