X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fuci.lua;h=5edcc973ee14472e6d845c2b1fd3dc956770172e;hp=215889f85ff1af4146fa495dfc394622b986892e;hb=18677e216b26acc148387c5414756a5b94c8a17c;hpb=76982655fa433edd885bbb80bbe74e82fca527e2 diff --git a/modules/admin-full/luasrc/controller/admin/uci.lua b/modules/admin-full/luasrc/controller/admin/uci.lua index 215889f85..5edcc973e 100644 --- a/modules/admin-full/luasrc/controller/admin/uci.lua +++ b/modules/admin-full/luasrc/controller/admin/uci.lua @@ -2,6 +2,7 @@ LuCI - Lua Configuration Interface Copyright 2008 Steven Barth +Copyright 2010 Jo-Philipp Wich Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -11,93 +12,65 @@ You may obtain a copy of the License at $Id$ ]]-- + module("luci.controller.admin.uci", package.seeall) function index() local i18n = luci.i18n.translate - - entry({"admin", "uci"}, nil, i18n("config")) - entry({"admin", "uci", "changes"}, call("action_changes"), i18n("changes"), 40) - entry({"admin", "uci", "revert"}, call("action_revert"), i18n("revert"), 30) - entry({"admin", "uci", "apply"}, call("action_apply"), i18n("apply"), 20) - entry({"admin", "uci", "saveapply"}, call("action_apply"), i18n("saveapply"), 10) -end + local redir = luci.http.formvalue("redir", true) or + luci.dispatcher.build_url(unpack(luci.dispatcher.context.request)) -function convert_changes(changes) - 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 = "="..v - end - str = r.."."..s - if o ~= ".type" then - str = str.."."..o - end - table.insert(ret, str..val) - end - end - end - return table.concat(ret, "\n") + entry({"admin", "uci"}, nil, i18n("Configuration")) + entry({"admin", "uci", "changes"}, call("action_changes"), i18n("Changes"), 40).query = {redir=redir} + entry({"admin", "uci", "revert"}, call("action_revert"), i18n("Revert"), 30).query = {redir=redir} + entry({"admin", "uci", "apply"}, call("action_apply"), i18n("Apply"), 20).query = {redir=redir} + entry({"admin", "uci", "saveapply"}, call("action_apply"), i18n("Save & Apply"), 10).query = {redir=redir} end function action_changes() - local changes = convert_changes(luci.model.uci.changes()) - luci.template.render("admin_uci/changes", {changes=changes}) + local uci = luci.model.uci.cursor() + local changes = uci:changes() + + luci.template.render("admin_uci/changes", { + changes = next(changes) and changes + }) end function action_apply() local path = luci.dispatcher.context.path - local changes = luci.model.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 - if path[#path] ~= "apply" then - luci.model.uci.load(r) - luci.model.uci.commit(r) - luci.model.uci.unload(r) - end - 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 .. ":" .. luci.util.exec(cmd) .. "\n" + local uci = luci.model.uci.cursor() + local changes = uci:changes() + local reload = {} + + -- Collect files to be applied and commit changes + for r, tbl in pairs(changes) do + table.insert(reload, r) + if path[#path] ~= "apply" then + uci:load(r) + uci:commit(r) + uci:unload(r) end end - - - luci.template.render("admin_uci/apply", {changes=convert_changes(changes), output=output}) + + luci.template.render("admin_uci/apply", { + changes = next(changes) and changes, + configs = reload + }) end function action_revert() - local changes = luci.model.uci.changes() - if changes then - local revert = {} - - -- Collect files to be reverted - for r, tbl in pairs(changes) do - luci.model.uci.load(r) - luci.model.uci.revert(r) - luci.model.uci.unload(r) - end + local uci = luci.model.uci.cursor() + local changes = uci:changes() + + -- 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("admin_uci/revert", {changes=convert_changes(changes)}) + + luci.template.render("admin_uci/revert", { + changes = next(changes) and changes + }) end