summaryrefslogtreecommitdiffhomepage
path: root/themes/luci-theme-openwrt
diff options
context:
space:
mode:
Diffstat (limited to 'themes/luci-theme-openwrt')
-rw-r--r--themes/luci-theme-openwrt/Makefile14
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css1034
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css77
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css59
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css12
-rw-r--r--themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.pngbin0 -> 152 bytes
-rwxr-xr-xthemes/luci-theme-openwrt/ipkg/postinst4
-rw-r--r--themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm21
-rw-r--r--themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm186
-rwxr-xr-xthemes/luci-theme-openwrt/root/etc/uci-defaults/luci-theme-openwrt6
10 files changed, 1413 insertions, 0 deletions
diff --git a/themes/luci-theme-openwrt/Makefile b/themes/luci-theme-openwrt/Makefile
new file mode 100644
index 0000000000..b873d80727
--- /dev/null
+++ b/themes/luci-theme-openwrt/Makefile
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI OpenWrt.org theme
+LUCI_DEPENDS:=
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
new file mode 100644
index 0000000000..4a6877fa98
--- /dev/null
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/cascade.css
@@ -0,0 +1,1034 @@
+@charset "utf-8";
+
+.lang_he {
+ direction: RTL;
+ unicode-bidi: embed;
+}
+
+@media all {
+
+html {
+ min-height: 100%;
+ height: auto;
+ position:relative;
+}
+
+body {
+ color: #ffffff;
+ background-color: #4a6b7c;
+ background-position: bottom center;
+ background-repeat: repeat-x;
+ font-family: Verdana, Arial, sans-serif;
+ font-size: 11pt;
+ line-height: 100%;
+ padding-bottom: 1.5em;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+}
+
+a img {
+ border: none;
+ text-decoration: none;
+}
+
+ul.tabmenu {
+ margin: 0;
+ clear: both;
+ display: block;
+ vertical-align: bottom;
+ font-size: 10pt;
+ padding: 5px 0 0 5px;
+}
+
+div.tabmenu2 {
+ background-color: #AAAAAA;
+ background-image: url(tabbg.png);
+ background-repeat: repeat-x;
+ margin-top: -1px;
+ border: 1px solid #444444;
+ border-bottom: none;
+}
+
+div.tabmenu3,
+div.tabmenu4,
+div.tabmenu5 {
+ background-color: #AAAAAA;
+ background-image: url(tabbg.png);
+ background-repeat: repeat-x;
+ border: none;
+}
+
+ul.tabmenu li {
+ float: left;
+ display: block;
+ overflow: hidden;
+}
+
+.lang_he ul.tabmenu li {
+ float: right;
+}
+
+ul.tabmenu li a {
+ text-decoration: none;
+ color: #444444;
+ display: block;
+ padding: 3px 8px;
+ margin: 0 2px;
+ line-height: 1.3em;
+ border: 1px solid transparent;
+ border-bottom: none;
+ font-size: 85%;
+}
+
+ul.tabmenu li.active a {
+ font-weight: bold;
+ color: #000000;
+ background: #f5f5f5;
+ border: 1px solid #AAAAAA;
+ border-bottom: none;
+}
+
+ul.tabmenu li a:hover {
+ color: #444444;
+ border-color: #444444;
+}
+
+ul.l1 li a {
+ background-color: #AAAAAA;
+ background-image: url(tabbg.png);
+ background-repeat: repeat-x;
+ border-color: #444444;
+}
+
+ul.l1 li.tabmenu-item-logout a {
+ margin-left: 30px;
+}
+
+.lang_he ul.l1 li.tabmenu-item-logout a {
+ margin-right: 30px;
+}
+
+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;
+}
+
+div.hostinfo {
+ float: left;
+ margin: 0;
+ padding: 0;
+ width: auto;
+ font-size: 80%;
+ padding: 0.5em;
+}
+
+.lang_he div.hostinfo {
+ float: right;
+}
+
+#xhr_poll_status {
+ cursor: pointer;
+}
+
+#xhr_poll_status #xhr_poll_status_off {
+ font-weight: bold;
+ color: #FF0000;
+}
+
+#xhr_poll_status #xhr_poll_status_on {
+ font-weight: bold;
+ color: #00FF00;
+}
+
+#menubar {
+ position: relative;
+ width: 100%;
+ background: #000000;
+ color: #ffffff;
+}
+
+#menubar .warning {
+ color: red;
+ background-color: #557788;
+}
+
+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;
+}
+
+#modemenu {
+ width: auto;
+ background: #000000;
+ color: #ffffff;
+ list-style: none;
+ margin-right: 1px;
+ margin-left: 2em;
+ float: right;
+}
+
+#modemenu li {
+ float: right;
+ list-style: none;
+}
+
+#savemenu {
+ float: right;
+}
+
+.lang_he #savemenu {
+ float: left;
+}
+
+.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;
+}
+
+#maincontainer {
+ clear: both;
+ width: 96%;
+ margin: 0 auto;
+ height:100%;
+}
+
+#maincontent {
+ padding: 0.5em;
+ background: #f5f5f5;
+ color: #000000;
+ font-size: 80%;
+ border-width: 0 1px 1px 1px;
+ border-style: solid;
+ border-color: #444444;
+}
+
+.lang_he #maincontent {
+ direction: rtl;
+}
+
+#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:-webkit-input-placeholder {
+ color: #AAAAAA;
+}
+
+input:-moz-placeholder {
+ color: #AAAAAA;
+}
+
+input:-ms-input-placeholder {
+ color: #AAAAAA;
+}
+
+input[type=submit],
+input[type=reset],
+input[type=image],
+input[type=button] {
+ 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 {
+ 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%;
+}
+
+img.cbi-image-button {
+ cursor: pointer;
+ margin: 0 2px;
+ vertical-align: middle;
+}
+
+input.cbi-button {
+ background-color: #EEEEEE;
+ background-repeat: no-repeat;
+ background-position: 1px center;
+ border: 1px solid #CCCCCC;
+ border-radius: 3px;
+}
+
+input.cbi-button:hover {
+ border-color: #4A6B7C;
+ background-color: #FFFFFF;
+}
+
+input.cbi-button[disabled] {
+ color: #CCCCCC;
+ border-color: #CCCCCC;
+ background-color: #EEEEEE;
+ cursor: default;
+}
+
+input.cbi-input-user {
+ background-image: url('../resources/cbi/user.gif');
+ background-repeat: no-repeat;
+ background-position: 1px center;
+ color: #000000;
+ text-indent: 17px;
+}
+
+input.cbi-input-password {
+ background-image: url('../resources/cbi/key.gif');
+ background-repeat: no-repeat;
+ background-position: 1px center;
+ color: #000000;
+ text-indent: 17px;
+}
+
+input.cbi-input-find,
+input.cbi-button-find {
+ background-image: url('../resources/cbi/find.gif');
+ color: #000000;
+ padding-left: 17px;
+}
+
+input.cbi-input-reload {
+ background-image: url('../resources/cbi/reload.gif');
+ color: #000000;
+ padding-left: 17px;
+}
+
+input.cbi-input-add,
+input.cbi-button-add {
+ background-image: url('../resources/cbi/add.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-fieldadd,
+input.cbi-button-fieldadd {
+ background-image: url(../resources/cbi/fieldadd.gif);
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-reset,
+input.cbi-button-reset {
+ background-image: url('../resources/cbi/reset.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-save,
+input.cbi-button-save {
+ background-image: url('../resources/cbi/save.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-apply,
+input.cbi-button-apply {
+ background-image: url('../resources/cbi/apply.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-link,
+input.cbi-button-link {
+ background-image: url('../resources/cbi/link.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-download,
+input.cbi-button-download {
+ background-image: url('../resources/cbi/download.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-input-remove,
+div.cbi-section-remove input {
+ background-image: url('../resources/cbi/remove.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-button-up {
+ background-image: url('../resources/cbi/up.gif');
+ padding-left: 11px;
+ padding-right: 1px;
+}
+
+input.cbi-button-down {
+ background-image: url('../resources/cbi/down.gif');
+ padding-left: 11px;
+ padding-right: 1px;
+}
+
+input.cbi-button-edit {
+ background-image: url('../resources/cbi/edit.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-button-reload {
+ background-image: url('../resources/cbi/reload.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-button-reset {
+ background-image: url('../resources/cbi/reset.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+input.cbi-button-remove {
+ background-image: url('../resources/cbi/remove.gif');
+ color: #000000;
+ padding-left: 17px;
+ padding-right: 1px;
+}
+
+.cbi-input-invalid {
+ background-image: url('../resources/cbi/reset.gif');
+ background-repeat: no-repeat;
+ background-position: right;
+ color: #FF0000 !important;
+ border-color: #FF0000;
+}
+
+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 {
+ background-color: #eeeeff;
+ color: #000000;
+}
+
+table.cbi-section-table .cbi-rowstyle-1:hover,
+table.cbi-section-table .cbi-rowstyle-2:hover {
+ background-color: #b2c8d4;
+ color: #000000;
+}
+
+table.cbi-section-table .cbi-section-table-cell {
+ padding: 3px;
+ white-space: nowrap;
+}
+
+.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: 0.25em 0.6em;
+ 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-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: 1px solid #BBBBBB;
+ border-radius: 3px;
+ padding-bottom: 0;
+ position: relative;
+}
+
+.cbi-section-node-tabbed {
+ border-top-left-radius: 0;
+}
+
+.cbi-section-node .cbi-value-last {
+ border-bottom: none;
+}
+
+.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%;
+ vertical-align: top;
+}
+
+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;
+}
+
+.cbi-value-field var {
+ color: #2222FF;
+}
+
+ul.cbi-tabmenu {
+ padding: 3px 0;
+ margin-left: 0 !important;
+ list-style-type: none;
+ position: relative;
+ z-index: 10;
+ top: 4px;
+ line-height: 20px;
+}
+
+ul.cbi-tabmenu li.cbi-tab,
+ul.cbi-tabmenu li.cbi-tab-disabled {
+ display: inline;
+ margin: 0;
+}
+
+ul.cbi-tabmenu li.cbi-tab a,
+ul.cbi-tabmenu li.cbi-tab-disabled a {
+ text-decoration: none;
+ padding: 3px 7px;
+ margin-right: 3px;
+ border: 1px solid #BBBBBB;
+ border-bottom: none;
+ border-radius: 3px 3px 0 0;
+ background-color: #EEEEEE;
+ color: #BBBBBB;
+}
+
+ul.cbi-tabmenu li.cbi-tab-highlighted a {
+ color: #000000;
+ background-color: #FFEEAA;
+}
+
+ul.cbi-tabmenu li a:hover {
+ color: #000000;
+}
+
+ul.cbi-tabmenu li.cbi-tab a {
+ padding-top: 4px;
+ color: #000000;
+ background-color: #FFFFFF;
+}
+
+div.cbi-tab-descr {
+ background-image: url(/luci-static/resources/cbi/help.gif);
+ background-position: 0.25em 50%;
+ background-repeat: no-repeat;
+ border-bottom: 1px solid #CCCCCC;
+ margin: 0.25em 0.25em 2em;
+ padding: 0.5em 0.5em 0.5em 2em;
+}
+
+.left {
+ text-align: left !important;
+}
+
+.right {
+ text-align: right !important;
+}
+
+.luci {
+ position: absolute;
+ bottom: 0;
+ left: 1em;
+ height: 1.5em;
+ font-size: 80%;
+}
+
+.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;
+}
+
+.errorbox {
+ border: 1px solid #FF0000;
+ background-color: #FFCCCC;
+ padding: 5px;
+ margin-bottom: 5px;
+}
+
+.errorbox a {
+ color: #000000 !important;
+}
+
+
+.ifacebox {
+ background-color: #FFFFFF;
+ border: 1px solid #CCCCCC;
+ margin: 0 10px;
+ text-align: center;
+ white-space: nowrap;
+}
+
+.ifacebox .ifacebox-head {
+ border-bottom: 1px solid #CCCCCC;
+ padding: 2px;
+}
+
+.ifacebox .ifacebox-body {
+ padding: 2px;
+}
+
+
+.ifacebadge {
+ background-color: #FFFFFF;
+ border: 1px solid #CCCCCC;
+ padding: 2px;
+ margin-left: 2px;
+ display: inline-block;
+}
+
+.ifacebadge-active {
+ border-color: #000000;
+ font-weight: bold;
+}
+
+
+.zonebadge {
+ padding: 2px;
+ display: inline-block;
+ white-space: nowrap;
+ cursor: pointer;
+}
+
+.zonebadge em,
+.zonebadge strong {
+ margin: 3px;
+ display: inline-block;
+}
+
+.zonebadge input {
+ width: 6em;
+ height: 1.5em;
+}
+
+.zonebadge-empty {
+ border: 1px dashed #AAAAAA;
+ color: #AAAAAA;
+ font-style: italic;
+ font-size: smaller;
+}
+
+
+.uci-change-list {
+ font-family: monospace;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+ text-decoration: none;
+ border: 1px solid #00FF00;
+ background-color: #CCFFCC;
+ display: block;
+ padding: 2px;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+ text-decoration: none;
+ border: 1px solid #FF0000;
+ background-color: #FFCCCC;
+ display: block;
+ font-style: normal;
+ padding: 2px;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+ text-decoration: none;
+ border: 1px solid #CCCCCC;
+ background-color: #EEEEEE;
+ display: block;
+ font-style: normal;
+ padding: 2px;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+ /*display: inline;*/
+ border: none;
+ white-space: pre;
+ font-style: normal;
+ padding: 0px;
+}
+
+.uci-change-legend {
+ padding: 5px;
+}
+
+.uci-change-legend-label {
+ width: 150px;
+ float: left;
+ font-size: 80%;
+}
+
+.uci-change-legend-label>ins,
+.uci-change-legend-label>del,
+.uci-change-legend-label>var {
+ float: left;
+ margin-right: 4px;
+ width: 10px;
+ height: 10px;
+ display: block;
+}
+
+.uci-change-legend-label var ins,
+.uci-change-legend-label var del {
+ line-height: 6px;
+ border: none;
+}
+
+
+}
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css
new file mode 100644
index 0000000000..14db3f86e5
--- /dev/null
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie6.css
@@ -0,0 +1,77 @@
+/* obligatory IE6 Voodoo Code */
+
+* html body {
+ padding-left: 5% !important;
+}
+
+* html div#header {
+ margin-left: 100% !important;
+}
+
+* html div#menubar {
+ margin-left: -5% !important;
+ width: 105% !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: 10%;
+}
+
+* html div#maincontent {
+ margin-left: 0% !important;
+ width: 100% !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;
+}
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css
new file mode 100644
index 0000000000..9e569b28bd
--- /dev/null
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie7.css
@@ -0,0 +1,59 @@
+#tabmenu {
+ line-height: 0;
+}
+
+ul.tabmenu {
+ zoom: 1;
+}
+
+ul.l1 {
+ position: relative;
+}
+
+
+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;
+}
+
+
+fieldset.cbi-section {
+ position: relative;
+ margin-top: 1em;
+ padding-top: 0.75em;
+ border: 1px solid #CCCCCC;
+ zoom: 1;
+}
+
+fieldset.cbi-section legend {
+ position: absolute;
+ top: -0.75em;
+ left: 0.5em;
+}
+
+
+ul.cbi-tabmenu {
+ margin-bottom: 0;
+}
+
+ul.cbi-tabmenu li.cbi-tab a {
+ position: static; /* fixes misplaced tab after page load */
+ border-bottom: 1px solid white;
+}
+
+
+div.cbi-value {
+ zoom: 1; /* fixes hanging float */
+}
+
+div.cbi-value-field {
+ margin-left: 0 !important;
+}
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css
new file mode 100644
index 0000000000..890988c417
--- /dev/null
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/ie8.css
@@ -0,0 +1,12 @@
+fieldset.cbi-section {
+ position: relative;
+ margin-top: 1em;
+ padding-top: 0.75em;
+ border: 1px solid #CCCCCC;
+}
+
+fieldset.cbi-section legend {
+ position: absolute;
+ top: -0.75em;
+ left: 0.5em;
+}
diff --git a/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png
new file mode 100644
index 0000000000..c84c437cda
--- /dev/null
+++ b/themes/luci-theme-openwrt/htdocs/luci-static/openwrt.org/tabbg.png
Binary files differ
diff --git a/themes/luci-theme-openwrt/ipkg/postinst b/themes/luci-theme-openwrt/ipkg/postinst
new file mode 100755
index 0000000000..48ea52273f
--- /dev/null
+++ b/themes/luci-theme-openwrt/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/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm
new file mode 100644
index 0000000000..5830cb932b
--- /dev/null
+++ b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/footer.htm
@@ -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>
+</div>
+
+<p class="luci">Powered by <%= luci.__appname__ .. " (" .. luci.__version__ .. ")" %></p>
+</body>
+</html>
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
new file mode 100644
index 0000000000..5006723e6a
--- /dev/null
+++ b/themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm
@@ -0,0 +1,186 @@
+<%#
+LuCI - Lua Configuration Interface
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008-2010 Jo-Philipp Wich <xm@subsignal.org>
+
+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 sys = require "luci.sys"
+ local http = require "luci.http"
+ local disp = require "luci.dispatcher"
+
+ local hostname = sys.hostname()
+ local load1, load5, load15 = sys.loadavg()
+
+ local request = disp.context.path
+ local request2 = disp.context.request
+
+ local category = request[1]
+ local cattree = category and disp.node(category)
+
+ local leaf = request2[#request2]
+
+ local tree = disp.node()
+ local node = disp.context.dispatched
+
+ local categories = disp.node_childs(tree)
+
+ local c = tree
+ local i, r
+
+ -- tag all nodes leading to this page
+ 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
+
+ http.prepare_content("application/xhtml+xml")
+
+ local function nodeurl(prefix, name, query)
+ local url = controller .. prefix .. name .. "/"
+ if query then
+ url = url .. http.build_querystring(query)
+ end
+ return pcdata(url)
+ end
+
+ local function subtree(prefix, node, level)
+ if not level then
+ level = 1
+ end
+
+ local childs = disp.node_childs(node)
+ if #childs > 0 then
+%>
+ <div class="tabmenu<%=level%>">
+ <ul class="tabmenu l<%=level%>">
+ <%
+ local selected_node
+ local selected_name
+ local i, v
+
+ for i, v in ipairs(childs) do
+ local nnode = node.nodes[v]
+ if nnode._menu_selected then
+ selected_node = nnode
+ selected_name = v
+ end
+ %>
+ <li class="tabmenu-item-<%=v%><% if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>">
+ <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a>
+ </li>
+ <%
+ end
+ %>
+ </ul>
+ <br style="clear:both" />
+<%
+ if selected_node then
+ subtree(prefix .. selected_name .. "/", selected_node, level + 1)
+ end
+%>
+ </div>
+<%
+ end
+ end
+-%>
+
+<?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" />
+<!--[if IE 6]><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 IE 8]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie8.css" /><![endif]-->
+<% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
+<% end -%>
+<% if css then %><style title="text/css">
+<%= css %>
+</style>
+<% end -%>
+<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
+<title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
+</head>
+<body class="lang_<%=luci.i18n.context.lang%>">
+
+<p class="skiplink">
+<span id="skiplink1"><a href="#navigation"><%:Skip to navigation%></a></span>
+<span id="skiplink2"><a href="#content"><%:Skip to content%></a></span>
+</p>
+
+<div id="menubar">
+<h2 class="navigation"><a id="navigation" name="navigation"><%:Navigation%></a></h2>
+
+<div class="hostinfo">
+ <%=hostname%> | <%=luci.version.distversion%> |
+ <%:Load%>: <%="%.2f" % load1%> <%="%.2f" % load5%> <%="%.2f" % load15%>
+ <span id="xhr_poll_status" style="display:none" onclick="XHR.running() ? XHR.halt() : XHR.run()">
+ | <%:Auto Refresh%>:
+ <span id="xhr_poll_status_on"><%:on%></span>
+ <span id="xhr_poll_status_off" style="display:none"><%:off%></span>
+ </span>
+</div>
+
+<% if #categories > 1 then %>
+ <ul id="modemenu">
+ <% for i, r in ipairs(categories) do %>
+ <li><a<% if request[1] == r then %> class="active"<%end%> href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a></li>
+ <% end %>
+ </ul>
+<% 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
+-%>
+<div id="savemenu">
+ <% if ucic > 0 then %>
+ <a class="warning" href="<%=controller%>/<%=category%>/uci/changes/?redir=<%=luci.http.urlencode(luci.http.formvalue("redir") or REQUEST_URI)%>"><%:Unsaved Changes%>: <%=ucic%></a>
+ <%- else -%>
+ <a href="#"><%:Changes%>: 0</a>
+ <% end -%>
+</div><% end %>
+
+<div class="clear"></div>
+</div>
+
+<div id="maincontainer">
+ <div id="tabmenu">
+ <% if category then subtree("/" .. category .. "/", cattree) end %>
+ </div>
+
+ <div id="maincontent">
+ <noscript>
+ <div class="errorbox">
+ <strong><%:Java Script required!%></strong><br />
+ <%:You must enable Java Script in your browser or LuCI will not work properly.%>
+ </div>
+ </noscript>
+
+ <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") and category ~= "failsafe" then -%>
+ <div class="errorbox">
+ <strong><%:No password set!%></strong><br />
+ <%:There is no password set on this router. Please configure a root password to protect the web interface and enable SSH.%><br />
+ <a href="<%=pcdata(luci.dispatcher.build_url("admin/system/admin"))%>"><%:Go to password configuration...%></a>
+ </div>
+ <%- end -%>
diff --git a/themes/luci-theme-openwrt/root/etc/uci-defaults/luci-theme-openwrt b/themes/luci-theme-openwrt/root/etc/uci-defaults/luci-theme-openwrt
new file mode 100755
index 0000000000..d8dea0467e
--- /dev/null
+++ b/themes/luci-theme-openwrt/root/etc/uci-defaults/luci-theme-openwrt
@@ -0,0 +1,6 @@
+#!/bin/sh
+uci batch <<-EOF
+ set luci.themes.OpenWrt=/luci-static/openwrt.org
+ commit luci
+EOF
+