diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/luci-base/luasrc/model/uci.lua | 38 | ||||
-rw-r--r-- | modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm | 89 |
2 files changed, 43 insertions, 84 deletions
diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua index b2c1e463b..2119a210b 100644 --- a/modules/luci-base/luasrc/model/uci.lua +++ b/modules/luci-base/luasrc/model/uci.lua @@ -95,41 +95,15 @@ end function changes(self, config) - local rv = call("changes", { config = config }) - local res = {} + local rv, err = call("changes", { config = config }) if type(rv) == "table" and type(rv.changes) == "table" then - local package, changes - for package, changes in pairs(rv.changes) do - res[package] = {} - - local _, change - for _, change in ipairs(changes) do - local operation, section, option, value = unpack(change) - if option and operation ~= "add" then - res[package][section] = res[package][section] or { } - - if operation == "list-add" then - local v = res[package][section][option] - if type(v) == "table" then - v[#v+1] = value or "" - elseif v ~= nil then - res[package][section][option] = { v, value } - else - res[package][section][option] = { value } - end - else - res[package][section][option] = value or "" - end - else - res[package][section] = res[package][section] or {} - res[package][section][".type"] = option or "" - end - end - end + return rv.changes + elseif err then + return nil, ERRSTR[err] + else + return { } end - - return res end diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm index e05ccdece..8a162c88b 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm @@ -1,5 +1,5 @@ <%# - Copyright 2010 Jo-Philipp Wich <jow@openwrt.org> + Copyright 2010 Jo-Philipp Wich <jo@mein.io> Licensed to the public under the Apache License 2.0. -%> @@ -17,65 +17,50 @@ <div class="uci-change-list"><% local util = luci.util - local ret = { } + local tpl = { + ["add-3"] = "<ins>uci add %0 <strong>%3</strong> # =%2</ins>", + ["set-3"] = "<ins>uci set %0.<strong>%2</strong></ins>=%3", + ["set-4"] = "<var><ins>uci set %0.%2.%3=<strong>%4</strong></ins></var>", + ["remove-2"] = "<del>uci del %0.<strong>%2</strong></del>", + ["remove-3"] = "<var><del>uci del %0.%2.<strong>%3</strong></del></var>", + ["order-3"] = "<var>uci reorder %0.%2=<strong>%3</strong></var>", + ["list-add-4"] = "<var><ins>uci add_list %0.%2.%3=<strong>%4</strong></ins></var>", + ["list-del-4"] = "<var><del>uci del_list %0.%2.%3=<strong>%4</strong></del></var>", + ["rename-3"] = "<var>uci rename %0.%2=<strong>%3</strong></var>", + ["rename-4"] = "<var>uci rename %0.%2.%3=<strong>%4</strong></var>" + } - for r, tbl in pairs(changes) do - for s, os in pairs(tbl) do - -- section add - if os['.type'] and os['.type'] ~= "" then - ret[#ret+1] = "<ins>%s.%s=<strong>%s</strong>" %{ r, s, os['.type'] } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "<br />%s.%s.%s+=<strong>%s</strong>" - %{ r, s, o, util.pcdata(v[i]) } - end - elseif v ~= "" then - ret[#ret+1] = "<br />%s.%s.%s=<strong>%s</strong>" - %{ r, s, o, util.pcdata(v) } - else - ret[#ret+1] = "<br /><del>%s.%s.<strong>%s</strong></del>" %{ r, s, o } - end - end - end - ret[#ret+1] = "</ins><br />" - - -- section delete - elseif os['.type'] and os['.type'] == "" then - ret[#ret+1] = "<del>%s.<strong>%s</strong></del><br />" %{ r, s } + local conf, deltas + for conf, deltas in util.kspairs(changes) do + write("<h3># /etc/config/%s</h3>" % conf) - -- modifications - else - ret[#ret+1] = "<var>%s.%s<br />" %{ r, s } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if v and #v > 0 then - ret[#ret+1] = "<ins>" - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "%s.%s.%s+=<strong>%s</strong><br />" - %{ r, s, o, util.pcdata(v[i]) } - end + local _, delta, added + for _, delta in pairs(deltas) do + local t = tpl["%s-%d" %{ delta[1], #delta }] - else - ret[#ret+1] = "%s.%s.%s=<strong>%s</strong><br />" - %{ r, s, o, util.pcdata(v) } - end - ret[#ret+1] = "</ins>" - else - ret[#ret+1] = "<del>%s.%s.<strong>%s</strong><br /></del>" %{ r, s, o } - end + write(t:gsub("%%(%d)", function(n) + if n == "0" then + return conf + elseif n == "2" then + if added and delta[2] == added[1] then + return "@%s[-1]" % added[2] + else + return delta[2] end + elseif n == "4" then + return util.shellquote(delta[4]) + else + return delta[tonumber(n)] end - ret[#ret+1] = "</var><br />" + end)) + + if delta[1] == "add" then + added = { delta[2], delta[3] } end end - end - write(table.concat(ret)) + write("<br />") + end %></div> </div> <%- end) %> |