X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fadmin-mini%2Fluasrc%2Fcontroller%2Fmini%2Fuci.lua;h=4687c839d9d1450639b53cf4dd6f584073746c0a;hb=d951b66b452a634e6267e4a620410635f5a511ae;hp=a5b3402add43c5e68c8e528077c038c830d5644c;hpb=e31fcb11e0e54a1d71067f30b95a92f0e816fc08;p=project%2Fluci.git diff --git a/modules/admin-mini/luasrc/controller/mini/uci.lua b/modules/admin-mini/luasrc/controller/mini/uci.lua index a5b3402ad..4687c839d 100644 --- a/modules/admin-mini/luasrc/controller/mini/uci.lua +++ b/modules/admin-mini/luasrc/controller/mini/uci.lua @@ -16,35 +16,33 @@ module("luci.controller.mini.uci", package.seeall) function index() local i18n = luci.i18n.translate + local redir = luci.http.formvalue("redir", true) or + luci.dispatcher.build_url(unpack(luci.dispatcher.context.request)) entry({"mini", "uci"}, nil, i18n("config")) - entry({"mini", "uci", "changes"}, call("action_changes"), i18n("changes"), 30) - entry({"mini", "uci", "revert"}, call("action_revert"), i18n("revert"), 20) - entry({"mini", "uci", "apply"}, call("action_apply"), i18n("saveapply"), 10) + entry({"mini", "uci", "changes"}, call("action_changes"), i18n("changes"), 30).query = {redir=redir} + entry({"mini", "uci", "revert"}, call("action_revert"), i18n("revert"), 20).query = {redir=redir} + entry({"mini", "uci", "saveapply"}, call("action_apply"), i18n("saveapply"), 10).query = {redir=redir} end function convert_changes(changes) - local ret = {} + local util = require "luci.util" + + local ret for r, tbl in pairs(changes) do for s, os in pairs(tbl) do for o, v in pairs(os) do - local val, str - if (v == "") then - str = "-" - val = "" - else - str = "" - val = "="..luci.util.pcdata(v) - end - str = r.."."..s - if o ~= ".type" then - str = str.."."..o - end - table.insert(ret, str..val) + ret = (ret and ret.."\n" or "") .. "%s%s.%s%s%s" % { + v == "" and "-" or "", + r, + s, + o ~= ".type" and "."..o or "", + v ~= "" and "="..util.pcdata(v) or "" + } end end end - return table.concat(ret, "\n") + return ret end function action_changes() @@ -53,49 +51,37 @@ function action_changes() end function action_apply() + local path = luci.dispatcher.context.path local uci = luci.model.uci.cursor() local changes = uci:changes() - local output = "" - - if changes then - local com = {} - local run = {} - - -- Collect files to be applied and commit changes - for r, tbl in pairs(changes) do - if r then - uci:load(r) - uci:commit(r) - uci:unload(r) - if luci.config.uci_oncommit and luci.config.uci_oncommit[r] then - run[luci.config.uci_oncommit[r]] = true - end - end - end - - -- Search for post-commit commands - for cmd, i in pairs(run) do - output = output .. cmd .. ":\n" .. luci.util.exec(cmd) .. "\n" - end + local reload = {} + + -- Collect files to be applied and commit changes + for r, tbl in pairs(changes) do + table.insert(reload, r) + uci:load(r) + uci:commit(r) + uci:unload(r) end - - luci.template.render("mini/uci_apply", {changes=convert_changes(changes), output=output}) + local function _reload() + local cmd = uci:apply(reload, true) + return io.popen(cmd) + end + + luci.template.render("mini/uci_apply", {changes=convert_changes(changes), reload=_reload}) end function action_revert() local uci = luci.model.uci.cursor() local changes = uci:changes() - if changes then - local revert = {} - - -- Collect files to be reverted - for r, tbl in pairs(changes) do - uci:load(r) - uci:revert(r) - uci:unload(r) - end + + -- Collect files to be reverted + for r, tbl in pairs(changes) do + uci:load(r) + uci:revert(r) + uci:unload(r) end luci.template.render("mini/uci_revert", {changes=convert_changes(changes)})