treewide: rework uci change display
[project/luci.git] / modules / luci-mod-admin-full / luasrc / view / admin_uci / changelog.htm
1 <%#
2 Copyright 2010 Jo-Philipp Wich <jo@mein.io>
3 Licensed to the public under the Apache License 2.0.
4 -%>
5
6 <% export("uci_changelog", function(changes) -%>
7 <div class="cbi-section">
8 <strong><%:Legend:%></strong>
9 <div class="uci-change-legend">
10 <div class="uci-change-legend-label"><ins>&#160;</ins> <%:Section added%></div>
11 <div class="uci-change-legend-label"><del>&#160;</del> <%:Section removed%></div>
12 <div class="uci-change-legend-label"><var><ins>&#160;</ins></var> <%:Option changed%></div>
13 <div class="uci-change-legend-label"><var><del>&#160;</del></var> <%:Option removed%></div>
14 <br style="clear:both" />
15 </div>
16 <br />
17
18 <div class="uci-change-list"><%
19 local util = luci.util
20 local tpl = {
21 ["add-3"] = "<ins>uci add %0 <strong>%3</strong> # =%2</ins>",
22 ["set-3"] = "<ins>uci set %0.<strong>%2</strong></ins>=%3",
23 ["set-4"] = "<var><ins>uci set %0.%2.%3=<strong>%4</strong></ins></var>",
24 ["remove-2"] = "<del>uci del %0.<strong>%2</strong></del>",
25 ["remove-3"] = "<var><del>uci del %0.%2.<strong>%3</strong></del></var>",
26 ["order-3"] = "<var>uci reorder %0.%2=<strong>%3</strong></var>",
27 ["list-add-4"] = "<var><ins>uci add_list %0.%2.%3=<strong>%4</strong></ins></var>",
28 ["list-del-4"] = "<var><del>uci del_list %0.%2.%3=<strong>%4</strong></del></var>",
29 ["rename-3"] = "<var>uci rename %0.%2=<strong>%3</strong></var>",
30 ["rename-4"] = "<var>uci rename %0.%2.%3=<strong>%4</strong></var>"
31 }
32
33 local conf, deltas
34 for conf, deltas in util.kspairs(changes) do
35 write("<h3># /etc/config/%s</h3>" % conf)
36
37 local _, delta, added
38 for _, delta in pairs(deltas) do
39 local t = tpl["%s-%d" %{ delta[1], #delta }]
40
41 write(t:gsub("%%(%d)", function(n)
42 if n == "0" then
43 return conf
44 elseif n == "2" then
45 if added and delta[2] == added[1] then
46 return "@%s[-1]" % added[2]
47 else
48 return delta[2]
49 end
50 elseif n == "4" then
51 return util.shellquote(delta[4])
52 else
53 return delta[tonumber(n)]
54 end
55 end))
56
57 if delta[1] == "add" then
58 added = { delta[2], delta[3] }
59 end
60 end
61
62 write("<br />")
63 end
64 %></div>
65 </div>
66 <%- end) %>