From a4bf60679d0e7cea78874afa80319b8ed98c455e Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 29 Sep 2008 19:10:51 +0000 Subject: [PATCH] * luci/themes: add Freifunk and Freifunk-BNO themes, thanks Stefan Pirwitz --- contrib/package/luci/Makefile | 30 + themes/freifunk-bno/Makefile | 2 + .../luci-static/freifunk-bno/cascade.css | 726 ++++++++++++++++++ .../freifunk-bno/images/bgoption.png | Bin 0 -> 141 bytes .../freifunk-bno/images/favicon.ico | Bin 0 -> 5310 bytes .../freifunk-bno/images/header-back.gif | Bin 0 -> 127 bytes .../freifunk-bno/images/header-left.gif | Bin 0 -> 293 bytes .../freifunk-bno/images/header-right.gif | Bin 0 -> 365 bytes .../luci-static/freifunk-bno/images/logo.gif | Bin 0 -> 2415 bytes .../freifunk-bno/images/main-back.png | Bin 0 -> 404 bytes .../freifunk-bno/images/schriftzug.gif | Bin 0 -> 3606 bytes themes/freifunk-bno/ipkg/postinst | 4 + .../view/themes/freifunk-bno/footer.htm | 29 + .../view/themes/freifunk-bno/header.htm | 196 +++++ .../etc/uci-defaults/luci-theme-freifunk-bno | 6 + themes/freifunk/Makefile | 2 + .../htdocs/luci-static/freifunk/cascade.css | 726 ++++++++++++++++++ .../luci-static/freifunk/images/bgoption.png | Bin 0 -> 141 bytes .../luci-static/freifunk/images/favicon.ico | Bin 0 -> 4286 bytes .../freifunk/images/header-back.gif | Bin 0 -> 127 bytes .../freifunk/images/header-left.gif | Bin 0 -> 293 bytes .../freifunk/images/header-right.gif | Bin 0 -> 365 bytes .../luci-static/freifunk/images/logo.png | Bin 0 -> 6400 bytes .../luci-static/freifunk/images/main-back.png | Bin 0 -> 404 bytes .../freifunk/images/schriftzug.png | Bin 0 -> 4487 bytes themes/freifunk/ipkg/postinst | 4 + .../luasrc/view/themes/freifunk/footer.htm | 29 + .../luasrc/view/themes/freifunk/header.htm | 196 +++++ .../root/etc/uci-defaults/luci-theme-freifunk | 6 + 29 files changed, 1956 insertions(+) create mode 100644 themes/freifunk-bno/Makefile create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-right.gif create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png create mode 100644 themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/schriftzug.gif create mode 100755 themes/freifunk-bno/ipkg/postinst create mode 100644 themes/freifunk-bno/luasrc/view/themes/freifunk-bno/footer.htm create mode 100644 themes/freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm create mode 100755 themes/freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno create mode 100644 themes/freifunk/Makefile create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/cascade.css create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/bgoption.png create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/favicon.ico create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/header-back.gif create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/header-left.gif create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/header-right.gif create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/logo.png create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/main-back.png create mode 100644 themes/freifunk/htdocs/luci-static/freifunk/images/schriftzug.png create mode 100755 themes/freifunk/ipkg/postinst create mode 100644 themes/freifunk/luasrc/view/themes/freifunk/footer.htm create mode 100644 themes/freifunk/luasrc/view/themes/freifunk/header.htm create mode 100755 themes/freifunk/root/etc/uci-defaults/luci-theme-freifunk diff --git a/contrib/package/luci/Makefile b/contrib/package/luci/Makefile index 1f1a3e91e..5806efe75 100644 --- a/contrib/package/luci/Makefile +++ b/contrib/package/luci/Makefile @@ -526,6 +526,28 @@ define Package/luci-theme-fledermaus/install $(call Package/luci/install/template,$(1),themes/fledermaus) endef +define Package/luci-theme-freifunk + $(call Package/luci/thtemplate) + DEPENDS:=+luci-web + MAINTAINER:=Stefan Pirwitz + TITLE:=alternative Freifunk Theme +endef + +define Package/luci-theme-freifunk/install + $(call Package/luci/install/template,$(1),themes/freifunk) +endef + +define Package/luci-theme-freifunk-bno + $(call Package/luci/thtemplate) + DEPENDS:=+luci-web + MAINTAINER:=Stefan Pirwitz + TITLE:=Freifunk Berlin Nordost Theme +endef + +define Package/luci-theme-freifunk-bno/install + $(call Package/luci/install/template,$(1),themes/freifunk-bno) +endef + define Package/luci-theme-openwrt $(call Package/luci/thtemplate) TITLE:=OpenWRT.org (default) @@ -706,6 +728,12 @@ endif ifneq ($(CONFIG_PACKAGE_luci-theme-fledermaus),) PKG_SELECTED_MODULES+=themes/fledermaus endif +ifneq ($(CONFIG_PACKAGE_luci-theme-freifunk-bno),) + PKG_SELECTED_MODULES+=themes/freifunk-bno +endif +ifneq ($(CONFIG_PACKAGE_luci-theme-freifunk),) + PKG_SELECTED_MODULES+=themes/freifunk +endif ifneq ($(CONFIG_PACKAGE_luci-theme-openwrt),) PKG_SELECTED_MODULES+=themes/openwrt.org endif @@ -779,6 +807,8 @@ $(eval $(call BuildPackage,luci-sgi-luci)) $(eval $(call BuildPackage,luci-sgi-webuci)) $(eval $(call BuildPackage,luci-theme-fledermaus)) +$(eval $(call BuildPackage,luci-theme-freifunk)) +$(eval $(call BuildPackage,luci-theme-freifunk-bno)) $(eval $(call BuildPackage,luci-theme-openwrt)) $(eval $(call BuildPackage,luci-theme-openwrtlight)) diff --git a/themes/freifunk-bno/Makefile b/themes/freifunk-bno/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/themes/freifunk-bno/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css new file mode 100644 index 000000000..8f8dc6939 --- /dev/null +++ b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css @@ -0,0 +1,726 @@ +* { + margin: 0; + padding: 0; +} + +body { + background-color: #ffffff; + color: #ffffff; + font-family: Verdana, Arial, sans-serif; + font-size: 100%; + line-height: 100%; + background-image: url(images/main-back.png); + background-repeat: repeat-x; + background-position: left bottom; + } +#all { + margin: 0px; + padding: 0px; + min-height: 800px; +} + +code { + font-family: monospace; + white-space: pre; +} + +a:link, a:visited { + color:#000000; + font-weight:bold; + text-decoration:none; + } +a:hover { + color:#333333; + font-weight:bold; + } + +/* Custom*/ + #wrapper +{ + width: 95%; + color: #333333; + margin-left: auto; + margin-right: auto; +/* background-image: url(images/corner-left.gif); */ +/* background-repeat: no-repeat; */ +/* background-position: left bottom; */ + background-color: #FffdF4; + min-width: 710px; + min-height: 710px; +} +#main { + clear: both; + width: 100%; + margin: 0; + padding: 0; + color: #333333; +/* background-image: url(images/corner-right.gif); */ +/* background-repeat: no-repeat; */ +/* background-position: right bottom; */ + min-height: 710px; +} + +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 +{ + padding: 0px; + height: 100px; +} +#headerleft +{ + height: 100px; + background-color: #FFFfff; + background-image: url(images/header-left.gif); + background-repeat: no-repeat; + background-position: left top; +} +#headerright +{ + height: 100px; + background-color: #FFfffF; + + margin-left: 5px; + background-image: url(images/header-right.gif); + background-repeat: no-repeat; + background-position: right top; +} + +#headerback +{ + margin-right: 5px; + height: 100px; + background-color: #FFfffF; + background-image: url(images/header-back.gif); + background-repeat: repeat-x; + background-position: left top; +} +#schriftzug { + font-size : 1.5em; + text-align:left; + margin-bottom: 7px; + margin-top: 7px; + float:left; + width: 450px; +} + +#schriftzug a:hover{ + background-color:transparent; +} +#logo{ + margin-top: 5px; + float:right; + width: 115px; +} + +.pathbar { + display: none; +} + +.menubar { + width: 100%; + min-height: 1.8em; + background: #ffffff; + color: #000000; + border-top:0.4em solid #DC0067; +} + +.mainmenu { + float: left; + width: auto; + min-height: 1.8em; + background: #ffffff; + color: #000000; +} +.modemenu li { + border-top:0.3em solid #DC0067; + margin-left: 0.3em; + margin-top: -0.3em; +} +.mainmenu div { + float: left; + border-top:0.3em solid #DC0067; + margin-right: 0.3em; + margin-top: -0.3em; +} +.mainmenu div.preactive { + border-top: 0.3em solid #FFCB05; + margin-top: -0.2em; +} + +.mainmenu li { + white-space: nowrap; +} + +.mainmenu div ul { + display: none; + position: absolute; + background: #ffffff; + color: #000000; + 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.2em; + color: #000000; + text-decoration: none; + font-size: 70%; + font-weight: bold; +} + + +.modemenu .active a { + color: #000000; + font-weight: bold; + border-top:0.3em solid #FFCB05; + margin-top: -0.2em; +} +.mainmenu .active a{ + color: #000000; + font-weight: bold; + border-top:0.2em solid #FFCB05; +} +.mainmenu li > span:active { + background-color: #FFE990; +} + +.mainmenu li:hover > span > a, +.mainmenu div:hover > a { +color: #ffffff; +background-color: #FFCB05; +} + + +.modemenu a:focus, +.mainmenu a:focus { + color: #000000; +} + +.mainmenu a:hover, +.modemenu a:hover { +color: #ffffff; +background-color: #FFCB05; +} + +.mainmenu div.preactive > a { + color: #DC0067; + font-weight: bold; +} +.mainmenu div.preactive > a:hover, +.mainmenu div.preactive > a:focus { + color: #ffffff; + font-weight: bold; +} + +.modemenu ul { + width: auto; + background: #000000; + color: #ffffff; + list-style-type: none; +} + +.modemenu li { + float: right; + +} + +#content { + clear: both; + width: 98%; + margin: 0 auto; + padding: 0.5em; + background: #FFF4BE; + color: #000000; + font-size: 80%; + border-top:1px solid #D2A800; +} + +#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 #D2A800; + background-color: #FFE990; +} + +.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%; +} + +.cbi-title-ref { + color: inherit; + text-decoration: none; + padding-right: 18px; + background: url('../resources/cbi/link.gif') no-repeat scroll right center; + background-color: inherit; +} + +input[type=submit], +input[type=reset], +input[type=image], +label { + cursor: pointer; +} + +select, +input, +textarea { + background: #FffdF4; + color: #000000; + border-width: 1px; + border-color: #000000; +} + +input[type=image] { + border: none; +} + + +input:focus, +input:hover, +select:focus, +select:hover, +textarea:focus, +textarea:hover { + background-color: #FFF4BE; +} + +select, +input[type=text], +input[type=password] { + width: 20em; +} + +td select, +td input[type=text], +td input[type=password] { + width: 99%; +} + +input.cbi-input-user { + background: url('../resources/cbi/user.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-key { + background: url('../resources/cbi/key.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-find { + background: url('../resources/cbi/find.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-reload { + background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-add, +input.cbi-button-add { + background: url('../resources/cbi/add.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-fieldadd, +input.cbi-button-fieldadd { + background: url(../resources/cbi/fieldadd.gif) no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-reset, +input.cbi-button-reset { + background: url('../resources/cbi/reset.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-save, +input.cbi-button-save { + background: url('../resources/cbi/save.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-apply, +input.cbi-button-apply { + background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-remove, +div.cbi-section-remove input { + background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +div.cbi-section-remove input { + border-bottom: none; +} + +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-color: #FFCB05; + 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: #FFE990; +} + +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; +} + +.cbi-rowstyle-1 { + background-color: #FFF4BE; +} + +.cbi-rowstyle-2 { +} + +div.cbi-value { + clear: left; + vertical-align: middle; + padding-left: 0.25em; + border-bottom: 1px dotted #FFCB05; +} + +div.cbi-value:hover { + background: #FFF4BE; +} + +div.cbi-value:last-child { + border: none; +} + +.cbi-value-title { + float: left; + width: 40%; +} + +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; + color: #ffffff; + background-color: #FFCB05; +} + +option:active, +option:before, +option:after, +option:focus, +option:hover { + color: #ffffff; + background-color: #EEBA00; + background: url(images/bgoption.png); +} + +div.cbi-section-create { + clear: left; + white-space: nowrap; +} + +div.cbi-map-descr { + margin-bottom: 1em; +} + +div.cbi-optionals { + margin: 0.5em 0; + padding: 0 0.25em; +} + +div.cbi-section-remove { + float: right; +} + +.cbi-section-node { + clear: both; + border: 1px dotted #FFCB05; + padding-bottom: 0; +} + +.cbi-section-node div.cbi-section-table-row { + margin: 0.25em; +} + +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; +} + +.cbi-value-helpicon img { + vertical-align: bottom; +} + +div.cbi-error { + font-size: 95%; + font-weight: bold; + color: #FF0000; +} + +td.cbi-value-error { + border-color: red !important; +} + +.cbi-value-error input, +.cbi-value-error select { + color: red !important; + background-color: #FFCCCC; +} + +.cbi-section-error { + color: red; + font-size: 95%; + border: 1px dotted red; + margin: 3px; + padding: 3px; +} + +ul.cbi-apply { + font-size: 90%; +} + +.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; +} + +.error500 { + white-space: normal; + border: 1px dotted #FF0000; + background-color: #FFFFFF; + padding: 0.5em; +} + +#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/freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/bgoption.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd1e2f34787b200eb425e42fb98c75b039163e2 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaOClDyqr82*Fc zg1yTp14TFsJR*yMv=#_6DqH@!17xt5c>21s-{2Gz=HriQFMb9T;`MZK4B@z*T(N!D bLwg3cy-YKE&k4N(N-%i3`njxgN@xNAizFlF literal 0 HcmV?d00001 diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7247cfac5fe279cf3e12c965f53483196bfb0e2f GIT binary patch literal 5310 zcmeHJd2AGA6n}uYe@I#)M*vMg2#O-0f)-FIh+q(ng4H&}NJygr4G0#oh0<*)Edo`b z6iWb+044>R6hb106t=XbT-CN%OS^OJebMf2ce|avW_;6GrrVuqHT-FIc4qVDeQ$o> zo8P+zU=aQ$OaS~J17#xtMgzbUyif)6@e=fpc7y`lUuE9%751GY^f^H10)yvPp!bY7 zXmXv8h8g|T!Iw-MfY=O_1TJpzEs)haT+x<~CX-iu8-XkYW(P3adrp*5$OM8nge6Q% zga7Co7U^~X!P?}fD!Zc%vVeO1V`|z;Ds?(NH=P-`k4c$KEto_sG1w)uf+uttKq7CF zMp0-z-}Ma;89<1ur)}PaT3gm`TlO^l?LF@OqYT@D&I9UJzN`6+_pH}fY;+epI|~jt za)4Y1T769)$K+eoAMX4L+O`1o>j+ax*t1>dYV8V0X2%v-aS8o&>3Ws-J^rU=wWbUw z8ovHd;jlIMGl7JI#Hlq730V}*u5ut(815K-cSGPnvUwzB^oDvP5@Qp6n_b(U^{PHv zBg)qcUEcvI#}`+RSUiQg$SWM0Wj?;hDn~%gXDtpg6jWTgSLVgE%mhkt6_uK;*M*_ z(KBXh19ar2q8~J}LC`QzNy48D+@awjF|>;53@UiSySev96B|YeuYj-!ekRS1<&P!# zK@z=gnK2qxlmlT7E@p3czc=TI9_i5#iz!(sWiR@Pn zSxNO~sHA$4r7f;dOPdsuq%PC>;bg&KgcZTDWnp`nl13WJeR6-`5((G(IxlX4%HK)3 zJyYRZI+ZMV*lERni1-PcNar=b+#W6w{o>=2?C3bp!d~rGAh9uGK8yJIKrbCb+OD%Q zb4+U{mVD9wtMssHoq|0;NxjQb%bM=6Efrn33-+|lK+buMXs=W7f1kmP2@}gdl5>GL zY4s}N7n$6W-gKAs+In)bQOEHL`GA(6G~0y~s-&T+=frSd&|;-aAkjhyLC`>U+;Fq^ zJPQ7chLs(@7w($iA_bS}m+Q@VD+7oqE*^K^2`k_PdA`v4FFm$lowFwOL4U}o=Uv<~ zX!{a~qjM}sezYa84Z$I8`FvZnGDfc5?W)@|kPjzPY*0ZJ0ge6Vb71En)e z*e(iydUJRi|3FYG9yow%cJ_-OXbCPFOKcg6Gp6jLmQ68(s9Ou>W-ZLSZug_&3%!iTHI)D>L<|pTK0N@GXAc?I#nr!b&3Ur z{l9G4Ks=Z7-WBP3wkdYdxOBm)Z3_4sQjCkIl0QD|2{=X->6Mh{-m#C(AU}GXIK9Ni zTYJNS4O64;kjzk^e8F7CIlJBZ6X>y_;b$1~+-X*5^3qd{$2~Y?am=lMl3w^0^_ZF{ znrN)q;xwQ1@jQQPtKk3N6RY3gmWBYgfjy9 z%u>-SC(-Xtr{J*mfY-C;2MgRJ_n&BAHJHeFzEA)8<7bb(S)sDzyI^!M0WgPg7fiN% z;iSLsVU?;7DmUC7Mprii;Woy`NRFnc!Re1fABzIV98MzKt8kd$t-U!ie35M=WZ*ne zM2=D73@uNy;|KZPXN2i#x*ehSMv=SWm?z}#jeg97;w`U9Xyv4$)s|=i4lgFv^gzGM+9>UGb xQE>^Gst_zl41wwwZqP!WAC%7Xx^(4+t>|f78D}8QK%9X%191l84E$dh_y^c+g?9h| literal 0 HcmV?d00001 diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-back.gif new file mode 100644 index 0000000000000000000000000000000000000000..21fe02b1e9af89e64fea086b438e20e68b391927 GIT binary patch literal 127 zcmZ?wbhEHbWMxQU*v!E2|NsA=KYzY?^XA5l8~@KR?A^O}&YU?-O-*@ud5MXM3>ZN1 zCku-R!+!=HkPOHS1{R$OCp=g0wRnAY_x}WqzLd;)8LQUic&i!oocWx1+ijk>jr||{ P#sCQoF-DIR76xkomfbH1 literal 0 HcmV?d00001 diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/header-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3258ccb6d2f6809c591cdcf5694b6d9557c0feb GIT binary patch literal 293 zcmZ?wbhEHbWMxQUxXQrr|Ns9#fByXb{rlIiUq65T{Qmv>=g*%%eE9JG{rh+C-o1JA z=EaK_PoF-0`0(M~yLWHiym{lsjk9OZ{y)QT^ytweM~)mgaA51!ty{KiS+Qcp!i5Vb zO`0@u;>7m$_J)Rr($dnBl9G&!3P#h)xJA`Jf-bU>DX{KUZKkR+M{QLX+`uh6$`T6(v_x1Jl^z`)e^YifV z@b2#J?Ck96>FMa`=;h_*$$O;Js L%*+7K&p`k?3O3Jl literal 0 HcmV?d00001 diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff00d6ddb8051a28a4430977069e240b8a0a741b GIT binary patch literal 2415 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 literal 0 HcmV?d00001 diff --git a/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png b/themes/freifunk-bno/htdocs/luci-static/freifunk-bno/images/main-back.png new file mode 100644 index 0000000000000000000000000000000000000000..34aca44e01c12fa9f63dcce8d5c6fa529133f7b2 GIT binary patch literal 404 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 +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/freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm b/themes/freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm new file mode 100644 index 000000000..26b67e245 --- /dev/null +++ b/themes/freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm @@ -0,0 +1,196 @@ +<%# +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 %> + + + + <%=striptags( 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 and not node.hidden 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").cursor():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/freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno b/themes/freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno new file mode 100755 index 000000000..e5fb8a12d --- /dev/null +++ b/themes/freifunk-bno/root/etc/uci-defaults/luci-theme-freifunk-bno @@ -0,0 +1,6 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.Freifunk_BNO=/luci-static/freifunk-bno + commit luci +EOF + diff --git a/themes/freifunk/Makefile b/themes/freifunk/Makefile new file mode 100644 index 000000000..81a96f6a8 --- /dev/null +++ b/themes/freifunk/Makefile @@ -0,0 +1,2 @@ +include ../../build/config.mk +include ../../build/module.mk \ No newline at end of file diff --git a/themes/freifunk/htdocs/luci-static/freifunk/cascade.css b/themes/freifunk/htdocs/luci-static/freifunk/cascade.css new file mode 100644 index 000000000..8f8dc6939 --- /dev/null +++ b/themes/freifunk/htdocs/luci-static/freifunk/cascade.css @@ -0,0 +1,726 @@ +* { + margin: 0; + padding: 0; +} + +body { + background-color: #ffffff; + color: #ffffff; + font-family: Verdana, Arial, sans-serif; + font-size: 100%; + line-height: 100%; + background-image: url(images/main-back.png); + background-repeat: repeat-x; + background-position: left bottom; + } +#all { + margin: 0px; + padding: 0px; + min-height: 800px; +} + +code { + font-family: monospace; + white-space: pre; +} + +a:link, a:visited { + color:#000000; + font-weight:bold; + text-decoration:none; + } +a:hover { + color:#333333; + font-weight:bold; + } + +/* Custom*/ + #wrapper +{ + width: 95%; + color: #333333; + margin-left: auto; + margin-right: auto; +/* background-image: url(images/corner-left.gif); */ +/* background-repeat: no-repeat; */ +/* background-position: left bottom; */ + background-color: #FffdF4; + min-width: 710px; + min-height: 710px; +} +#main { + clear: both; + width: 100%; + margin: 0; + padding: 0; + color: #333333; +/* background-image: url(images/corner-right.gif); */ +/* background-repeat: no-repeat; */ +/* background-position: right bottom; */ + min-height: 710px; +} + +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 +{ + padding: 0px; + height: 100px; +} +#headerleft +{ + height: 100px; + background-color: #FFFfff; + background-image: url(images/header-left.gif); + background-repeat: no-repeat; + background-position: left top; +} +#headerright +{ + height: 100px; + background-color: #FFfffF; + + margin-left: 5px; + background-image: url(images/header-right.gif); + background-repeat: no-repeat; + background-position: right top; +} + +#headerback +{ + margin-right: 5px; + height: 100px; + background-color: #FFfffF; + background-image: url(images/header-back.gif); + background-repeat: repeat-x; + background-position: left top; +} +#schriftzug { + font-size : 1.5em; + text-align:left; + margin-bottom: 7px; + margin-top: 7px; + float:left; + width: 450px; +} + +#schriftzug a:hover{ + background-color:transparent; +} +#logo{ + margin-top: 5px; + float:right; + width: 115px; +} + +.pathbar { + display: none; +} + +.menubar { + width: 100%; + min-height: 1.8em; + background: #ffffff; + color: #000000; + border-top:0.4em solid #DC0067; +} + +.mainmenu { + float: left; + width: auto; + min-height: 1.8em; + background: #ffffff; + color: #000000; +} +.modemenu li { + border-top:0.3em solid #DC0067; + margin-left: 0.3em; + margin-top: -0.3em; +} +.mainmenu div { + float: left; + border-top:0.3em solid #DC0067; + margin-right: 0.3em; + margin-top: -0.3em; +} +.mainmenu div.preactive { + border-top: 0.3em solid #FFCB05; + margin-top: -0.2em; +} + +.mainmenu li { + white-space: nowrap; +} + +.mainmenu div ul { + display: none; + position: absolute; + background: #ffffff; + color: #000000; + 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.2em; + color: #000000; + text-decoration: none; + font-size: 70%; + font-weight: bold; +} + + +.modemenu .active a { + color: #000000; + font-weight: bold; + border-top:0.3em solid #FFCB05; + margin-top: -0.2em; +} +.mainmenu .active a{ + color: #000000; + font-weight: bold; + border-top:0.2em solid #FFCB05; +} +.mainmenu li > span:active { + background-color: #FFE990; +} + +.mainmenu li:hover > span > a, +.mainmenu div:hover > a { +color: #ffffff; +background-color: #FFCB05; +} + + +.modemenu a:focus, +.mainmenu a:focus { + color: #000000; +} + +.mainmenu a:hover, +.modemenu a:hover { +color: #ffffff; +background-color: #FFCB05; +} + +.mainmenu div.preactive > a { + color: #DC0067; + font-weight: bold; +} +.mainmenu div.preactive > a:hover, +.mainmenu div.preactive > a:focus { + color: #ffffff; + font-weight: bold; +} + +.modemenu ul { + width: auto; + background: #000000; + color: #ffffff; + list-style-type: none; +} + +.modemenu li { + float: right; + +} + +#content { + clear: both; + width: 98%; + margin: 0 auto; + padding: 0.5em; + background: #FFF4BE; + color: #000000; + font-size: 80%; + border-top:1px solid #D2A800; +} + +#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 #D2A800; + background-color: #FFE990; +} + +.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%; +} + +.cbi-title-ref { + color: inherit; + text-decoration: none; + padding-right: 18px; + background: url('../resources/cbi/link.gif') no-repeat scroll right center; + background-color: inherit; +} + +input[type=submit], +input[type=reset], +input[type=image], +label { + cursor: pointer; +} + +select, +input, +textarea { + background: #FffdF4; + color: #000000; + border-width: 1px; + border-color: #000000; +} + +input[type=image] { + border: none; +} + + +input:focus, +input:hover, +select:focus, +select:hover, +textarea:focus, +textarea:hover { + background-color: #FFF4BE; +} + +select, +input[type=text], +input[type=password] { + width: 20em; +} + +td select, +td input[type=text], +td input[type=password] { + width: 99%; +} + +input.cbi-input-user { + background: url('../resources/cbi/user.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-key { + background: url('../resources/cbi/key.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-find { + background: url('../resources/cbi/find.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-reload { + background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; +} + +input.cbi-input-add, +input.cbi-button-add { + background: url('../resources/cbi/add.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-fieldadd, +input.cbi-button-fieldadd { + background: url(../resources/cbi/fieldadd.gif) no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-reset, +input.cbi-button-reset { + background: url('../resources/cbi/reset.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-save, +input.cbi-button-save { + background: url('../resources/cbi/save.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-apply, +input.cbi-button-apply { + background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +input.cbi-input-remove, +div.cbi-section-remove input { + background: url('../resources/cbi/remove.gif') no-repeat scroll 1px center; + background-color: inherit; + padding-left: 17px; + padding-right: 1px; +} + +div.cbi-section-remove input { + border-bottom: none; +} + +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-color: #FFCB05; + 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: #FFE990; +} + +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; +} + +.cbi-rowstyle-1 { + background-color: #FFF4BE; +} + +.cbi-rowstyle-2 { +} + +div.cbi-value { + clear: left; + vertical-align: middle; + padding-left: 0.25em; + border-bottom: 1px dotted #FFCB05; +} + +div.cbi-value:hover { + background: #FFF4BE; +} + +div.cbi-value:last-child { + border: none; +} + +.cbi-value-title { + float: left; + width: 40%; +} + +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; + color: #ffffff; + background-color: #FFCB05; +} + +option:active, +option:before, +option:after, +option:focus, +option:hover { + color: #ffffff; + background-color: #EEBA00; + background: url(images/bgoption.png); +} + +div.cbi-section-create { + clear: left; + white-space: nowrap; +} + +div.cbi-map-descr { + margin-bottom: 1em; +} + +div.cbi-optionals { + margin: 0.5em 0; + padding: 0 0.25em; +} + +div.cbi-section-remove { + float: right; +} + +.cbi-section-node { + clear: both; + border: 1px dotted #FFCB05; + padding-bottom: 0; +} + +.cbi-section-node div.cbi-section-table-row { + margin: 0.25em; +} + +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; +} + +.cbi-value-helpicon img { + vertical-align: bottom; +} + +div.cbi-error { + font-size: 95%; + font-weight: bold; + color: #FF0000; +} + +td.cbi-value-error { + border-color: red !important; +} + +.cbi-value-error input, +.cbi-value-error select { + color: red !important; + background-color: #FFCCCC; +} + +.cbi-section-error { + color: red; + font-size: 95%; + border: 1px dotted red; + margin: 3px; + padding: 3px; +} + +ul.cbi-apply { + font-size: 90%; +} + +.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; +} + +.error500 { + white-space: normal; + border: 1px dotted #FF0000; + background-color: #FFFFFF; + padding: 0.5em; +} + +#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/freifunk/htdocs/luci-static/freifunk/images/bgoption.png b/themes/freifunk/htdocs/luci-static/freifunk/images/bgoption.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd1e2f34787b200eb425e42fb98c75b039163e2 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}K#X;^)4C~IxyaaOClDyqr82*Fc zg1yTp14TFsJR*yMv=#_6DqH@!17xt5c>21s-{2Gz=HriQFMb9T;`MZK4B@z*T(N!D bLwg3cy-YKE&k4N(N-%i3`njxgN@xNAizFlF literal 0 HcmV?d00001 diff --git a/themes/freifunk/htdocs/luci-static/freifunk/images/favicon.ico b/themes/freifunk/htdocs/luci-static/freifunk/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f785830ff77a700ac1dbf153a11f638f32481171 GIT binary patch literal 4286 zcmeI0d2Ccw6o=0U6l@SdA_`?0cBpnGExS`F`x<0Xs31~6N;@qeDp9Z{7SM>4 z9ykpb;V(D@AAlF`g>bz{<3wa$fYH#rmi%43_l4(RXz-i-{s2xbDtWK2HFuKtC7^gC z`R>kqKD5s1V#p8qP^Pc4t;x zX$H^7&so9|#}a>bEY9cHsKN`D7gG|7vkP+N zApNzl5LUngl9@5^WFY3$9aZ(9L9ef`MUPlJQg&7=-qGk)fCC4hBUs`g#|FMrVcFeFqrDw{i_q%` zIuEk-IPrTk2b{E&UDfsRITW46ARDI=4>|+Jd(T>4>k{>VP|U3vPouWRlD8hC3(8%I zzc}NNFAwTTcNc7e4|^0lo7vMg6SJ@rQ!)zOUJ$C`4cJ&PeOOr(a*dOVo#W_~K_xio zt;N3lzZ&$vfoB}_r`D#=jXTz+_g7W*lYVk`Nd8779CngMynNB}+W77#?s4dk2-@3+ z9rd-O^mSJZxn|gy02kTA&&g}k%(Rm_hns`)`8;*T2V!R?`L91@&1GZ#vFIEL^S_Pp zBFKlu)J2QoD=%7ZTVFJK+P^+f1?rbE)W*}ZQ;*-#@3TsaKjI`)JHz9Db)rTtqyAe5 z>i=Wpl>hmV2CJdZJkHF7?6dN3Sx|g{>JEO{p#gf|0$?BW1Y#T+n0@8%dGg)K;QGW5BS#iLXiJrcm>q60ycHF`h8ld zvllqG_`Lp9Tq!%NEYrgta>me6-x~vCLH71Q$iJSw*`I~PFqyj0KF5RVbrned4{(F} ziE^o&+7m;|tnb#!z*&<|!PyC*{R!@&>`#OwSOc=R9>V==datK?JP)$5-DtxIc`?}N|?Zsf1_d`o1HgLFTFHt;Oy zuC0;97yEXd;Cx%2TDNL$GE{?XOoiG$ZuPEwscxme5p=g^z#Q;^eCcjbtO=lRx@Wq9 z{Dtmd^)VOR%3q}K3(%8)aR5{c>glSJX`u5t9aQ7$mEv6p>3qRB8Y0=g-8tp)Oqfmm z9kvXnfa>yL$OY}wB?$Rm$5=h!cKzH;PG@2ZsE38@-{@J4jB;}`d;j%YEOwW`m+%{0 z0QI%+;dK}aQ4rC7q`%4Q=IS!=e`Ua__2X}1p6?3n?p1zk*zUa5^Z3o>DVp!fFY*`7 zFW6p`R=|HIfV-f;-E8T0|JzIb{@pJ+e!t7{pLaP${1!Mx`MjCSLEovchR!u>=Q!r6 IZN1 zCku-R!+!=HkPOHS1{R$OCp=g0wRnAY_x}WqzLd;)8LQUic&i!oocWx1+ijk>jr||{ P#sCQoF-DIR76xkomfbH1 literal 0 HcmV?d00001 diff --git a/themes/freifunk/htdocs/luci-static/freifunk/images/header-left.gif b/themes/freifunk/htdocs/luci-static/freifunk/images/header-left.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3258ccb6d2f6809c591cdcf5694b6d9557c0feb GIT binary patch literal 293 zcmZ?wbhEHbWMxQUxXQrr|Ns9#fByXb{rlIiUq65T{Qmv>=g*%%eE9JG{rh+C-o1JA z=EaK_PoF-0`0(M~yLWHiym{lsjk9OZ{y)QT^ytweM~)mgaA51!ty{KiS+Qcp!i5Vb zO`0@u;>7m$_J)Rr($dnBl9G&!3P#h)xJA`Jf-bU>DX{KUZKkR+M{QLX+`uh6$`T6(v_x1Jl^z`)e^YifV z@b2#J?Ck96>FMa`=;h_*$$O;Js L%*+7K&p`k?3O3Jl literal 0 HcmV?d00001 diff --git a/themes/freifunk/htdocs/luci-static/freifunk/images/logo.png b/themes/freifunk/htdocs/luci-static/freifunk/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0beeb2fad1c99c2477c00b5ab5214f9a82769797 GIT binary patch literal 6400 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 Z`v1Ohi~S#mD^>si002ovPDHLkV1fesfFl3^ literal 0 HcmV?d00001 diff --git a/themes/freifunk/ipkg/postinst b/themes/freifunk/ipkg/postinst new file mode 100755 index 000000000..5972881a8 --- /dev/null +++ b/themes/freifunk/ipkg/postinst @@ -0,0 +1,4 @@ +#!/bin/sh +[ -n "${IPKG_INSTROOT}" ] || { + ( . /etc/uci-defaults/luci-theme-freifunk-bno ) && rm -f /etc/uci-defaults/luci-theme-freifunk-bno +} diff --git a/themes/freifunk/luasrc/view/themes/freifunk/footer.htm b/themes/freifunk/luasrc/view/themes/freifunk/footer.htm new file mode 100644 index 000000000..cf0a25352 --- /dev/null +++ b/themes/freifunk/luasrc/view/themes/freifunk/footer.htm @@ -0,0 +1,29 @@ +<%# +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/freifunk/luasrc/view/themes/freifunk/header.htm b/themes/freifunk/luasrc/view/themes/freifunk/header.htm new file mode 100644 index 000000000..a0f7c6339 --- /dev/null +++ b/themes/freifunk/luasrc/view/themes/freifunk/header.htm @@ -0,0 +1,196 @@ +<%# +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 %> + + + + <%=striptags( 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 and not node.hidden 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").cursor():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/freifunk/root/etc/uci-defaults/luci-theme-freifunk b/themes/freifunk/root/etc/uci-defaults/luci-theme-freifunk new file mode 100755 index 000000000..eb038f0ac --- /dev/null +++ b/themes/freifunk/root/etc/uci-defaults/luci-theme-freifunk @@ -0,0 +1,6 @@ +#!/bin/sh +uci batch <<-EOF + set luci.themes.Freifunk=/luci-static/freifunk + commit luci +EOF + -- 2.25.1