OpenWrt.org Oxygen theme, first steps

This commit is contained in:
Steven Barth 2008-12-06 14:31:30 +00:00
parent cbdc5af52e
commit a2d1ca7af0
35 changed files with 1309 additions and 0 deletions

View file

@ -0,0 +1,2 @@
include ../../build/config.mk
include ../../build/module.mk

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -0,0 +1,803 @@
@charset "utf-8";
@media all {
html,
body {
background-color: #4a6b7c;
background-image: url(bg.jpg);
background-position: bottom center;
background-attachment: fixed;
background-repeat: repeat-x;
color: #ffffff;
}
body {
font-family: Verdana, Arial, sans-serif;
font-size: 101%;
line-height: 100%;
}
* {
margin: 0;
padding: 0;
}
abbr,
acronym {
font-style: normal;
font-variant: normal;
}
abbr[title],
acronym[title] {
border-bottom: 1px dotted;
cursor: help;
}
a:link abbr[title],
a:visited abbr[title],
a:link acronym[title],
a:visited acronym[title] {
cursor: pointer;
}
code {
font-family: monospace;
white-space: pre;
}
#maincontent ul {
margin-left: 2em;
}
.warning {
color: red;
background-color: white;
font-weight: bold;
}
.clear {
clear: both;
}
.skiplink,
.navigation,
.hidden {
position: absolute;
left: -1000px;
top: -1000px;
width: 0px;
height: 0px;
overflow: hidden;
display: inline;
}
.error {
color: #ff0000;
background-color: white;
}
#header {
min-height: 98px;
background-image: url(header.png);
background-repeat: no-repeat;
background-position: left center;
background-color: #557788;
color: #ffffff;
text-align: right;
}
#header h1 {
padding: 1em 1em 0 1em;
}
#header p {
padding: 0 1em 1em 1em;
}
#header h1,
#header p {
font-size: 70%;
font-weight: normal;
line-height: 160%;
text-align: right;
}
ul.dropdowns {
float: left;
margin: 0;
padding: 0;
width: auto;
list-style: none;
}
html>body ul.dropdowns {
position: relative;
}
ul.dropdowns li,
ul.dropdowns ul {
margin: 0;
padding: 0;
list-style: none;
}
ul.dropdowns li {
float: left;
position: relative;
white-space: nowrap;
}
ul.dropdowns li ul {
position: absolute;
z-index: 1000;
top: auto;
min-width: 10em;
}
ul.dropdowns li li {
float: none;
position: relative;
}
ul.dropdowns li a {
display: block;
}
ul.dropdowns ul li ul {
top: 0;
}
ul.dropdowns li ul,
ul.dropdowns li.over ul ul,
ul.dropdowns li.focus ul ul,
ul.dropdowns li:hover ul ul,
ul.dropdowns li.over ul ul ul,
ul.dropdowns li.focus ul ul ul,
ul.dropdowns li:hover ul ul ul,
ul.dropdowns li.over ul ul ul ul,
ul.dropdowns li.focus ul ul ul ul,
ul.dropdowns li:hover ul ul ul ul {
left: -3000px;
}
ul.dropdowns li.over ul,
ul.dropdowns li.focus ul,
ul.dropdowns li:hover ul {
left: 0;
}
ul.dropdowns ul li.over ul,
ul.dropdowns ul li.focus ul,
ul.dropdowns ul li:hover ul,
ul.dropdowns ul ul li.over ul,
ul.dropdowns ul ul li.focus ul,
ul.dropdowns ul ul li:hover ul,
ul.dropdowns ul ul ul li.over ul,
ul.dropdowns ul ul ul li.focus ul,
ul.dropdowns ul ul ul li:hover ul {
left: 100%;
}
#menubar {
position: relative;
width: 100%;
background: #000000;
color: #ffffff;
}
#menubar .warning {
color: red;
background-color: #557788;
}
#menubar ul.dropdowns {
min-height: 1.8em;
background: #000000;
color: #ffffff;
}
#menubar ul.dropdowns li ul {
background: #000000;
color: #ffffff;
border-width: 0 1px 1px 1px;
border-style: solid;
border-color: #444444;
}
#menubar ul.dropdowns ul li ul {
border-width: 1px;
}
html #menubar a:link,
html #menubar a:visited {
position: relative;
display: block;
padding: 0.5em;
background: #000000;
color: #ffffff;
text-decoration: none;
font-size: 80%;
font-weight: normal;
}
html #menubar a:link:hover,
html #menubar a:visited:hover,
html #menubar a:link:active,
html #menubar a:visited:active,
#menubar a:link:focus,
#menubar a:visited:focus {
background: #000000;
color: #ffff00;
font-weight: bold;
}
html #menubar a:link.active,
html #menubar a:visited.active,
html #menubar a:link.preactive,
html #menubar a:visited.preactive {
background: #000000;
color: #ffff00;
font-weight: bold;
}
html #menubar a:link.warning,
html #menubar a:visited.warning {
background: #000000;
color: red;
font-weight: bold;
}
#menubar ul.dropdowns li.over>a,
#menubar ul.dropdowns li.focus>a,
#menubar ul.dropdowns li:hover>a {
font-weight: bold;
}
.lang_de #submenu_mini_system { min-width: 13.3em; }
* html .lang_de #submenu_mini_system { width: 13.3em; }
.lang_pt-br #submenu_mini_network { min-width: 14em; }
* html .lang_pt-br #submenu_mini_network { width: 14em; }
.lang_pt-br #submenu_mini_system { min-width: 11.5em; }
* html .lang_pt-br #submenu_mini_system { width: 11.5em; }
.lang_ru #submenu_mini_system { min-width: 18em; }
* html .lang_ru #submenu_mini_system { width: 18em; }
.lang_pt-br #submenu_admin_index { min-width: 11em; }
* html .lang_pt-br #submenu_admin_index { width: 11em; }
.lang_ru #submenu_admin_index { min-width: 15.5em; }
* html .lang_ru #submenu_admin_index { width: 15.5em; }
.lang_ru #submenu_admin_status { min-width: 10.5em; }
* html .lang_ru #submenu_admin_status { width: 10.5em; }
.lang_de #submenu_admin_system { min-width: 13.3em; }
* html .lang_de #submenu_admin_system { width: 13.3em; }
.lang_fr #submenu_admin_system { min-width: 14.5em; }
* html .lang_fr #submenu_admin_system { width: 14.5em; }
.lang_pt-br #submenu_admin_system { min-width: 11.5em; }
* html .lang_pt-br #submenu_admin_system { width: 11.5em; }
.lang_ru #submenu_admin_system { min-width: 18em; }
* html .lang_ru #submenu_admin_system { width: 18em; }
#submenu_admin_services_chillispot { min-width: 15.5em; }
* html #submenu_admin_services_chillispot { width: 15.5em; }
#submenu_admin_services_coovachilli { min-width: 15em; }
* html #submenu_admin_services_coovachilli { width: 15em; }
.lang_ru #submenu_admin_network_routes { min-width: 15.3em; }
* html .lang_ru #submenu_admin_network_routes { width: 15.3em; }
#submenu_admin_network_firewall { min-width: 14em; }
* html #submenu_admin_network_firewall { width: 14em; }
.lang_de #submenu_admin_network_firewall { min-width: 16.5em; }
* html .lang_de #submenu_admin_network_firewall { width: 16.5em; }
.lang_pt-br #submenu_admin_network_firewall { min-width: 15em; }
* html .lang_pt-br #submenu_admin_network_firewall { width: 15em; }
#modemenu {
width: auto;
background: #000000;
color: #ffffff;
list-style: none;
margin-right: 1px;
}
#modemenu li {
float: right;
list-style: none;
}
#savemenu {
float: right;
margin-right: 2em;
}
.lang_de #submenu_admin_uci {
width: 12em;
}
.lang_ru #submenu_admin_uci {
width: 11.5em;
}
textarea#syslog {
width: 98%;
min-height: 500px;
border: 3px solid #cccccc;
padding: 5px;
font-family: monospace;
}
#maincontent {
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%;
}
#maincontent h2 {
font-size: 150%;
font-family: Trebuchet MS, Verdana, sans-serif;
font-weight: bold;
margin: 0.25em 0 0.7em 0;
border-bottom: 1px solid;
padding-top: 10px;
padding-bottom: 4px;
}
#maincontent h3 {
margin: 0.5em 0 1.1em 0;
font-size: 125%;
font-weight: bold;
font-style: italic;
font-family: Trebuchet MS, Verdana, sans-serif;
color: #27408B;
}
#maincontent p {
margin-bottom: 1em;
}
.cbi-section {
margin-bottom: 0.5em;
padding: 0.5em 1em;
border: 1px dotted #555555;
background-color: #ffffff;
color: #000000;
}
.cbi-section legend {
font-size: 110%;
font-weight: bold;
height: 1em;
padding: 0 0.25em;
background-color: transparent;
color: #555555;
}
.cbi-section h2 {
margin: 0em 0 0.5em -0.5em !important;
}
.cbi-section h3 {
text-decoration: none !important;
font-weight: bold !important;
color: #555555 !important;
margin: 0.25em !important;
font-size: 100% !important;
}
.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;
}
ul.cbi-apply {
font-size: 90%;
}
input[type=submit],
input[type=reset],
input[type=image] {
cursor: pointer;
}
select,
input,
textarea {
background: #eeeeee;
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: #ffffff;
color: #000000;
}
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;
color: #000000;
text-indent: 17px;
}
input.cbi-input-password {
background: url('../resources/cbi/key.gif') no-repeat scroll 1px center;
background-color: inherit;
color: #000000;
text-indent: 17px;
}
input.cbi-input-find {
background: url('../resources/cbi/find.gif') no-repeat scroll 1px center;
background-color: inherit;
color: #000000;
padding-left: 17px;
}
input.cbi-input-reload {
background: url('../resources/cbi/reload.gif') no-repeat scroll 1px center;
background-color: inherit;
color: #000000;
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;
color: #000000;
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;
color: #000000;
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;
color: #000000;
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;
color: #000000;
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;
color: #000000;
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;
color: #000000;
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 td,
table th {
color: #000000;
}
table.smalltext {
background: #f5f5f5;
color: #000000;
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;
color: #000000;
}
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;
}
table.cbi-section-table .cbi-rowstyle-1,
table.cbi-section-table .cbi-rowstyle-1 * {
background-color: #eeeeff;
color: #000000;
}
.cbi-section .cbi-rowstyle-1 h3 {
background-color: #eeeeff;
color: #555555;
}
.cbi-rowstyle-2 {
color: #000000;
}
div.cbi-value {
clear: left;
vertical-align: middle;
padding-left: 0.25em;
border-bottom: 1px dotted #bbbbbb;
}
div.cbi-value:hover {
background: #f8f8f8;
color: #000000;
}
.cbi-value-title {
float: left;
width: 40%;
line-height: 1.8em;
}
div.cbi-value-field {
width: 58%;
margin-left: 40%;
padding: 0.25em 0;
}
div.cbi-value-description {
font-size: 90%;
display: inline;
}
div.cbi-section-create {
clear: left;
white-space: nowrap;
vertical-align: top;
}
div.cbi-tblsection-create {
border-bottom: 1px dotted #bbbbbb;
}
div.cbi-section-create .cbi-button {
margin: 0.25em;
}
input.cbi-section-create-name {
margin-right: -0.25em;
}
div.cbi-map-descr {
margin-bottom: 1em;
}
div.cbi-optionals {
padding: 0.25em;
border-bottom: 1px dotted #bbbbbb;
}
div.cbi-section-remove {
float: right;
}
.cbi-section-node {
clear: both;
border-top: 1px dotted #bbbbbb;
border-left: 1px dotted #bbbbbb;
border-right: 1px dotted #bbbbbb;
border-bottom: none;
padding-bottom: 0;
}
.cbi-section-node table div {
padding-bottom: 0;
border-bottom: none;
}
.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;
background-color: #ffffff;
}
td.cbi-value-error {
border-color: red;
}
.cbi-value-error input,
.cbi-value-error select {
color: red;
background-color: #ffcccc;
}
.cbi-section-error {
color: red;
background-color: white;
font-size: 95%;
border: 1px dotted red;
margin: 3px;
padding: 3px;
}
.right {
text-align: right;
}
.luci {
position: fixed;
bottom: 0;
left: 0;
text-align: right;
}
.luci a:link,
.luci a:visited {
background-color: transparent;
color: #666666;
text-decoration: none;
font-size: 70%;
}
.inline {
display: inline;
}
.error500 {
white-space: normal;
border: 1px dotted #ff0000;
background-color: #ffffff;
color: #000000;
padding: 0.5em;
}
#memorybar {
width: 200px;
height: 8px;
border: 1px solid #bbb;
color: black;
background-color: red;
}
#memfree, #membuffers, #memcached {
float: right;
border: 1px solid #bbb;
height: 6px;
}
#memfree {
background-color: green;
color: black;
}
#membuffers {
background-color: yellow;
color: black;
}
#memcached {
background-color: #ffa500;
color: black;
}
}

