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