summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/luasrc/view
diff options
context:
space:
mode:
authorDaniel F. Dickinson <cshored@thecshore.com>2018-08-02 09:39:48 -0400
committerJo-Philipp Wich <jo@mein.io>2018-09-19 20:08:19 +0200
commit6ec0353201435e0d0d7d32820d8ba600b4ca7b5b (patch)
tree8f37ae726c257f81fe105cb85e7c6aebe09c0095 /modules/luci-base/luasrc/view
parent1a0316bbbaad3f6befce34014d7e204cb1c76ec0 (diff)
modules: Make luci-base sufficient to use luci apps
Per the discussion in https://github.com/openwrt/luci/issues/869, make luci-base sufficient to login, logout, and review and apply or revert uci changes. This allows most luci-app-xxx to work without having luci-mod-admin-full installed. It has been tested with some apps and not luci-mod-admin-full, as well as with luci-mod-admin-full (to make sure the usual case doesn't break). Instead of creating a new module namespace (e.g. 'Base') we reduce the opportunities for breakage by having luci-base take over the 'shell' of the 'Administration' (admin/....) namespace. Since admin is assumed by all current building LuCI components (including Freifunk), this doesn't introduce the 'Administration' tab into any situation where it would not already be present (but includes it where it was before). We also add a "Component not installed" page to avoid fatal errors and backtrace when e.g. luci-mod-admin-full is not installed. Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
Diffstat (limited to 'modules/luci-base/luasrc/view')
-rw-r--r--modules/luci-base/luasrc/view/admin_uci/changelog.htm66
-rw-r--r--modules/luci-base/luasrc/view/admin_uci/changes.htm45
-rw-r--r--modules/luci-base/luasrc/view/admin_uci/revert.htm33
-rw-r--r--modules/luci-base/luasrc/view/empty_node_placeholder.htm11
4 files changed, 155 insertions, 0 deletions
diff --git a/modules/luci-base/luasrc/view/admin_uci/changelog.htm b/modules/luci-base/luasrc/view/admin_uci/changelog.htm
new file mode 100644
index 000000000..8a162c88b
--- /dev/null
+++ b/modules/luci-base/luasrc/view/admin_uci/changelog.htm
@@ -0,0 +1,66 @@
+<%#
+ Copyright 2010 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% export("uci_changelog", function(changes) -%>
+<div class="cbi-section">
+ <strong><%:Legend:%></strong>
+ <div class="uci-change-legend">
+ <div class="uci-change-legend-label"><ins>&#160;</ins> <%:Section added%></div>
+ <div class="uci-change-legend-label"><del>&#160;</del> <%:Section removed%></div>
+ <div class="uci-change-legend-label"><var><ins>&#160;</ins></var> <%:Option changed%></div>
+ <div class="uci-change-legend-label"><var><del>&#160;</del></var> <%:Option removed%></div>
+ <br style="clear:both" />
+ </div>
+ <br />
+
+ <div class="uci-change-list"><%
+ local util = luci.util
+ 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>"
+ }
+
+ local conf, deltas
+ for conf, deltas in util.kspairs(changes) do
+ write("<h3># /etc/config/%s</h3>" % conf)
+
+ local _, delta, added
+ for _, delta in pairs(deltas) do
+ local t = tpl["%s-%d" %{ delta[1], #delta }]
+
+ 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
+ end))
+
+ if delta[1] == "add" then
+ added = { delta[2], delta[3] }
+ end
+ end
+
+ write("<br />")
+ end
+ %></div>
+</div>
+<%- end) %>
diff --git a/modules/luci-base/luasrc/view/admin_uci/changes.htm b/modules/luci-base/luasrc/view/admin_uci/changes.htm
new file mode 100644
index 000000000..43bd7c23f
--- /dev/null
+++ b/modules/luci-base/luasrc/view/admin_uci/changes.htm
@@ -0,0 +1,45 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%-
+ local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
+
+ include("admin_uci/changelog")
+-%>
+
+<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
+
+<% if changes then %>
+ <%- uci_changelog(changes) -%>
+<% else %>
+ <p><strong><%:There are no pending changes!%></strong></p>
+<% end %>
+
+<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+
+<div class="cbi-page-actions">
+ <% if redir_url then %>
+ <form method="get" action="<%=luci.util.pcdata(redir_url)%>">
+ <input class="cbi-button cbi-button-link" type="submit" value="<%:Back%>" />
+ </form>
+ <% end %>
+
+ <form method="post" action="<%=url("admin/uci/changes")%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+ <input class="cbi-button cbi-button-save" type="submit" name="trigger_apply" value="<%:Save & Apply%>" />
+ </form>
+ <form method="post" action="<%=url("admin/uci/revert")%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
+ <input class="cbi-button cbi-button-reset" type="submit" value="<%:Revert%>" />
+ </form>
+</div>
+
+<%+footer%>
diff --git a/modules/luci-base/luasrc/view/admin_uci/revert.htm b/modules/luci-base/luasrc/view/admin_uci/revert.htm
new file mode 100644
index 000000000..d8fd3de01
--- /dev/null
+++ b/modules/luci-base/luasrc/view/admin_uci/revert.htm
@@ -0,0 +1,33 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%-
+ local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+ export("redirect", redir_url or url("admin/uci/changes"))
+
+ include("admin_uci/changelog")
+-%>
+
+<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
+
+<% if changes then %>
+ <p><strong><%:The following changes have been reverted%>:</strong></p>
+ <%- uci_changelog(changes) -%>
+<% else %>
+ <p><strong><%:There are no pending changes to revert!%></strong></p>
+<% end %>
+
+<% if redir_url then %>
+ <div class="cbi-page-actions">
+ <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
+ <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" />
+ </form>
+ </div>
+<% end %>
+
+<%+footer%>
diff --git a/modules/luci-base/luasrc/view/empty_node_placeholder.htm b/modules/luci-base/luasrc/view/empty_node_placeholder.htm
new file mode 100644
index 000000000..b7e276b96
--- /dev/null
+++ b/modules/luci-base/luasrc/view/empty_node_placeholder.htm
@@ -0,0 +1,11 @@
+<%#
+ Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2018 Daniel F. Dickinson <cshored@thecshore.com>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<p>Component not present.</p>
+
+<%+footer%>