diff options
14 files changed, 108 insertions, 58 deletions
diff --git a/modules/luci-base/luasrc/controller/admin/index.lua b/modules/luci-base/luasrc/controller/admin/index.lua new file mode 100644 index 0000000000..39e6e573b1 --- /dev/null +++ b/modules/luci-base/luasrc/controller/admin/index.lua @@ -0,0 +1,82 @@ +-- Copyright 2008 Steven Barth <steven@midlink.org> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.admin.index", package.seeall) + +function index() + function toplevel_page(page, preflookup, preftarget) + if preflookup and preftarget then + if lookup(preflookup) then + page.target = preftarget + end + end + + if not page.target then + page.target = firstchild() + end + end + + local root = node() + if not root.target then + root.target = alias("admin") + root.index = true + end + + local page = node("admin") + page.title = _("Administration") + page.order = 10 + page.sysauth = "root" + page.sysauth_authenticator = "htmlauth" + page.ucidata = true + page.index = true + toplevel_page(page, "admin/status/overview", alias("admin", "status")) + + -- Empty menu tree to be populated by addons and modules + + page = node("admin", "status") + page.title = _("Status") + page.order = 10 + page.index = true + -- overview is from mod-admin-full + toplevel_page(page, "admin/status/overview", alias("admin", "status", "overview")) + + page = node("admin", "system") + page.title = _("System") + page.order = 20 + page.index = true + -- system/system is from mod-admin-full + toplevel_page(page, "admin/system/system", alias("admin", "system", "system")) + + -- Only used if applications add items + page = node("admin", "services") + page.title = _("Services") + page.order = 40 + page.index = true + toplevel_page(page, false, false) + + -- Even for mod-admin-full network just uses first submenu item as landing + page = node("admin", "network") + page.title = _("Network") + page.order = 50 + page.index = true + toplevel_page(page, false, false) + + -- Logout is last + entry({"admin", "logout"}, call("action_logout"), _("Logout"), 999) +end + +function action_logout() + local dsp = require "luci.dispatcher" + local utl = require "luci.util" + local sid = dsp.context.authsession + + if sid then + utl.ubus("session", "destroy", { ubus_rpc_session = sid }) + + luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s/" %{ + sid, 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url() + }) + end + + luci.http.redirect(dsp.build_url()) +end diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/modules/luci-base/luasrc/controller/admin/uci.lua index 1d955dd982..1d955dd982 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua +++ b/modules/luci-base/luasrc/controller/admin/uci.lua diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua index 6cf2712eb4..09d5d72846 100644 --- a/modules/luci-base/luasrc/dispatcher.lua +++ b/modules/luci-base/luasrc/dispatcher.lua @@ -741,11 +741,12 @@ function _firstchild() end end - assert(lowest ~= nil, - "The requested node contains no childs, unable to redispatch") - - path[#path+1] = lowest - dispatch(path) + if lowest == nil then + require "luci.template".render("empty_node_placeholder") + else + path[#path+1] = lowest + dispatch(path) + end end function firstchild() diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm b/modules/luci-base/luasrc/view/admin_uci/changelog.htm index 8a162c88b6..8a162c88b6 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm +++ b/modules/luci-base/luasrc/view/admin_uci/changelog.htm diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-base/luasrc/view/admin_uci/changes.htm index 43bd7c23fb..43bd7c23fb 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm +++ b/modules/luci-base/luasrc/view/admin_uci/changes.htm diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/modules/luci-base/luasrc/view/admin_uci/revert.htm index d8fd3de01e..d8fd3de01e 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm +++ b/modules/luci-base/luasrc/view/admin_uci/revert.htm 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 0000000000..b7e276b960 --- /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%> diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua deleted file mode 100644 index cc8c2e3ae6..0000000000 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/index.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright 2008 Steven Barth <steven@midlink.org> --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.index", package.seeall) - -function index() - local root = node() - if not root.target then - root.target = alias("admin") - root.index = true - end - - local page = node("admin") - page.target = firstchild() - page.title = _("Administration") - page.order = 10 - page.sysauth = "root" - page.sysauth_authenticator = "htmlauth" - page.ucidata = true - page.index = true - - -- Empty services menu to be populated by addons - entry({"admin", "services"}, firstchild(), _("Services"), 40).index = true - - entry({"admin", "logout"}, call("action_logout"), _("Logout"), 90) -end - -function action_logout() - local dsp = require "luci.dispatcher" - local utl = require "luci.util" - local sid = dsp.context.authsession - - if sid then - utl.ubus("session", "destroy", { ubus_rpc_session = sid }) - - luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s/" %{ - sid, 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url() - }) - end - - luci.http.redirect(dsp.build_url()) -end diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua index c45605a983..c4e1c3aa16 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/network.lua @@ -8,12 +8,6 @@ function index() local uci = require("luci.model.uci").cursor() local page - page = node("admin", "network") - page.target = firstchild() - page.title = _("Network") - page.order = 50 - page.index = true - -- if page.inreq then local has_switch = false diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua index ff95f3d915..4f04cce545 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua @@ -5,7 +5,6 @@ module("luci.controller.admin.status", package.seeall) function index() - entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1) entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua index 46d2e36c32..4e83769ee0 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua @@ -7,7 +7,6 @@ module("luci.controller.admin.system", package.seeall) function index() local fs = require "nixio.fs" - entry({"admin", "system"}, alias("admin", "system", "system"), _("System"), 30).index = true entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1) entry({"admin", "system", "clock_status"}, post_on({ set = true }, "action_clock_status")) diff --git a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm index 4347f133a4..a6bb326976 100644 --- a/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm +++ b/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm @@ -193,7 +193,9 @@ <div class="alert-message warning"> <h4><%:No password set!%></h4> <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> - <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% if disp.lookup("amdin/system/admin") then %> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% end %> </div> <%- end -%> diff --git a/themes/luci-theme-material/luasrc/view/themes/material/header.htm b/themes/luci-theme-material/luasrc/view/themes/material/header.htm index c070b1a617..564c680f1d 100644 --- a/themes/luci-theme-material/luasrc/view/themes/material/header.htm +++ b/themes/luci-theme-material/luasrc/view/themes/material/header.htm @@ -239,7 +239,9 @@ <div class="alert-message warning"> <h4><%:No password set!%></h4> <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> - <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% if disp.lookup("admin/system/admin") then %> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% end %> </div> <%- end -%> diff --git a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm index 6fc657ddce..1d2161168b 100644 --- a/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm +++ b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm @@ -257,6 +257,8 @@ <div class="alert-message warning"> <h4><%:No password set!%></h4> <p><%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%></p> - <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% if disp.lookup("admin/system/admin") then %> + <div class="right"><a class="btn" href="<%=url("admin/system/admin")%>"><%:Go to password configuration...%></a></div> + <% end %> </div> <%- end -%> |