View file

@ -0,0 +1,99 @@
@charset "utf-8";
@media all {
div.dashicon {
float: left;
}
div.dashicon a {
background-image: url(icons/default.png);
background-repeat: no-repeat;
background-position: top;
display: block;
width: 70px;
padding-top: 70px;
color: #000000;
text-decoration: none;
text-align: center;
margin: 2em;
font-weight: bold;
}
div.di_network a {
background-image: url(icons/network.png);
}
div.di_luci a {
background-image: url(icons/desktop.png);
}
div.di_index a {
background-image: url(icons/overview.png);
}
div.di_logout a {
background-image: url(icons/logout.png);
}
div.di_freifunk a {
background-image: url(icons/freifunk.png);
}
div.di_status a {
background-image: url(icons/status.png);
}
div.di_system a {
background-image: url(icons/system.png);
}
div.di_syslog a {
background-image: url(icons/shell.png);
}
div.di_ntpc a {
background-image: url(icons/datetime.png);
}
div.di_leds a {
background-image: url(icons/lightbulb.png);
}
div.di_reboot a {
background-image: url(icons/restart.png);
}
div.di_passwd a {
background-image: url(icons/login.png);
}
div.di_statistics a {
background-image: url(icons/stats.png);
}
div.di_packages a {
background-image: url(icons/package.png);
}
div.di_sshkeys a {
background-image: url(icons/key.png);
}
div.di_upgrade a {
background-image: url(icons/flash.png);
}
div.di_services a {
background-image: url(icons/worker.png);
}
div.di_backup a {
background-image: url(icons/switch.png);
}
div.di_fstab a {
background-image: url(icons/harddisk.png);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -0,0 +1,48 @@
The Oxygen Icon Theme
Copyright (C) 2007 David Vignoni <david@icon-king.com>
Copyright (C) 2007 Johann Ollivier Lapeyre <johann@oxygen-icons.org>
Copyright (C) 2007 Kenneth Wimer <kwwii@bootsplash.org>
Copyright (C) 2007 Nuno Fernades Pinheiro <nf.pinheiro@gmail.com>
Copyright (C) 2007 Riccardo Iaconelli <riccardo@oxygen-icons.org>
Copyright (C) 2007 David Miller <miller@oxygen-icons.org>
and others
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
Clarification:
The GNU Lesser General Public License or LGPL is written for
software libraries in the first place. We expressly want the LGPL to
be valid for this artwork library too.
KDE Oxygen theme icons is a special kind of software library, it is an
artwork library, it's elements can be used in a Graphical User Interface, or
GUI.
Source code, for this library means:
- where they exist, SVG;
- otherwise, if applicable, the multi-layered formats xcf or psd, or
otherwise png.
The LGPL in some sections obliges you to make the files carry
notices. With images this is in some cases impossible or hardly useful.
With this library a notice is placed at a prominent place in the directory
containing the elements. You may follow this practice.
The exception in section 5 of the GNU Lesser General Public License covers
the use of elements of this art library in a GUI.
kde-artists [at] kde.org

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View file

@ -0,0 +1,77 @@
/* 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 ul.dropdowns li ul {
width: 10em;
}
* html ul.dropdowns li li {
clear: both;
float: left;
}
* html ul.dropdowns li li {
width: 100%;
}
* html ul.dropdowns li li a {
height: 1%;
}
* html div#maincontent {
margin-left: -80% !important;
width: 160% !important;
}
* html div.cbi-value-description {
width: auto !important;
}
* html div.cbi-value-field {
margin-left: 0 !important;
width: 100% !important;
}
* html .cbi-input-text,
* html .cbi-input-user,
* html .cbi-input-select,
* html .cbi-input-password {
width: 50% !important;
}
* html .cbi-input-user,
* html .cbi-input-password {
text-indent: 0 !important;
padding-left: 1.5em !important;
}
* html .cbi-section legend {
background-color: #ffffff;
color: #555555;
}
* html table.cbi-section-table td .cbi-input-text,
* html table.cbi-section-table td .cbi-input-select {
width: 100% !important;
}
* html div.cbi-page-actions {
text-align: right !important;
}
* html div.cbi-value-field input,
* html div.cbi-value-field select {
font-size: 90% !important;
}

View file

@ -0,0 +1,20 @@
div.cbi-value-field {
margin-left: 0 !important;
}
.cbi-section legend {
background-color: #ffffff;
color: #555555;
}
table.cbi-section-table td .cbi-input-text,
table.cbi-section-table td .cbi-input-select {
width: 95% !important;
}
.cbi-input-user,
.cbi-input-password {
text-indent: 0 !important;
padding-left: 1.5em !important;
width: 18.5em !important;
}

View file

@ -0,0 +1,4 @@
#!/bin/sh
[ -n "${IPKG_INSTROOT}" ] || {
( . /etc/uci-defaults/luci-theme-openwrt-oxygen ) && rm -f /etc/uci-defaults/luci-theme-openwrt-oxygen
}

View file

@ -0,0 +1,46 @@
<%#
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
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$
-%>
<%
local node = luci.dispatcher.context.requested
if node.nodes then
%>
<div class="dashboard">
<%-
for k, v in luci.util.spairs(node.nodes, function (a,b)
return (node.nodes[a].order or 100) < (node.nodes[b].order or 100)
end) do
if v.title and #v.title > 0 and not v.ignoreindex and (v.index or v.target) then
local csscl = "dashicon di_%s" % (v.style or k)
local iconl = v.icon
local pref = luci.util.clone(luci.dispatcher.context.request)
pref[#pref+1] = k
local target = luci.dispatcher.build_url(unpack(pref))
%>
<div class="<%=csscl%>">
<a href="<%=target%>" <%-
if iconl then
%> style="background-image: url(<%=resource%>/<%=iconl%>)"<%-
end
-%>><%=v.title%></a>
</div>
<%
end
end
-%>
</div>
<div class="clear"></div>
<%
end
%>

View file

@ -0,0 +1,21 @@
<%#
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
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$
-%>
<div class="clear"></div>
</div>
<p class="luci"><a href="<%=controller%>/about">Powered by <%= luci.__appname__ .. " " .. luci.__version__%></a></p>
</body>
</html>

View file

@ -0,0 +1,166 @@
<%#
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
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 disp = node
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("application/xhtml+xml")
-%>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=luci.i18n.context.lang%>" lang="<%=luci.i18n.context.lang%>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/dashboard.css" />
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie6.css" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]-->
<% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
<% end -%>
<script type="text/javascript" src="<%=resource%>/VarType.js"></script>
<script type="text/javascript" src="<%=resource%>/XHTML1.js"></script>
<script type="text/javascript" src="<%=resource%>/Dropdowns.js"></script>
<title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. node.title or '')) %> - LuCI</title>
</head>
<body class="lang_<%=luci.i18n.context.lang%>">
<p class="skiplink">
<span id="skiplink1"><a href="#navigation"><%:skiplink1 Skip to navigation%></a></span>
<span id="skiplink2"><a href="#content"><%:skiplink2 Skip to content%></a></span>
</p>
<div id="header">
<h1><%=luci.config.brand.firmware%></h1>
<p>
<%=luci.config.brand.distro%><br />
<%:load%>: <%=load1%> <%=load5%> <%=load15%><br />
<%:hostname%>: <%=hostname%>
</p>
</div>
<div id="menubar">
<h2 class="navigation"><a id="navigation" name="navigation"><%:navigation Navigation%></a></h2>
<ul id="mainmenu" class="dropdowns">
<%-
local function submenu(prefix, node)
if not node.nodes or node.hidden then
return false
end
local index = {}
local count = 0
for k, n in pairs(node.nodes) do
if n.title and n.target then
table.insert(index, {name=k, order=n.order or 100})
count = count + 1
end
end
table.sort(index, function(a, b) return a.order < b.order end)
if count > 0 then
%>
<ul id="submenu_<%=string.gsub(string.gsub(prefix, "/", "_"), "^_(.-)_$", "%1")%>">
<%-
for j, v in pairs(index) do
if #v.name > 0 then
local nnode = node.nodes[v.name]
local href = controller .. prefix .. v.name .. "/"
href = (nnode.query) and href .. luci.http.build_querystring(nnode.query) or href
%>
<li><a<% if nnode._menu_selected then %> class="active"<%end%> href="<%=luci.util.pcdata(href)%>"><%=nnode.title%></a><%-
submenu(prefix .. v.name .. "/", nnode)
%></li>
<%-
end
end
%>
</ul>
<%
end
end
if cattree and cattree.nodes then
local index = {}
for k, node in pairs(cattree.nodes) do
table.insert(index, {name=k, order=node.order or 100})
end
table.sort(index, function(a, b) return a.order < b.order end)
for i, k in ipairs(index) do
node = cattree.nodes[k.name]
if node.title and node.target and not node.hidden then
local href = controller.."/"..category.."/"..k.name.."/"
href = (k.query) and href .. luci.http.build_querystring(k.query) or href
%>
<li><a<% if node._menu_selected then %> class="preactive"<%end%> href="<%=href%>"><%=node.title%></a><%
submenu("/" .. category .. "/" .. k.name .. "/", node)
%></li><% end
end
end
%>
</ul>
<ul id="modemenu"><%
for k,node in pairs(tree.nodes) do
if node.title and not node.hidden then %>
<li><a<% if request[1] == k then %> class="active"<%end%> href="<%=controller%>/<%=k%>/"><%=node.title%></a></li><%
end
end
%>
</ul>
<%
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
-%>
<ul id="savemenu" class="dropdowns">
<li><% if ucic > 0 then %><a class="warning" href="<%=controller%>/<%=category%>/uci/changes/"><%:unsavedchanges%>: <%=ucic%></a><%
submenu("/" .. category .. "/uci/", tree.nodes[category].nodes["uci"])
else -%>
<a href="#"><%:changes%>: 0</a><% end -%>
</li>
</ul><% end %>
<div class="clear"></div>
</div>
<div id="maincontent">
<% if disp and disp.subindex then %><%+themes/openwrt.org-oxygen/dashboard%><% end %>

View file

@ -0,0 +1,17 @@
<%#
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
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$
-%>
<%+header%>
<%+themes/openwrt.org-oxygen/dashboard%>
<%+footer%>

View file

@ -0,0 +1,6 @@
#!/bin/sh
uci batch <<-EOF
set luci.themes.OpenWrtOxygen=/luci-static/openwrt.org-oxygen
commit luci
EOF