From 64541eda089848a84ffed7e73057fed22c6f125c Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 11 Aug 2008 16:56:16 +0000 Subject: [PATCH] * luci/themes: add "OpenWrt Light" theme, a derivate of openwrt.org theme without images --- themes/openwrt-light/Makefile | 2 + .../luci-static/openwrt-light/cascade.css | 461 ++++++++++++++++++ themes/openwrt-light/ipkg/postinst | 4 + .../view/themes/openwrt-light/footer.htm | 22 + .../view/themes/openwrt-light/header.htm | 186 +++++++ .../etc/uci-defaults/luci-theme-openwrtlight | 6 + 6 files changed, 681 insertions(+) create mode 100644 themes/openwrt-light/Makefile create mode 100644 themes/openwrt-light/htdocs/luci-static/openwrt-light/cascade.css create mode 100755 themes/openwrt-light/ipkg/postinst create mode 100644 themes/openwrt-light/luasrc/view/themes/openwrt-light/footer.htm create mode 100644 themes/openwrt-light/luasrc/view/themes/openwrt-light/header.htm create mode 100755 themes/openwrt-light/root/etc/uci-defaults/luci-theme-openwrtlight diff --git a/themes/openwrt-light/Makefile b/themes/openwrt-light/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/themes/openwrt-light/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/themes/openwrt-light/htdocs/luci-static/openwrt-light/cascade.css b/themes/openwrt-light/htdocs/luci-static/openwrt-light/cascade.css new file mode 100644 index 000000000..a4203a6f4 --- /dev/null +++ b/themes/openwrt-light/htdocs/luci-static/openwrt-light/cascade.css @@ -0,0 +1,461 @@ +* { + margin: 0; + padding: 0; +} + +body { + background-color: #4a6b7c; + color: #ffffff; + font-family: Verdana, Arial, sans-serif; + font-size: 100%; + line-height: 100%; +} + +code { + font-family: monospace; + white-space: pre; +} + +div#content ul { + margin-left: 2em; +} + +.warning { + color: red !important; + font-weight: bold; +} + +.clear { + clear: both; + height: 1px; +} + +.hidden { + display: none; +} + +.error { + color: #ff0000; +} + +#header { + background-color: #557788; + text-align: right; +} + +#header .info { + padding: 1em 1em; + font-size: 70%; + line-height: 160%; +} + +#header .title { + display: none; +} + +.pathbar { + display: none; +} + +.menubar { + width: 100%; + min-height: 1.8em; + background: #000000; + color: #ffffff; +} + +.mainmenu { + float: left; + width: auto; + min-height: 1.8em; + background: #000000; + color: #ffffff; +} + +.mainmenu div { + float: left; +} + +.mainmenu li { + white-space: nowrap; +} + +.mainmenu div ul { + display: none; + position: absolute; + background: #000000; + color: #ffffff; + border-width: 0 1px 1px 1px; + border-style: solid; + border-color: #444444; + list-style-type: none; +} + +.mainmenu ul li:hover > ul, +.mainmenu div:hover > ul { + display: block; +} + +.mainmenu ul li > ul { + left: 100%; + margin-top: -1.8em; + border-width: 1px; +} + +.modemenu a, +.mainmenu a { + display: block; + padding: 0.5em; + color: #ffffff; + text-decoration: none; + font-size: 80%; +} + +.mainmenu .active a, +.modemenu .active a { + color: #ffff00; + font-weight: bold; +} + +.mainmenu li:hover > span > a, +.mainmenu div:hover > a { + font-weight: bold; +} + +.modemenu a:hover, +.modemenu a:focus, +.mainmenu a:hover, +.mainmenu a:focus { + color: #ffff00; + font-weight: bold; +} + +.mainmenu div.preactive > a { + color: #ffff00; + font-weight: bold; +} + +.modemenu ul { + width: auto; + background: #000000; + color: #ffffff; + list-style-type: none; +} + +.modemenu li { + float: right; +} + +#content { + clear: both; + width: 80%; + margin: 0 auto; + padding: 0.5em; + background: #f5f5f5; + color: #000000; + border-width: 0 1px 1px 1px; + border-style: solid; + border-color: #444444; + font-size: 80%; +} + +#content h1 { + margin: 0.25em 0 0.5em 0; + font-size: 150%; + font-weight: normal; +} + +#content h2 { + margin: 0.5em 0; + font-size: 120%; + font-weight: normal; + text-decoration: underline; +} + +#content p { + margin-bottom: 1em; +} + +.cbi-section { + margin-bottom: 0.5em; + padding: 0.5em 1em; + border: 1px dotted #555555; + background-color: #ffffff; +} + +.cbi-section legend { + font-size: 110%; + font-weight: bold; + height: 1em; + padding: 0 0.25em; + color: #555555; +} + +.cbi-section h2 { + margin: 0em 0 0.5em -0.5em !important; +} + +.cbi-section h3 { + height: 1.5em; + font-size: 90%; + color: #555555; +} + +.cbi-section-descr { + margin-bottom: 0.5em; + font-size: 95%; +} + +input[type=submit], +input[type=reset], +label { + cursor: pointer; +} + +select, +input, +textarea { + background: #eeeeee; + color: #000000; + border: 1px solid #000000; +} + +input:focus, +textarea:focus { + background: #ffffff; +} + +select, +input[type=text], +input[type=password] { + width: 20em; +} + +td select, +td input[type=text], +td input[type=password] { + width: 99%; +} + +textarea { + margin-left: -1px; + margin-bottom: 0.5em; +} + +form > div > input[type=submit], +form > div > input[type=reset] { + float: right; + margin-left: 0.5em; +} + +table.smalltext { + background: #f5f5f5; + border-top: 1px solid #666666; + border-right: 1px solid #666666; + border-bottom: 1px solid #666666; + font-size: 90%; + width: 80%; + margin-left: auto; + margin-right: auto; + border-collapse: collapse; +} + +table.smalltext tr:hover td { + background-color: #bbddee; +} + +table.smalltext tr th { + padding: 0 0.25em; + border-left: 1px solid #666666; + text-align: left; +} + +table.smalltext tr td { + padding: 0 0.25em; + border-top: 1px solid #666666; + border-left: 1px solid #666666; +} + +div.cbi-value { + clear: left; + padding: 0.25em; + border-bottom: 1px dotted #bbbbbb; +} + +div.cbi-value:hover { + background: #f8f8f8; +} + +div.cbi-value:last-child { + border: none; +} + +.cbi-value-title { + float: left; + width: 40%; + margin: 0.25em 0; +} + +div.cbi-value-field { + width: 58%; + margin: 0.25em 0 0.25em 40%; +} + +div.cbi-value-description { + font-size: 90%; +} + +div.cbi-value-field > div.cbi-value-description { + display: none; +} + +div.cbi-value:hover div.cbi-value-field > div.cbi-value-description { + display: block; +} + +div.cbi-section-create { + clear: left; +} + +div.cbi-map-descr { + margin-bottom: 1em; +} + +div.cbi-optionals { + margin: 0.5em 0; + padding: 0 0.25em; +} + +div.cbi-section-remove { + float: right; +} + +div.cbi-section-remove input { + border-color: #bbbbbb; + border-bottom: none; +} + +.cbi-section-node { + clear: both; + border: 1px dotted #bbbbbb; + padding-bottom: 0; +} + +table.cbi-section-table { + width: 100%; + font-size: 95%; +} + +table.cbi-section-table th, +table.cbi-section-table td { + text-align: center; +} + +tr.cbi-section-table-descr th { + font-weight: normal; + font-size: 90%; +} + +td.cbi-section-table-optionals { + text-align: left !important; + padding-top: 1em; +} + +.right { + text-align: right; +} + +.luci { + position: fixed; + bottom: 0; + left: 0; + text-align: right; +} + +.luci a { + color: #666666; + text-decoration: none; + font-size: 70%; +} + +.inline { + display: inline; +} + +#memorybar { + width:200px; + height:8px; + border:1px solid #bbb; + background-color:red +} + +#memfree, #membuffers, #memcached { + float:right; + border:1px solid #bbb; + height:6px; +} + +#memfree { + background-color:green; +} + +#membuffers { + background-color:yellow; +} + +#memcached { + background-color:orange; +} + + +/* obligatory IE6 Voodoo Code */ +* html body { + padding-left: 50% !important; +} + +* html div#header { + margin-left: -100% !important; +} + +* html div.menubar { + margin-left: -100% !important; + width: 200% !important; +} + +* html div#content { + margin-left: -80% !important; + width: 160% !important; +} + +* html div.mainmenu div.hover ul, +* html div.mainmenu div li.hover ul, +* html div.mainmenu div li li.hover ul, +* html div.mainmenu div li li li.hover ul, +* html div.mainmenu div li li li li.hover ul { + display: block !important; + margin-left: 3em; +} + +* html div.mainmenu div.hover ul { + margin-left: 0; +} + +* html div.mainmenu .hover ul ul, +* html div.mainmenu .hover ul ul ul, +* html div.mainmenu .hover ul ul ul ul, +* html div.mainmenu .hover ul ul ul ul ul { + display: none !important; +} + +* html div.mainmenu li { + height: 1em !important; + width: 10em !important; +} + +* html .mainmenu { + height: 1.8em; +} + +* html div.cbi-value-description { + margin-left: 40%; +} diff --git a/themes/openwrt-light/ipkg/postinst b/themes/openwrt-light/ipkg/postinst new file mode 100755 index 000000000..48ea52273 --- /dev/null +++ b/themes/openwrt-light/ipkg/postinst @@ -0,0 +1,4 @@ +#!/bin/sh +[ -n "${IPKG_INSTROOT}" ] || { + ( . /etc/uci-defaults/luci-theme-openwrt ) && rm -f /etc/uci-defaults/luci-theme-openwrt +} diff --git a/themes/openwrt-light/luasrc/view/themes/openwrt-light/footer.htm b/themes/openwrt-light/luasrc/view/themes/openwrt-light/footer.htm new file mode 100644 index 000000000..d1a8d43fe --- /dev/null +++ b/themes/openwrt-light/luasrc/view/themes/openwrt-light/footer.htm @@ -0,0 +1,22 @@ +<%# +LuCI - Lua Configuration Interface +Copyright 2008 Steven Barth +Copyright 2008 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$ + +-%> +
+ + + + + + + diff --git a/themes/openwrt-light/luasrc/view/themes/openwrt-light/header.htm b/themes/openwrt-light/luasrc/view/themes/openwrt-light/header.htm new file mode 100644 index 000000000..43abeedf7 --- /dev/null +++ b/themes/openwrt-light/luasrc/view/themes/openwrt-light/header.htm @@ -0,0 +1,186 @@ +<%# +LuCI - Lua Configuration Interface +Copyright 2008 Steven Barth +Copyright 2008 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$ + +-%> +<% +require("luci.sys") +local load1, load5, load15 = luci.sys.loadavg() +local request = require("luci.dispatcher").context.path +local category = request[1] +local tree = luci.dispatcher.node() +local cattree = category and luci.dispatcher.node(category) +local node = luci.dispatcher.context.dispatched +local hostname = luci.sys.hostname() + +local c = tree +for i,r in ipairs(request) do + if c.nodes and c.nodes[r] then + c = c.nodes[r] + c._menu_selected = true + end +end + +require("luci.i18n").loadc("default") +require("luci.http").prepare_content("text/html") + +-%> + + + + + + + <% if node and node.css then %><% end %> + + + <%= hostname .. ( (node and node.title) and ' - ' .. node.title or '') %> - LuCI + + + + + + +
+<%:path%>: <% +local c = tree +local url = controller +for k,v in pairs(request) do + if c.nodes and c.nodes[v] then + c = c.nodes[v] + url = url .. "/" .. v + %><%=c.title or v%> <% if k ~= #request then %>» <% end + end +end +%> +
+ + +
+
    <% + for k,node in pairs(tree.nodes) do + if node.title then %> + class="active"<%end%>><%=node.title%> +<% end + end%> +
+
+ + <% + if tree.nodes[category] and tree.nodes[category].ucidata then + local ucic = 0 + for i, j in pairs(require("luci.model.uci").changes()) do + for k, l in pairs(j) do + for m, n in pairs(l) do + ucic = ucic + 1; + end + end + end + %> + + <% end %> + +
+ +
diff --git a/themes/openwrt-light/root/etc/uci-defaults/luci-theme-openwrtlight b/themes/openwrt-light/root/etc/uci-defaults/luci-theme-openwrtlight new file mode 100755 index 000000000..b797a0073 --- /dev/null +++ b/themes/openwrt-light/root/etc/uci-defaults/luci-theme-openwrtlight @@ -0,0 +1,6 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.OpenWRT_Light=/luci-static/openwrt-light + commit luci +EOF + -- 2.25.1