X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=modules%2Fluci-mod-admin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fuci.lua;fp=modules%2Fluci-mod-admin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fuci.lua;h=34e40ee624bd8e54f30c5c995c2da37993ddaaf8;hb=1bb4822dca6113f73e3bc89e2acf15935e6f8e92;hp=0000000000000000000000000000000000000000;hpb=9edd0e46c3f880727738ce8ca6ff1c8b85f99ef4;p=project%2Fluci.git diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua new file mode 100644 index 000000000..34e40ee62 --- /dev/null +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua @@ -0,0 +1,75 @@ +--[[ +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. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ +]]-- + +module("luci.controller.admin.uci", package.seeall) + +function index() + local redir = luci.http.formvalue("redir", true) or + luci.dispatcher.build_url(unpack(luci.dispatcher.context.request)) + + entry({"admin", "uci"}, nil, _("Configuration")) + entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir} + entry({"admin", "uci", "revert"}, call("action_revert"), _("Revert"), 30).query = {redir=redir} + entry({"admin", "uci", "apply"}, call("action_apply"), _("Apply"), 20).query = {redir=redir} + entry({"admin", "uci", "saveapply"}, call("action_apply"), _("Save & Apply"), 10).query = {redir=redir} +end + +function action_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 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 = next(changes) and changes, + configs = reload + }) +end + + +function action_revert() + 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 = next(changes) and changes + }) +end