luci-theme-material: add some new features and fix some bugs

add footer and loading animation and auto focus switches
compact Fonts

Signed-off-by: Lutty Yang <lutty@wcan.in>
This commit is contained in:
Lutty Yang 2015-09-19 17:22:54 +08:00
parent cf0623f4f5
commit fea55f75c7
8 changed files with 192 additions and 116 deletions

View file

@ -36,7 +36,7 @@
.cbi-button-down, .cbi-button-down,
.cbi-value-helpicon, .cbi-value-helpicon,
.showSide, .showSide,
[class^="icon-"], [class*=" icon-"] { .main > .loading > span {
font-family: 'icomoon' !important; font-family: 'icomoon' !important;
speak: none; speak: none;
font-style: normal !important; font-style: normal !important;
@ -52,8 +52,6 @@
* { * {
margin: 0; margin: 0;
padding: 0; padding: 0;
font-size: 1rem;
font-size: 100%;
box-sizing: border-box; box-sizing: border-box;
} }
@ -93,7 +91,7 @@ abbr {
cursor: help; cursor: help;
} }
header, footer, .main { header, .main {
width: 100%; width: 100%;
position: absolute; position: absolute;
} }
@ -107,11 +105,72 @@ header {
z-index: 101; z-index: 101;
} }
footer{
text-align: right;
padding: 1rem;
color: #aaa;
font-size: 0.8rem;
text-shadow: 0px 0px 2px #BBB;
}
footer > a{
color: #aaa;
text-decoration: none;
}
.main { .main {
top: 4rem; top: 4rem;
bottom: 0rem; bottom: 0rem;
} }
.main > .loading{
position: fixed;
width: 100%;
height: 100%;
z-index: 1000;
display: block;
background-color: rgb(240, 240, 240);
}
.main > .loading > span{
display: block;
text-align: center;
margin-top: 2rem;
color: #888;
font-size: 1.3rem;
}
.main > .loading > span:before{
content: "\e603";
-webkit-animation: anim-rotate 2s infinite linear;
animation: anim-rotate 2s infinite linear;
margin-right: 0.2rem;
}
@-webkit-keyframes anim-rotate {
0% {
-webkit-transform:rotate(0);
transform:rotate(0);
}
100% {
-webkit-transform:rotate(360deg);
transform:rotate(360deg);
}
}
@keyframes anim-rotate {
0% {
-webkit-transform:rotate(0);
-ms-transform:rotate(0);
transform:rotate(0);
}
100% {
-webkit-transform:rotate(360deg);
-ms-transform:rotate(360deg);
transform:rotate(360deg)
}
}
.main-left { .main-left {
float: left; float: left;
width: 15%; width: 15%;
@ -168,7 +227,6 @@ header > .container > .brand {
border: 0; border: 0;
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-size: 100%;
line-height: 1; line-height: 1;
font-family: inherit; font-family: inherit;
min-width: inherit; min-width: inherit;
@ -178,14 +236,13 @@ header > .container > .brand {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12);
} }
.errorbox{ .errorbox {
color: #fff; color: #fff;
background-color: #f0ad4e; background-color: #f0ad4e;
border-color: #eea236; border-color: #eea236;
} }
#maincontent > .container > div:nth-child(1).alert-message.warning > a { #maincontent > .container > div:nth-child(1).alert-message.warning > a {
box-sizing: border-box;
font: inherit; font: inherit;
overflow: visible; overflow: visible;
text-transform: none; text-transform: none;
@ -288,7 +345,7 @@ li {
} }
#maincontent > .container { #maincontent > .container {
margin: 0 2rem 3rem 2rem; margin: 0 2rem 1rem 2rem;
} }
h1 { h1 {
@ -320,7 +377,6 @@ fieldset {
border: 0; border: 0;
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal;
font-size: 100%;
line-height: 1; line-height: 1;
font-family: inherit; font-family: inherit;
@ -380,13 +436,6 @@ fieldset > table > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9; background-color: #f9f9f9;
} }
footer {
position: fixed;
z-index: 1000;
bottom: 0;
left: 0;
}
/* fix progress bar */ /* fix progress bar */
#memfree > div, #memfree > div,
#membuff > div, #membuff > div,
@ -425,7 +474,6 @@ td > table > tbody > tr > td {
/* button style */ /* button style */
.cbi-button { .cbi-button {
box-sizing: border-box;
font: inherit; font: inherit;
overflow: visible; overflow: visible;
text-transform: none; text-transform: none;
@ -632,7 +680,6 @@ td > table > tbody > tr > td {
/* input */ /* input */
.cbi-value input[type="password"], .cbi-value input[type="password"],
.cbi-value input[type="text"] { .cbi-value input[type="text"] {
box-sizing: border-box;
padding: 0.36rem 1rem; padding: 0.36rem 1rem;
color: #555; color: #555;
min-width: 15rem; min-width: 15rem;
@ -644,7 +691,6 @@ td > table > tbody > tr > td {
.cbi-value-field input[type="password"], .cbi-value-field input[type="password"],
.cbi-value-field input[type="text"] { .cbi-value-field input[type="text"] {
box-sizing: border-box;
padding: 0.36rem 1rem; padding: 0.36rem 1rem;
color: #555; color: #555;
background-color: #fff; background-color: #fff;
@ -681,7 +727,6 @@ td > table > tbody > tr > td {
/*textarea*/ /*textarea*/
.cbi-input-textarea { .cbi-input-textarea {
box-sizing: border-box;
width: 100%; width: 100%;
min-height: 16rem; min-height: 16rem;
padding: 1rem; padding: 1rem;
@ -863,7 +908,7 @@ input[name="nslookup"] {
width: 80%; width: 80%;
} }
header > .container > .pull-right > *{ header > .container > .pull-right > * {
position: relative; position: relative;
top: 0.45rem; top: 0.45rem;
cursor: pointer; cursor: pointer;
@ -876,7 +921,6 @@ header > .container > .pull-right > *{
.label { .label {
padding: 0.3rem 0.8rem; padding: 0.3rem 0.8rem;
font-size: 1rem; font-size: 1rem;
box-sizing: border-box;
font-weight: bold; font-weight: bold;
color: #ffffff !important; color: #ffffff !important;
text-transform: uppercase; text-transform: uppercase;
@ -889,7 +933,7 @@ header > .container > .pull-right > *{
text-decoration: none; text-decoration: none;
} }
.notice{ .notice {
background-color: #5BC0DE; background-color: #5BC0DE;
} }
@ -947,6 +991,19 @@ header > .container > .pull-right > *{
float: right; float: right;
} }
.node-main-login footer{
bottom: 0;
position: absolute;
width: 100%;
}
/* fix status overview */
.node-status-overview > .main fieldset:nth-child(4) td:nth-child(2){
white-space: normal;
}
/* fix status processes */ /* fix status processes */
.node-status-processes > .main table tr td:nth-child(3) { .node-status-processes > .main table tr td:nth-child(3) {
@ -958,7 +1015,6 @@ header > .container > .pull-right > *{
} }
.node-status-firewall > .main fieldset li > a { .node-status-firewall > .main fieldset li > a {
box-sizing: border-box;
font: inherit; font: inherit;
overflow: visible; overflow: visible;
text-transform: none; text-transform: none;
@ -997,7 +1053,6 @@ header > .container > .pull-right > *{
.node-system-reboot > .main > .main-right p > a { .node-system-reboot > .main > .main-right p > a {
margin-top: 2rem; margin-top: 2rem;
text-decoration: none; text-decoration: none;
box-sizing: border-box;
font: inherit; font: inherit;
overflow: visible; overflow: visible;
text-transform: none; text-transform: none;
@ -1049,12 +1104,16 @@ header > .container > .pull-right > *{
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
} }
.node-system-software > .main .cbi-value > pre{ .node-system-software > .main .cbi-value > pre {
background-color: #eee; background-color: #eee;
padding: 0.5rem; padding: 0.5rem;
overflow: auto; overflow: auto;
} }
.cbi-tabmenu + .cbi-section {
margin-top: 0;
}
.node-status-firewall fieldset, .node-status-firewall fieldset,
.node-system-software fieldset, .node-system-software fieldset,
.node-system-backup_flash_firmware fieldset { .node-system-backup_flash_firmware fieldset {
@ -1069,7 +1128,7 @@ header > .container > .pull-right > *{
} }
/* language fix */ /* language fix */
body.lang_pl.node-main-login .cbi-value-title{ body.lang_pl.node-main-login .cbi-value-title {
width: 12rem; width: 12rem;
} }
@ -1104,22 +1163,61 @@ body.lang_pl.node-main-login .cbi-value-title{
padding: 1rem; padding: 1rem;
} }
.cbi-input-textarea{ .cbi-input-textarea {
font-size: smaller; font-size: smaller;
} }
.node-status-firewall > .main fieldset li > a {
padding: 0.3rem 0.6rem;
}
} }
@media screen and (max-width: 1280px) { @media screen and (max-width: 1280px) {
header {
height: 3.5rem;
}
header > .container {
margin-top: 0.25rem;
}
.main {
top: 3.5rem;
}
.main-left {
width: calc(0% + 13rem);
}
.main-right {
width: calc(100% - 13rem);
}
.cbi-tabmenu > li > a, .tabs > li > a { .cbi-tabmenu > li > a, .tabs > li > a {
padding: 0.2rem 0.5rem; padding: 0.2rem 0.5rem;
} }
.panel-title {
font-size: 1.3rem;
padding-bottom: 1rem;
}
table {
font-size: 0.8rem !important;
}
.main > .main-left > .nav > li,
.main > .main-left > .nav > li a,
.main > .main-left > .nav > .slide > .menu {
font-size: 1.1rem;
}
.main > .main-left > .nav > .slide > .slide-menu > li > a {
font-size: 0.9rem;
}
} }
@media screen and (max-width: 992px) { @media screen and (max-width: 992px) {
* {
font-size: 100%;
}
.main-left { .main-left {
width: 0; width: 0;
position: fixed; position: fixed;
@ -1150,43 +1248,37 @@ body.lang_pl.node-main-login .cbi-value-title{
padding-right: 1rem; padding-right: 1rem;
} }
.node-network-diagnostics > .main .cbi-map fieldset > div * {
.node-network-diagnostics > .main .cbi-map fieldset > div *{
width: 100% !important; width: 100% !important;
} }
.node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"]{ .node-network-diagnostics > .main .cbi-map fieldset > div input[type="text"] {
margin: 3rem 0 0 0 !important; margin: 3rem 0 0 0 !important;
} }
.node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"]{ .node-network-diagnostics > .main .cbi-map fieldset > div:nth-child(4) input[type="text"] {
margin: 0 !important; margin: 0 !important;
} }
.node-network-diagnostics > .main .cbi-map fieldset > div select, .node-network-diagnostics > .main .cbi-map fieldset > div select,
.node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"]{ .node-network-diagnostics > .main .cbi-map fieldset > div input[type="button"] {
margin: 1rem 0 0 0; margin: 1rem 0 0 0;
} }
.node-network-diagnostics > .main .cbi-map fieldset > div{ .node-network-diagnostics > .main .cbi-map fieldset > div {
width: 100% !important; width: 100% !important;
} }
#diag-rc-output > pre { #diag-rc-output > pre {
font-size: 1.2rem; font-size: 1.2rem;
} }
.node-main-login > .main .cbi-value-title{ .node-main-login > .main .cbi-value-title {
text-align: left; text-align: left;
} }
} }
@media screen and (max-width: 480px) { @media screen and (max-width: 480px) {
* {
font-size: 90%;
}
fieldset { fieldset {
padding: 1rem; padding: 1rem;
margin: 1rem 0 0 0; margin: 1rem 0 0 0;
@ -1219,7 +1311,6 @@ body.lang_pl.node-main-login .cbi-value-title{
.cbi-value-field, .cbi-value-description { .cbi-value-field, .cbi-value-description {
width: 100%; width: 100%;
box-sizing: border-box;
} }
.cbi-value > .cbi-value-field { .cbi-value > .cbi-value-field {
@ -1231,7 +1322,8 @@ body.lang_pl.node-main-login .cbi-value-title{
} }
.cbi-tabmenu > li > a, .tabs > li > a { .cbi-tabmenu > li > a, .tabs > li > a {
padding: 0.2rem 0.7rem; padding: 0.2rem 0.3rem;
font-size: 0.9rem;
} }
.cbi-page-actions > div > input { .cbi-page-actions > div > input {
@ -1265,40 +1357,28 @@ body.lang_pl.node-main-login .cbi-value-title{
} }
.tabs > li > a { .tabs > li > a {
font-size: 1.2rem; font-size: 0.9rem;
}
header {
height: 3.5rem;
}
header > .container {
margin-top: 0.25rem;
}
.main {
top: 3.5rem;
} }
select, select,
input { input {
font-size: 1.2rem; font-size: 0.9rem;
} }
.mobile-hide{ .mobile-hide {
display: none; display: none;
} }
.panel-title{ .panel-title {
font-size: 1.4rem; font-size: 1.4rem;
padding-bottom: 1rem; padding-bottom: 1rem;
} }
.node-system-software > .main .cbi-value.cbi-value-last > div{ .node-system-software > .main .cbi-value.cbi-value-last > div {
width: 100% !important; width: 100% !important;
} }
.node-system-software > .main .cbi-value .cbi-value-field input{ .node-system-software > .main .cbi-value .cbi-value-field input {
width: 100%; width: 100%;
} }
} }

Binary file not shown.

View file

@ -11,5 +11,6 @@
<glyph unicode="&#xe20b;" glyph-name="expand_more" d="M708 572.667l60-60-256-256-256 256 60 60 196-196z" /> <glyph unicode="&#xe20b;" glyph-name="expand_more" d="M708 572.667l60-60-256-256-256 256 60 60 196-196z" />
<glyph unicode="&#xe20e;" glyph-name="menu" d="M128 682.667h768v-86h-768v86zM128 384.667v84h768v-84h-768zM128 170.667v86h768v-86h-768z" /> <glyph unicode="&#xe20e;" glyph-name="menu" d="M128 682.667h768v-86h-768v86zM128 384.667v84h768v-84h-768zM128 170.667v86h768v-86h-768z" />
<glyph unicode="&#xe291;" glyph-name="favorite" d="M512 28.667l-62 56q-106 96-154 142t-107 114-81 123-22 113q0 98 67 166t167 68q116 0 192-90 76 90 192 90 100 0 167-68t67-166q0-78-52-162t-113-146-199-186z" /> <glyph unicode="&#xe291;" glyph-name="favorite" d="M512 28.667l-62 56q-106 96-154 142t-107 114-81 123-22 113q0 98 67 166t167 68q116 0 192-90 76 90 192 90 100 0 167-68t67-166q0-78-52-162t-113-146-199-186z" />
<glyph unicode="&#xe603;" glyph-name="spinner9" d="M512 960c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-64c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" />
<glyph unicode="&#xf059;" glyph-name="question-circle" horiz-adv-x="878" d="M512 164.571v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 548.571q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" /> <glyph unicode="&#xf059;" glyph-name="question-circle" horiz-adv-x="878" d="M512 164.571v109.714q0 8-5.143 13.143t-13.143 5.143h-109.714q-8 0-13.143-5.143t-5.143-13.143v-109.714q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143zM658.286 548.571q0 50.286-31.714 93.143t-79.143 66.286-97.143 23.429q-138.857 0-212-121.714-8.571-13.714 4.571-24l75.429-57.143q4-3.429 10.857-3.429 9.143 0 14.286 6.857 30.286 38.857 49.143 52.571 19.429 13.714 49.143 13.714 27.429 0 48.857-14.857t21.429-33.714q0-21.714-11.429-34.857t-38.857-25.714q-36-16-66-49.429t-30-71.714v-20.571q0-8 5.143-13.143t13.143-5.143h109.714q8 0 13.143 5.143t5.143 13.143q0 10.857 12.286 28.286t31.143 28.286q18.286 10.286 28 16.286t26.286 20 25.429 27.429 16 34.571 7.143 46.286zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
</font></defs></svg> </font></defs></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Binary file not shown.

View file

@ -121,6 +121,8 @@
}(jQuery)); }(jQuery));
(function ($) { (function ($) {
$(".main > .loading").fadeOut();
/** /**
* trim text, Remove spaces, wrap * trim text, Remove spaces, wrap
* @param text * @param text
@ -133,35 +135,7 @@
var tree = undefined; var tree = undefined;
var lastNode = undefined; var lastNode = undefined;
var mainNodeName = undefined;
/**
* get the current node by Hash (reserve)
* @returns {boolean} success?
*/
function getCurrentNodeByHash() {
var ret = false;
var hash = window.location.hash;
if (hash.substr(0, 6) == "#tree-") {
hash = $.base64.decode(hash.substr(6));
tree = hash.split("|");
$(".main > .main-left > .nav > .slide > .menu").each(function () {
var that = $(this);
if (trimText(that.data("title")) == tree[0]) {
that.click();
that.next().find("a").each(function () {
var that = $(this);
if (trimText(that.data("title")) == tree[1]) {
lastNode = that.parent();
lastNode.addClass("active");
ret = true;
return true;
}
});
}
});
}
return ret;
}
/** /**
* get the current node by Burl (primary) * get the current node by Burl (primary)
@ -239,27 +213,27 @@
* hook menu click and add the hash * hook menu click and add the hash
*/ */
$(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () { $(".main > .main-left > .nav > .slide > .slide-menu > li > a").click(function () {
var href = $(this).attr("href");
var tree = trimText($(this).parent().parent().prev().data("title")) + "|" + trimText($(this).data("title"));
tree = $.base64.encode(tree);
window.location = href + "#tree-" + tree;
if (lastNode != undefined) lastNode.removeClass("active"); if (lastNode != undefined) lastNode.removeClass("active");
$(this).parent().addClass("active"); $(this).parent().addClass("active");
return false; $(".main > .loading").fadeIn();
return true;
}); });
/** /**
* fix menu click * fix menu click
*/ */
$(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () { $(".main > .main-left > .nav > .slide > .slide-menu > li").click(function () {
$(this).find("a").click(); if (lastNode != undefined) lastNode.removeClass("active");
$(this).addClass("active");
$(".main > .loading").fadeIn();
window.location = $($(this).find("a")[0]).attr("href");
return;
}); });
/** /**
* get current node and open it * get current node and open it
*/ */
if (!getCurrentNodeByUrl()){ if (!getCurrentNodeByUrl()){
getCurrentNodeByHash();
if (tree != undefined && tree[0] == "Status" && tree[1] == "Overview"){ if (tree != undefined && tree[0] == "Status" && tree[1] == "Overview"){
//overview //overview
lastNode.addClass("active"); lastNode.addClass("active");
@ -267,8 +241,10 @@
} }
} }
if (tree != undefined){ if (tree != undefined){
var mainNodeName = "node-"+ tree[0] + "-" + tree[1]; mainNodeName = "node-"+ tree[0] + "-" + tree[1];
$("body").addClass(mainNodeName.replace(/[ \t\n\r\/]+/g,"_").toLowerCase()); mainNodeName = mainNodeName.replace(/[ \t\n\r\/]+/g,"_").toLowerCase();
$("body").addClass(mainNodeName);
} }
$(".cbi-button-up").val(""); $(".cbi-button-up").val("");
$(".cbi-button-down").val(""); $(".cbi-button-down").val("");
@ -283,10 +259,8 @@
if (onclick == undefined || onclick == ""){ if (onclick == undefined || onclick == ""){
that.click(function () { that.click(function () {
var href = that.attr("href"); var href = that.attr("href");
if (tree != undefined && href.indexOf("Text") == -1) { if (href.indexOf("#") == -1){
window.location = href + "#tree-" + $.base64.encode(tree[0] + "|" + tree[1]); $(".main > .loading").fadeIn();
return false;
}else{
return true; return true;
} }
}); });
@ -340,4 +314,22 @@
var that = $(this); var that = $(this);
that.after("<span class='panel-title'>" + that.text() + "</span>"); that.after("<span class='panel-title'>" + that.text() + "</span>");
}); });
$(".main-right").focus();
$(".main-right").blur();
if (mainNodeName != undefined){
console.log(mainNodeName);
switch (mainNodeName){
case "node-status-system_log":
case "node-status-kernel_log":
$("#syslog").focus(function () {
$("#syslog").blur();
$(".main-right").focus();
$(".main-right").blur();
});
break;
}
}
})(jQuery); })(jQuery);

View file

@ -26,16 +26,18 @@
local tree = disp.node() local tree = disp.node()
local categories = disp.node_childs(tree) local categories = disp.node_childs(tree)
%> %>
<% if #categories > 1 then %>
<footer>
<ul class="breadcrumb pull-right" id="modemenu">
<% for i, r in ipairs(categories) do %>
<li<% if request[1] == r then %> class="active"<%end%>><a href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a> <span class="divider">|</span></li>
<% end %>
</ul>
</footer>
<% end %>
</div> </div>
<footer class="mobile-hide">
<a href="https://github.com/openwrt/luci">Powered by <%= ver.luciname %> (<%= ver.luciversion %>)</a> /
<a href="https://openwrt.org/"><%= ver.distversion %></a>
<% if #categories > 1 then %>
<ul class="breadcrumb pull-right" id="modemenu">
<% for i, r in ipairs(categories) do %>
<li<% if request[1] == r then %> class="active"<%end%>><a href="<%=controller%>/<%=r%>/"><%=striptags(translate(tree.nodes[r].title))%></a> <span class="divider">|</span></li>
<% end %>
</ul>
<% end %>
</footer>
</div> </div>
</div> </div>

View file

@ -109,7 +109,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title> <title><%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" /> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<meta name="format-detection" content="telephone=no, email=no"/> <meta name="format-detection" content="telephone=no, email=no"/>
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
@ -166,6 +166,7 @@
</header> </header>
<div class="main"> <div class="main">
<div class="loading"><span>Loading...</span></div>
<div class="main-left"> <div class="main-left">
<ul class="nav"> <ul class="nav">
<%- <%-