[FIX] PHP Code extrem aufgeräumt (vorher 800+ Zeilen, nun 120 Zeilen), CSS Code aufgeräumt (aus den ganzen IF-Anweisungen Switch/Case gemacht), readme,mk erweitert, diverse nicht benötigte Datei gelöscht

This commit is contained in:
Caspar Armster 2016-05-12 18:00:31 +02:00
parent 0e20132eaa
commit b612a7edee
18 changed files with 333 additions and 19411 deletions

View File

@ -8,31 +8,125 @@
$firmware_download_path = "../firmware/"; $firmware_download_path = "../firmware/";
$variante['beta']['factory'] = 0; $entwicklung = array(
$variante['beta']['sysupgrade'] = 0; 0 => "beta",
$variante['broken']['factory'] = 0; 1 => "broken",
$variante['broken']['sysupgrade'] = 0; 2 => "experimental",
$variante['experimental']['factory'] = 0; 3 => "stable"
$variante['experimental']['sysupgrade'] = 0;
$variante['stable']['factory'] = 0;
$variante['stable']['sysupgrade'] = 0;
$hersteller = array(
0 => "8devices",
1 => "Alfa",
2 => "Allnet",
3 => "Buffalo",
4 => "D-Link",
5 => "GL-Inet",
6 => "LeMaker",
7 => "Linksys",
8 => "Meraki",
9 => "Netgear",
10 => "Onion",
11 => "Raspberry Pi",
12 => "TP-Link",
13 => "Ubiquiti",
14 => "Western Digital",
15 => "x86",
); );
?> $installation = array(
0 => "factory",
1 => "sysupgrade"
);
for( $i=0; $i<count($entwicklung); $i++ ) {
for( $j=0; $j<count($installation); $j++ ) {
$variante[$entwicklung[$i]][$installation[$j]] = 0;
}
}
$anzahl_hersteller = 16;
$hersteller = array(
0 => array(
"name" => "8devices",
"filename" => "8devices",
"offset_modell" => 9,
"offset_version" => 3
),
1 => array(
"name" => "Alfa",
"filename" => "alfa",
"offset_modell" => 5,
"offset_version" => 4
),
2 => array(
"name" => "Allnet",
"filename" => "allnet",
"offset_modell" => 7,
"offset_version" => 4
),
3 => array(
"name" => "Buffalo",
"filename" => "buffalo",
"offset_modell" => 8,
"offset_version" => 4
),
4 => array(
"name" => "D-Link",
"filename" => "d-link",
"offset_modell" => 7,
"offset_version" => -1
),
5 => array(
"name" => "GL-Inet",
"filename" => "gl-inet",
"offset_modell" => 8,
"offset_version" => -1
),
6 => array(
"name" => "LeMaker",
"filename" => "lemaker",
"offset_modell" => 8,
"offset_version" => 4
),
7 => array(
"name" => "Linksys",
"filename" => "linksys",
"offset_modell" => 8,
"offset_version" => 4
),
8 => array(
"name" => "Meraki",
"filename" => "meraki",
"offset_modell" => 7,
"offset_version" => 4
),
9 => array(
"name" => "Netgear",
"filename" => "netgear",
"offset_modell" => 8,
"offset_version" => 4
),
10 => array(
"name" => "Onion",
"filename" => "onion",
"offset_modell" => 6,
"offset_version" => 4
),
11 => array(
"name" => "Raspberry Pi",
"filename" => "raspberry-pi",
"offset_modell" => 13,
"offset_version" => 4
),
12 => array(
"name" => "TP-Link",
"filename" => "tp-link",
"offset_modell" => 8,
"offset_version" => -1
),
13 => array(
"name" => "Ubiquiti",
"filename" => "ubiquiti",
"offset_modell" => 9,
"offset_version" => 4
),
14 => array(
"name" => "Western Digital",
"filename" => "-wd-",
"offset_modell" => 3,
"offset_version" => 4
),
15 => array(
"name" => "x86",
"filename" => "x86",
"offset_modell" => 4,
"offset_version" => 4
)
);
$offset_sysupgrade = array(
0 => 0,
1 => 11
);
?>

View File

@ -1,587 +0,0 @@
/*!
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default[disabled],
fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success[disabled],
fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info[disabled],
fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning[disabled],
fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger[disabled],
fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7176
css/bootstrap.css vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,527 +0,0 @@
// Lumen 3.3.5
// Bootswatch
// -----------------------------------------------------
@web-font-path: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,400italic";
.web-font(@path) {
@import url("@{path}");
}
.web-font(@web-font-path);
.shadow (@width: 4px) {
border-width: 0 1px @width 1px;
}
// Navbar =====================================================================
.navbar {
.shadow();
}
// Buttons ====================================================================
.btn {
padding: (@padding-base-vertical + 2) @padding-base-horizontal @padding-base-vertical;
.shadow();
font-size: 12px;
font-weight: bold;
text-transform: uppercase;
&:hover {
margin-top: 1px;
border-bottom-width: 3px;
}
&:active {
margin-top: 2px;
border-bottom-width: 2px;
.box-shadow(none);
}
&-lg,
&-group-lg > .btn {
padding: (@padding-large-vertical + 2) @padding-large-horizontal @padding-large-vertical;
line-height: 15px;
}
&-sm,
&-group-sm > .btn {
padding: (@padding-small-vertical + 2) @padding-small-horizontal @padding-small-vertical;
}
&-xs,
&-group-xs > .btn {
padding: (@padding-xs-vertical + 2) @padding-xs-horizontal @padding-xs-vertical;
}
&-default:hover,
&-default:focus,
&-group.open .dropdown-toggle.btn-default {
background-color: @btn-default-bg;
border-color: @btn-default-border;
}
&-primary:hover,
&-primary:focus,
&-group.open .dropdown-toggle.btn-primary {
background-color: @btn-primary-bg;
border-color: @btn-primary-border;
}
&-success:hover,
&-success:focus,
&-group.open .dropdown-toggle.btn-success {
background-color: @btn-success-bg;
border-color: @btn-success-border;
}
&-info:hover,
&-info:focus,
&-group.open .dropdown-toggle.btn-info {
background-color: @btn-info-bg;
border-color: @btn-info-border;
}
&-warning:hover,
&-warning:focus,
&-group.open .dropdown-toggle.btn-warning {
background-color: @btn-warning-bg;
border-color: @btn-warning-border;
}
&-danger:hover,
&-danger:focus,
&-group.open .dropdown-toggle.btn-danger {
background-color: @btn-danger-bg;
border-color: @btn-danger-border;
}
&-group.open .dropdown-toggle {
.box-shadow(none);
}
}
.navbar-btn {
&:hover {
margin-top: 8px
}
&:active {
margin-top: 9px
}
&.btn-sm {
&:hover {
margin-top: 11px
}
&:active {
margin-top: 12px
}
}
&.btn-xs {
&:hover {
margin-top: 15px
}
&:active {
margin-top: 16px
}
}
}
.btn-group-vertical {
.btn + .btn {
&:hover {
border-top-width: 1px;
}
&:active {
border-top-width: 2px;
}
}
}
// Typography =================================================================
.text-primary,
.text-primary:hover {
color: @brand-primary;
}
.text-success,
.text-success:hover {
color: @brand-success;
}
.text-danger,
.text-danger:hover {
color: @brand-danger;
}
.text-warning,
.text-warning:hover {
color: @brand-warning;
}
.text-info,
.text-info:hover {
color: @brand-info;
}
// Tables =====================================================================
table,
.table {
a:not(.btn) {
text-decoration: underline;
}
.dropdown-menu a {
text-decoration: none;
}
.success,
.warning,
.danger,
.info {
color: #fff;
a:not(.btn) {
color: #fff;
}
}
&:not(.table-bordered) {
> thead > tr > th,
> tbody > tr > th,
> tfoot > tr > th,
> thead > tr > td,
> tbody > tr > td,
> tfoot > tr > td {
border-color: transparent;
}
}
}
// Forms ======================================================================
.form-control {
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
}
label {
font-weight: normal;
}
.has-warning {
.help-block,
.control-label,
.radio,
.checkbox,
.radio-inline,
.checkbox-inline,
&.radio label,
&.checkbox label,
&.radio-inline label,
&.checkbox-inline label,
.form-control-feedback {
color: @brand-warning;
}
.form-control,
.form-control:focus {
border: 1px solid @brand-warning;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
}
.input-group-addon {
border: 1px solid @brand-warning;
}
}
.has-error {
.help-block,
.control-label,
.radio,
.checkbox,
.radio-inline,
.checkbox-inline,
&.radio label,
&.checkbox label,
&.radio-inline label,
&.checkbox-inline label,
.form-control-feedback {
color: @brand-danger;
}
.form-control,
.form-control:focus {
border: 1px solid @brand-danger;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
}
.input-group-addon {
border: 1px solid @brand-danger;
}
}
.has-success {
.help-block,
.control-label,
.radio,
.checkbox,
.radio-inline,
.checkbox-inline,
&.radio label,
&.checkbox label,
&.radio-inline label,
&.checkbox-inline label,
.form-control-feedback {
color: @brand-success;
}
.form-control,
.form-control:focus {
border: 1px solid @brand-success;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.075));
}
.input-group-addon {
border: 1px solid @brand-success;
}
}
// Navs =======================================================================
.nav {
.open > a,
.open > a:hover,
.open > a:focus {
border-color: transparent;
}
}
.nav-tabs {
> li > a {
margin-top: 6px;
border-color: @navbar-default-border;
color: @gray-dark;
.transition(all 0.2s ease-in-out);
}
> li > a:hover,
> li > a:focus,
> li.active > a,
> li.active > a:hover,
> li.active > a:focus,
.open > a,
.open > a:hover,
.open > a:focus {
padding-bottom: (@padding-large-vertical + 3);
margin-top: 0;
}
.open > a,
.open > a:hover,
.open > a:focus {
border-color: @navbar-default-border;
}
> li.disabled > a:hover,
> li.disabled > a:focus {
padding-top: 10px;
padding-bottom: 10px;
margin-top: 6px;
}
&.nav-justified > li {
vertical-align: bottom;
}
}
.dropdown-menu {
margin-top: 0;
.shadow();
border-top-width: 1px;
.box-shadow(none);
}
.breadcrumb {
border-color: darken(@breadcrumb-bg, 5%);
border-style: solid;
.shadow();
}
.pagination,
.pager {
> li > a,
> li > span {
position: relative;
top: 0;
.shadow();
color: @pagination-color;
font-size: 12px;
font-weight: bold;
text-transform: uppercase;
&:hover {
top: 1px;
border-bottom-width: 3px;
}
&:active {
top: 2px;
border-bottom-width: 2px;
}
}
> .disabled > a,
> .disabled > span {
&:hover {
top: 0;
.shadow();
}
&:active {
top: 0;
.shadow();
}
}
}
.pager {
> li > a,
> li > span,
> .disabled > a,
> .disabled > span {
&,
&:hover,
&:active {
border-left-width: 2px;
border-right-width: 2px;
}
}
}
// Indicators =================================================================
.close {
color: #fff;
text-decoration: none;
opacity: 0.4;
&:hover,
&:focus {
color: #fff;
opacity: 1;
}
}
.alert {
.shadow();
.alert-link {
font-weight: normal;
color: #fff;
text-decoration: underline;
}
}
.label {
font-weight: normal;
}
// Progress bars ==============================================================
.progress {
border: 1px solid @navbar-default-border;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.1));
&-bar {
.box-shadow(inset 0 -4px 0 rgba(0, 0, 0, 0.15));
}
}
// Containers =================================================================
.well {
border: 1px solid @navbar-default-border;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
}
a.list-group-item {
&.active,
&.active:hover,
&.active:focus {
border-color: @list-group-border;
}
&-success {
&.active {
background-color: @state-success-bg;
}
&.active:hover,
&.active:focus {
background-color: darken(@state-success-bg, 5%);
}
}
&-warning {
&.active {
background-color: @state-warning-bg;
}
&.active:hover,
&.active:focus {
background-color: darken(@state-warning-bg, 5%);
}
}
&-danger {
&.active {
background-color: @state-danger-bg;
}
&.active:hover,
&.active:focus {
background-color: darken(@state-danger-bg, 5%);
}
}
}
.jumbotron {
border: 1px solid @navbar-default-border;
.box-shadow(inset 0 2px 0 rgba(0, 0, 0, 0.05));
}
.panel {
border: 1px solid @navbar-default-border;
.shadow();
&-default {
.close {
color: @text-color;
}
}
}
.modal {
.close {
color: @text-color;
}
}
.popover {
color: @text-color;
}

6760
css/orig/bootstrap.css vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,869 +0,0 @@
// Lumen 3.3.6
// Variables
// --------------------------------------------------
//== Colors
//
//## Gray and brand colors for use across Bootstrap.
@gray-base: #000;
@gray-darker: lighten(@gray-base, 13.5%); // #222
@gray-dark: lighten(@gray-base, 20%); // #333
@gray: lighten(@gray-base, 33.5%); // #555
@gray-light: lighten(@gray-base, 60%); // #999
@gray-lighter: lighten(@gray-base, 93.5%); // #eee
@brand-primary: #158CBA;
@brand-success: #28B62C;
@brand-info: #75CAEB;
@brand-warning: #FF851B;
@brand-danger: #FF4136;
//== Scaffolding
//
//## Settings for some of the most global styles.
//** Background color for `<body>`.
@body-bg: #fff;
//** Global text color on `<body>`.
@text-color: @gray;
//** Global textual link color.
@link-color: @brand-primary;
//** Link hover color set via `darken()` function.
@link-hover-color: @link-color;
//** Link hover decoration.
@link-hover-decoration: underline;
//== Typography
//
//## Font, line-height, and color for body text, headings, and more.
@font-family-sans-serif: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif;
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
@font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif;
@font-size-base: 14px;
@font-size-large: ceil((@font-size-base * 1.25)); // ~18px
@font-size-small: ceil((@font-size-base * 0.85)); // ~12px
@font-size-h1: floor((@font-size-base * 2.6)); // ~36px
@font-size-h2: floor((@font-size-base * 2.15)); // ~30px
@font-size-h3: ceil((@font-size-base * 1.7)); // ~24px
@font-size-h4: ceil((@font-size-base * 1.25)); // ~18px
@font-size-h5: @font-size-base;
@font-size-h6: ceil((@font-size-base * 0.85)); // ~12px
//** Unit-less `line-height` for use in components like buttons.
@line-height-base: 1.428571429; // 20/14
//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
@line-height-computed: floor((@font-size-base * @line-height-base)); // ~20px
//** By default, this inherits from the `<body>`.
@headings-font-family: inherit;
@headings-font-weight: 400;
@headings-line-height: 1.1;
@headings-color: @gray-dark;
//== Iconography
//
//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
//** Load fonts from this directory.
@icon-font-path: "../fonts/";
//** File name for all font files.
@icon-font-name: "glyphicons-halflings-regular";
//** Element ID within SVG icon file.
@icon-font-svg-id: "glyphicons_halflingsregular";
//== Components
//
//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
@padding-base-vertical: 7px;
@padding-base-horizontal: 12px;
@padding-large-vertical: 13px;
@padding-large-horizontal: 16px;
@padding-small-vertical: 4px;
@padding-small-horizontal: 10px;
@padding-xs-vertical: 1px;
@padding-xs-horizontal: 5px;
@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
@line-height-small: 1.5;
@border-radius-base: 4px;
@border-radius-large: 5px;
@border-radius-small: 2px;
//** Global color for active items (e.g., navs or dropdowns).
@component-active-color: #fff;
//** Global background color for active items (e.g., navs or dropdowns).
@component-active-bg: @brand-primary;
//** Width of the `border` for generating carets that indicator dropdowns.
@caret-width-base: 4px;
//** Carets increase slightly in size for larger components.
@caret-width-large: 5px;
//== Tables
//
//## Customizes the `.table` component with basic values, each used across all table variations.
//** Padding for `<th>`s and `<td>`s.
@table-cell-padding: 8px;
//** Padding for cells in `.table-condensed`.
@table-condensed-cell-padding: 5px;
//** Default background color used for all tables.
@table-bg: transparent;
//** Background color used for `.table-striped`.
@table-bg-accent: #f9f9f9;
//** Background color used for `.table-hover`.
@table-bg-hover: #f5f5f5;
@table-bg-active: @table-bg-hover;
//** Border color for table and cell borders.
@table-border-color: @gray-lighter;
//== Buttons
//
//## For each of Bootstrap's buttons, define text, background and border color.
@btn-font-weight: normal;
@btn-default-color: @gray;
@btn-default-bg: @gray-lighter;
@btn-default-border: darken(@btn-default-bg, 5%);
@btn-primary-color: #fff;
@btn-primary-bg: @brand-primary;
@btn-primary-border: darken(@btn-primary-bg, 5%);
@btn-success-color: #fff;
@btn-success-bg: @brand-success;
@btn-success-border: darken(@btn-success-bg, 5%);
@btn-info-color: #fff;
@btn-info-bg: @brand-info;
@btn-info-border: darken(@btn-info-bg, 5%);
@btn-warning-color: #fff;
@btn-warning-bg: @brand-warning;
@btn-warning-border: darken(@btn-warning-bg, 5%);
@btn-danger-color: #fff;
@btn-danger-bg: @brand-danger;
@btn-danger-border: darken(@btn-danger-bg, 5%);
@btn-link-disabled-color: @gray-light;
// Allows for customizing button radius independently from global border radius
@btn-border-radius-base: @border-radius-base;
@btn-border-radius-large: @border-radius-large;
@btn-border-radius-small: @border-radius-small;
//== Forms
//
//##
//** `<input>` background color
@input-bg: #fff;
//** `<input disabled>` background color
@input-bg-disabled: @gray-lighter;
//** Text color for `<input>`s
@input-color: @gray;
//** `<input>` border color
@input-border: darken(#f8f8f8, 6.5%);
// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
//** Default `.form-control` border radius
// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
@input-border-radius: @border-radius-base;
//** Large `.form-control` border radius
@input-border-radius-large: @border-radius-large;
//** Small `.form-control` border radius
@input-border-radius-small: @border-radius-small;
//** Border color for inputs on focus
@input-border-focus: #66afe9;
//** Placeholder text color
@input-color-placeholder: @gray-light;
//** Default `.form-control` height
@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 4);
//** Large `.form-control` height
@input-height-large: (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
//** Small `.form-control` height
@input-height-small: (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
//** `.form-group` margin
@form-group-margin-bottom: 15px;
@legend-color: @gray-dark;
@legend-border-color: #e5e5e5;
//** Background color for textual input addons
@input-group-addon-bg: @gray-lighter;
//** Border color for textual input addons
@input-group-addon-border-color: @input-border;
//** Disabled cursor for form controls and buttons.
@cursor-disabled: not-allowed;
//== Dropdowns
//
//## Dropdown menu container and contents.
//** Background for the dropdown menu.
@dropdown-bg: #fff;
//** Dropdown menu `border-color`.
@dropdown-border: @input-border;
//** Dropdown menu `border-color` **for IE8**.
@dropdown-fallback-border: #ccc;
//** Divider color for between dropdown items.
@dropdown-divider-bg: @gray-lighter;
//** Dropdown link text color.
@dropdown-link-color: @gray-light;
//** Hover color for dropdown links.
@dropdown-link-hover-color: @gray-dark;
//** Hover background for dropdown links.
@dropdown-link-hover-bg: transparent;
//** Active dropdown menu item text color.
@dropdown-link-active-color: @component-active-color;
//** Active dropdown menu item background color.
@dropdown-link-active-bg: @component-active-bg;
//** Disabled dropdown menu item background color.
@dropdown-link-disabled-color: @gray-lighter;
//** Text color for headers within dropdown menus.
@dropdown-header-color: @gray-light;
//** Deprecated `@dropdown-caret-color` as of v3.1.0
@dropdown-caret-color: #000;
//-- Z-index master list
//
// Warning: Avoid customizing these values. They're used for a bird's eye view
// of components dependent on the z-axis and are designed to all work together.
//
// Note: These variables are not generated into the Customizer.
@zindex-navbar: 1000;
@zindex-dropdown: 1000;
@zindex-popover: 1060;
@zindex-tooltip: 1070;
@zindex-navbar-fixed: 1030;
@zindex-modal-background: 1040;
@zindex-modal: 1050;
//== Media queries breakpoints
//
//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
// Extra small screen / phone
//** Deprecated `@screen-xs` as of v3.0.1
@screen-xs: 480px;
//** Deprecated `@screen-xs-min` as of v3.2.0
@screen-xs-min: @screen-xs;
//** Deprecated `@screen-phone` as of v3.0.1
@screen-phone: @screen-xs-min;
// Small screen / tablet
//** Deprecated `@screen-sm` as of v3.0.1
@screen-sm: 768px;
@screen-sm-min: @screen-sm;
//** Deprecated `@screen-tablet` as of v3.0.1
@screen-tablet: @screen-sm-min;
// Medium screen / desktop
//** Deprecated `@screen-md` as of v3.0.1
@screen-md: 992px;
@screen-md-min: @screen-md;
//** Deprecated `@screen-desktop` as of v3.0.1
@screen-desktop: @screen-md-min;
// Large screen / wide desktop
//** Deprecated `@screen-lg` as of v3.0.1
@screen-lg: 1200px;
@screen-lg-min: @screen-lg;
//** Deprecated `@screen-lg-desktop` as of v3.0.1
@screen-lg-desktop: @screen-lg-min;
// So media queries don't overlap when required, provide a maximum
@screen-xs-max: (@screen-sm-min - 1);
@screen-sm-max: (@screen-md-min - 1);
@screen-md-max: (@screen-lg-min - 1);
//== Grid system
//
//## Define your custom responsive grid.
//** Number of columns in the grid.
@grid-columns: 12;
//** Padding between columns. Gets divided in half for the left and right.
@grid-gutter-width: 30px;
// Navbar collapse
//** Point at which the navbar becomes uncollapsed.
@grid-float-breakpoint: @screen-sm-min;
//** Point at which the navbar begins collapsing.
@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
//== Container sizes
//
//## Define the maximum width of `.container` for different screen sizes.
// Small screen / tablet
@container-tablet: (720px + @grid-gutter-width);
//** For `@screen-sm-min` and up.
@container-sm: @container-tablet;
// Medium screen / desktop
@container-desktop: (940px + @grid-gutter-width);
//** For `@screen-md-min` and up.
@container-md: @container-desktop;
// Large screen / wide desktop
@container-large-desktop: (1140px + @grid-gutter-width);
//** For `@screen-lg-min` and up.
@container-lg: @container-large-desktop;
//== Navbar
//
//##
// Basics of a navbar
@navbar-height: 50px;
@navbar-margin-bottom: @line-height-computed;
@navbar-border-radius: @border-radius-base;
@navbar-padding-horizontal: floor((@grid-gutter-width / 2));
@navbar-padding-vertical: ((@navbar-height - @line-height-computed) / 2);
@navbar-collapse-max-height: 340px;
@navbar-default-color: @text-color;
@navbar-default-bg: #f8f8f8;
@navbar-default-border: @input-border;
// Navbar links
@navbar-default-link-color: @gray-light;
@navbar-default-link-hover-color: @gray-dark;
@navbar-default-link-hover-bg: transparent;
@navbar-default-link-active-color: @navbar-default-link-hover-color;
@navbar-default-link-active-bg: transparent;
@navbar-default-link-disabled-color: @gray-lighter;
@navbar-default-link-disabled-bg: transparent;
// Navbar brand label
@navbar-default-brand-color: @navbar-default-link-hover-color;
@navbar-default-brand-hover-color: @navbar-default-link-hover-color;
@navbar-default-brand-hover-bg: transparent;
// Navbar toggle
@navbar-default-toggle-hover-bg: #fff;
@navbar-default-toggle-icon-bar-bg: @gray-light;
@navbar-default-toggle-border-color: @gray-lighter;
//=== Inverted navbar
// Reset inverted navbar basics
@navbar-inverse-color: @gray-light;
@navbar-inverse-bg: #fff;
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
// Inverted navbar links
@navbar-inverse-link-color: @gray-light;
@navbar-inverse-link-hover-color: @gray-dark;
@navbar-inverse-link-hover-bg: transparent;
@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
@navbar-inverse-link-active-bg: transparent;
@navbar-inverse-link-disabled-color: @gray-lighter;
@navbar-inverse-link-disabled-bg: transparent;
// Inverted navbar brand label
@navbar-inverse-brand-color: @navbar-inverse-link-color;
@navbar-inverse-brand-hover-color: @navbar-inverse-link-hover-color;
@navbar-inverse-brand-hover-bg: transparent;
// Inverted navbar toggle
@navbar-inverse-toggle-hover-bg: @gray-lighter;
@navbar-inverse-toggle-icon-bar-bg: @gray-light;
@navbar-inverse-toggle-border-color: @gray-lighter;
//== Navs
//
//##
//=== Shared nav styles
@nav-link-padding: 10px 15px;
@nav-link-hover-bg: #fff;
@nav-disabled-link-color: @gray-light;
@nav-disabled-link-hover-color: @gray-light;
//== Tabs
@nav-tabs-border-color: @navbar-default-border;
@nav-tabs-link-hover-border-color: @gray-lighter;
@nav-tabs-active-link-hover-bg: #fff;
@nav-tabs-active-link-hover-color: @gray;
@nav-tabs-active-link-hover-border-color: @nav-tabs-border-color;
@nav-tabs-justified-link-border-color: @nav-tabs-border-color;
@nav-tabs-justified-active-link-border-color: @body-bg;
//== Pills
@nav-pills-border-radius: @border-radius-base;
@nav-pills-active-link-hover-bg: @component-active-bg;
@nav-pills-active-link-hover-color: @component-active-color;
//== Pagination
//
//##
@pagination-color: @btn-default-color;
@pagination-bg: @btn-default-bg;
@pagination-border: @btn-default-border;
@pagination-hover-color: @pagination-color;
@pagination-hover-bg: @pagination-bg;
@pagination-hover-border: @pagination-border;
@pagination-active-color: #fff;
@pagination-active-bg: @brand-primary;
@pagination-active-border: @btn-primary-border;
@pagination-disabled-color: @gray-light;
@pagination-disabled-bg: @pagination-bg;
@pagination-disabled-border: @pagination-border;
//== Pager
//
//##
@pager-bg: @pagination-bg;
@pager-border: @pagination-border;
@pager-border-radius: 15px;
@pager-hover-bg: @pagination-hover-bg;
@pager-active-bg: @pagination-active-bg;
@pager-active-color: @pagination-active-color;
@pager-disabled-color: @pagination-disabled-color;
//== Jumbotron
//
//##
@jumbotron-padding: 30px;
@jumbotron-color: inherit;
@jumbotron-bg: #fafafa;
@jumbotron-heading-color: inherit;
@jumbotron-font-size: ceil((@font-size-base * 1.5));
@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
//== Form states and alerts
//
//## Define colors for form feedback states and, by default, alerts.
@state-success-text: #fff;
@state-success-bg: @brand-success;
@state-success-border: darken(@state-success-bg, 4%);
@state-info-text: #fff;
@state-info-bg: @brand-info;
@state-info-border: darken(@state-info-bg, 12%);
@state-warning-text: #fff;
@state-warning-bg: @brand-warning;
@state-warning-border: darken(@state-warning-bg, 5%);
@state-danger-text: #fff;
@state-danger-bg: @brand-danger;
@state-danger-border: darken(@state-danger-bg, 10%);
//== Tooltips
//
//##
//** Tooltip max width
@tooltip-max-width: 200px;
//** Tooltip text color
@tooltip-color: #fff;
//** Tooltip background color
@tooltip-bg: #000;
@tooltip-opacity: .9;
//** Tooltip arrow width
@tooltip-arrow-width: 5px;
//** Tooltip arrow color
@tooltip-arrow-color: @tooltip-bg;
//== Popovers
//
//##
//** Popover body background color
@popover-bg: #fff;
//** Popover maximum width
@popover-max-width: 276px;
//** Popover border color
@popover-border-color: rgba(0,0,0,.2);
//** Popover fallback border color
@popover-fallback-border-color: #ccc;
//** Popover title background color
@popover-title-bg: darken(@popover-bg, 3%);
//** Popover arrow width
@popover-arrow-width: 10px;
//** Popover arrow color
@popover-arrow-color: @popover-bg;
//** Popover outer arrow width
@popover-arrow-outer-width: (@popover-arrow-width + 1);
//** Popover outer arrow color
@popover-arrow-outer-color: fadein(@popover-border-color, 5%);
//** Popover outer arrow fallback color
@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
//== Labels
//
//##
//** Default label background color
@label-default-bg: @gray-light;
//** Primary label background color
@label-primary-bg: @brand-primary;
//** Success label background color
@label-success-bg: @brand-success;
//** Info label background color
@label-info-bg: @brand-info;
//** Warning label background color
@label-warning-bg: @brand-warning;
//** Danger label background color
@label-danger-bg: @brand-danger;
//** Default label text color
@label-color: #fff;
//** Default text color of a linked label
@label-link-hover-color: #fff;
//== Modals
//
//##
//** Padding applied to the modal body
@modal-inner-padding: 20px;
//** Padding applied to the modal title
@modal-title-padding: 15px;
//** Modal title line-height
@modal-title-line-height: @line-height-base;
//** Background color of modal content area
@modal-content-bg: #fff;
//** Modal content border color
@modal-content-border-color: rgba(0,0,0,.05);
//** Modal content border color **for IE8**
@modal-content-fallback-border-color: @gray-lighter;
//** Modal backdrop background color
@modal-backdrop-bg: #000;
//** Modal backdrop opacity
@modal-backdrop-opacity: .5;
//** Modal header border color
@modal-header-border-color: #e5e5e5;
//** Modal footer border color
@modal-footer-border-color: @modal-header-border-color;
@modal-lg: 900px;
@modal-md: 600px;
@modal-sm: 300px;
//== Alerts
//
//## Define alert colors, border radius, and padding.
@alert-padding: 15px;
@alert-border-radius: @border-radius-base;
@alert-link-font-weight: bold;
@alert-success-bg: @state-success-bg;
@alert-success-text: @state-success-text;
@alert-success-border: @state-success-border;
@alert-info-bg: @state-info-bg;
@alert-info-text: @state-info-text;
@alert-info-border: @state-info-border;
@alert-warning-bg: @state-warning-bg;
@alert-warning-text: @state-warning-text;
@alert-warning-border: @state-warning-border;
@alert-danger-bg: @state-danger-bg;
@alert-danger-text: @state-danger-text;
@alert-danger-border: @state-danger-border;
//== Progress bars
//
//##
//** Background color of the whole progress component
@progress-bg: @jumbotron-bg;
//** Progress bar text color
@progress-bar-color: #fff;
//** Variable for setting rounded corners on progress bar.
@progress-border-radius: @border-radius-base;
//** Default progress bar color
@progress-bar-bg: @brand-primary;
//** Success progress bar color
@progress-bar-success-bg: @brand-success;
//** Warning progress bar color
@progress-bar-warning-bg: @brand-warning;
//** Danger progress bar color
@progress-bar-danger-bg: @brand-danger;
//** Info progress bar color
@progress-bar-info-bg: @brand-info;
//== List group
//
//##
//** Background color on `.list-group-item`
@list-group-bg: #fff;
//** `.list-group-item` border color
@list-group-border: @gray-lighter;
//** List group border radius
@list-group-border-radius: @border-radius-base;
//** Background color of single list items on hover
@list-group-hover-bg: #f5f5f5;
//** Text color of active list items
@list-group-active-color: @component-active-color;
//** Background color of active list elements
@list-group-active-bg: @component-active-bg;
//** Background color of active list items
@list-group-active-border: @list-group-active-bg;
//** Text color for content within active list items
@list-group-active-text-color: lighten(@list-group-active-bg, 40%);
//** Text color of disabled list items
@list-group-disabled-color: @gray-light;
//** Background color of disabled list items
@list-group-disabled-bg: @gray-lighter;
//** Text color for content within disabled list items
@list-group-disabled-text-color: @list-group-disabled-color;
@list-group-link-color: #555;
@list-group-link-hover-color: @list-group-link-color;
@list-group-link-heading-color: #333;
//== Panels
//
//##
@panel-bg: #fff;
@panel-body-padding: 15px;
@panel-heading-padding: 10px 15px;
@panel-footer-padding: @panel-heading-padding;
@panel-border-radius: @border-radius-base;
//** Border color for elements within panels
@panel-inner-border: transparent;
@panel-footer-bg: #f5f5f5;
@panel-default-text: @gray-dark;
@panel-default-border: transparent;
@panel-default-heading-bg: #f5f5f5;
@panel-primary-text: #fff;
@panel-primary-border: transparent;
@panel-primary-heading-bg: @brand-primary;
@panel-success-text: @state-success-text;
@panel-success-border: transparent;
@panel-success-heading-bg: @state-success-bg;
@panel-info-text: @state-info-text;
@panel-info-border: transparent;
@panel-info-heading-bg: @state-info-bg;
@panel-warning-text: @state-warning-text;
@panel-warning-border: transparent;
@panel-warning-heading-bg: @state-warning-bg;
@panel-danger-text: @state-danger-text;
@panel-danger-border: transparent;
@panel-danger-heading-bg: @state-danger-bg;
//== Thumbnails
//
//##
//** Padding around the thumbnail image
@thumbnail-padding: 4px;
//** Thumbnail background color
@thumbnail-bg: @body-bg;
//** Thumbnail border color
@thumbnail-border: @gray-lighter;
//** Thumbnail border radius
@thumbnail-border-radius: @border-radius-base;
//** Custom text color for thumbnail captions
@thumbnail-caption-color: @text-color;
//** Padding around the thumbnail caption
@thumbnail-caption-padding: 9px;
//== Wells
//
//##
@well-bg: @jumbotron-bg;
@well-border: darken(@well-bg, 7%);
//== Badges
//
//##
@badge-color: #fff;
//** Linked badge text color on hover
@badge-link-hover-color: #fff;
@badge-bg: @brand-primary;
//** Badge text color in active nav link
@badge-active-color: @link-color;
//** Badge background color in active nav link
@badge-active-bg: #fff;
@badge-font-weight: normal;
@badge-line-height: 1;
@badge-border-radius: 10px;
//== Breadcrumbs
//
//##
@breadcrumb-padding-vertical: 8px;
@breadcrumb-padding-horizontal: 15px;
//** Breadcrumb background color
@breadcrumb-bg: @well-bg;
//** Breadcrumb text color
@breadcrumb-color: @gray-light;
//** Text color of current page in the breadcrumb
@breadcrumb-active-color: @gray-light;
//** Textual separator for between breadcrumb elements
@breadcrumb-separator: ">";
//== Carousel
//
//##
@carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6);
@carousel-control-color: #fff;
@carousel-control-width: 15%;
@carousel-control-opacity: .5;
@carousel-control-font-size: 20px;
@carousel-indicator-active-bg: #fff;
@carousel-indicator-border-color: #fff;
@carousel-caption-color: #fff;
//== Close
//
//##
@close-font-weight: bold;
@close-color: #fff;
@close-text-shadow: 0 1px 0 #fff;
//== Code
//
//##
@code-color: #c7254e;
@code-bg: #f9f2f4;
@kbd-color: #fff;
@kbd-bg: #333;
@pre-bg: #f5f5f5;
@pre-color: @gray-dark;
@pre-border-color: #ccc;
@pre-scrollable-max-height: 340px;
//== Type
//
//##
//** Horizontal offset for forms and lists.
@component-offset-horizontal: 180px;
//** Text muted color
@text-muted: @gray-light;
//** Abbreviations and acronyms border color
@abbr-border-color: @gray-light;
//** Headings small color
@headings-small-color: @gray-light;
//** Blockquote small color
@blockquote-small-color: @gray-light;
//** Blockquote font size
@blockquote-font-size: (@font-size-base * 1.25);
//** Blockquote border color
@blockquote-border-color: @gray-lighter;
//** Page header border color
@page-header-border-color: @gray-lighter;
//** Width of horizontal description list titles
@dl-horizontal-offset: @component-offset-horizontal;
//** Point at which .dl-horizontal becomes horizontal
@dl-horizontal-breakpoint: @grid-float-breakpoint;
//** Horizontal line color.
@hr-border: @gray-lighter;

File diff suppressed because it is too large Load Diff

119
index.php
View File

@ -47,12 +47,12 @@ function populateA(){
var img_router_back = document.getElementById("img_router_back"); var img_router_back = document.getElementById("img_router_back");
s2.innerHTML = ""; s2.innerHTML = "";
EOT; EOT;
for( $i=0; $i<count($hersteller); $i++) { for( $i=0; $i<$anzahl_hersteller; $i++) {
echo("\n if(s1.value == \"".$hersteller[$i]."\"){\n"); echo("\n if(s1.value == \"".$hersteller[$i]['name']."\"){\n");
echo(" var optionArray = [\"|Modell auswählen\""); echo(" var optionArray = [\"|Modell auswählen\"");
$j=0; $j=0;
while( $j<count($router) ) { while( $j<count($router) ) {
if($router[$j]->hersteller == $hersteller[$i]) { if($router[$j]->hersteller == $hersteller[$i]['name']) {
echo(",\"".$router[$j]->modell."|".$router[$j]->modell."\""); echo(",\"".$router[$j]->modell."|".$router[$j]->modell."\"");
if( $j<count($router)-1 ) { if( $j<count($router)-1 ) {
while($router[$j]->modell == $router[$j+1]->modell) { while($router[$j]->modell == $router[$j+1]->modell) {
@ -106,11 +106,12 @@ function populateB(){
var img_router_front = document.getElementById("img_router_front"); var img_router_front = document.getElementById("img_router_front");
var img_router_back = document.getElementById("img_router_back"); var img_router_back = document.getElementById("img_router_back");
s2.innerHTML = ""; s2.innerHTML = "";
switch(s1.value){\n
EOT; EOT;
$i=0; $i=0;
while( $i<count($router) ) { while( $i<count($router) ) {
echo("\n if(s1.value == \"".$router[$i]->modell."\"){\n"); echo(" case \"".$router[$i]->modell."\":\n");
echo(" var optionArray = [\"|Version auswählen\""); echo(" var optionArray = [\"|Version auswählen\"");
echo(",\"".$i."|".$router[$i]->version."\""); echo(",\"".$i."|".$router[$i]->version."\"");
if( $i<count($router)-1 ) { if( $i<count($router)-1 ) {
while($router[$i]->modell == $router[$i+1]->modell) { while($router[$i]->modell == $router[$i+1]->modell) {
@ -123,10 +124,13 @@ EOT;
} }
} }
echo("];\n"); echo("];\n");
echo(" }\n"); echo(" break;\n");
$i++; $i++;
} }
echo <<<EOT echo <<<EOT
default:
break;
}
for(var option in optionArray){ for(var option in optionArray){
var pair = optionArray[option].split("|"); var pair = optionArray[option].split("|");
var newOption = document.createElement("option"); var newOption = document.createElement("option");
@ -159,13 +163,14 @@ function populateC(){
var img_router_front = document.getElementById("img_router_front"); var img_router_front = document.getElementById("img_router_front");
var img_router_back = document.getElementById("img_router_back"); var img_router_back = document.getElementById("img_router_back");
s2.innerHTML = ""; s2.innerHTML = "";
switch(s1.value){\n
EOT; EOT;
$i=0; $i=0;
while( $i<count($router) ) { while( $i<count($router) ) {
echo("\n if(s1.value == \"".$i."\"){\n"); echo(" case \"".$i."\":\n");
echo(" var newImageFront = \"".$router[$i]->imagefront."\";\n"); echo(" var newImageFront = \"".$router[$i]->imagefront."\";\n");
echo(" var newImageBack = \"".$router[$i]->imageback."\";\n"); echo(" var newImageBack = \"".$router[$i]->imageback."\";\n");
echo(" var optionArray = [\"|Erstinstallation?\""); echo(" var optionArray = [\"|Erstinstallation?\"");
if( ($router[$i]->betafactory == 1) || ($router[$i]->brokenfactory == 1) || ($router[$i]->experimentalfactory == 1) || ($router[$i]->stablefactory == 1) ) { if( ($router[$i]->betafactory == 1) || ($router[$i]->brokenfactory == 1) || ($router[$i]->experimentalfactory == 1) || ($router[$i]->stablefactory == 1) ) {
echo(",\"".$i."J|Ja\""); echo(",\"".$i."J|Ja\"");
} }
@ -173,10 +178,13 @@ EOT;
echo(",\"".$i."N|Nein\""); echo(",\"".$i."N|Nein\"");
} }
echo("];\n"); echo("];\n");
echo(" }\n"); echo(" break;\n");
$i++; $i++;
} }
echo <<<EOT echo <<<EOT
default:
break;
}
for(var option in optionArray){ for(var option in optionArray){
var pair = optionArray[option].split("|"); var pair = optionArray[option].split("|");
var newOption = document.createElement("option"); var newOption = document.createElement("option");
@ -203,11 +211,12 @@ function populateD(){
var s2 = document.getElementById("fw-dl-5"); var s2 = document.getElementById("fw-dl-5");
var s6 = document.getElementById("fw-dl-6"); var s6 = document.getElementById("fw-dl-6");
s2.innerHTML = ""; s2.innerHTML = "";
switch(s1.value){\n
EOT; EOT;
$i=0; $i=0;
while( $i<count($router) ) { while( $i<count($router) ) {
echo("\n if(s1.value == \"".$i."J\"){\n"); echo(" case \"".$i."J\":\n");
echo(" var optionArray = [\"|Entwicklungsstadium?\""); echo(" var optionArray = [\"|Entwicklungsstadium?\"");
if( ($router[$i]->betafactory == 1) ) { if( ($router[$i]->betafactory == 1) ) {
echo(",\"".$i."Jbeta|Beta\""); echo(",\"".$i."Jbeta|Beta\"");
} }
@ -221,9 +230,9 @@ EOT;
echo(",\"".$i."Jstable|Stable\""); echo(",\"".$i."Jstable|Stable\"");
} }
echo("];\n"); echo("];\n");
echo(" }\n"); echo(" break\n");
echo("\n if(s1.value == \"".$i."N\"){\n"); echo(" case \"".$i."N\":\n");
echo(" var optionArray = [\"|Entwicklungsstadium?\""); echo(" var optionArray = [\"|Entwicklungsstadium?\"");
if( ($router[$i]->betasysupgrade == 1) ) { if( ($router[$i]->betasysupgrade == 1) ) {
echo(",\"".$i."Nbeta|Beta\""); echo(",\"".$i."Nbeta|Beta\"");
} }
@ -237,10 +246,13 @@ EOT;
echo(",\"".$i."Nstable|Stable\""); echo(",\"".$i."Nstable|Stable\"");
} }
echo("];\n"); echo("];\n");
echo(" }\n"); echo(" break\n");
$i++; $i++;
} }
echo <<<EOT echo <<<EOT
default:
break;
}
for(var option in optionArray){ for(var option in optionArray){
var pair = optionArray[option].split("|"); var pair = optionArray[option].split("|");
var newOption = document.createElement("option"); var newOption = document.createElement("option");
@ -261,60 +273,64 @@ function populateE(){
var s1 = document.getElementById("fw-dl-5"); var s1 = document.getElementById("fw-dl-5");
var s2 = document.getElementById("fw-dl-6"); var s2 = document.getElementById("fw-dl-6");
s2.innerHTML = ""; s2.innerHTML = "";
switch(s1.value){\n
EOT; EOT;
$i=0; $i=0;
while( $i<count($router) ) { while( $i<count($router) ) {
if( ($router[$i]->betafactory == 1) ) { if( ($router[$i]->betafactory == 1) ) {
echo("\n if(s1.value == \"".$i."Jbeta\"){\n"); echo(" case \"".$i."Jbeta\":\n");
echo(" var link = \"".$router[$i]->betafactorylink."\";\n"); echo(" var link = \"".$router[$i]->betafactorylink."\";\n");
echo(" var linkclass = \" btn-warning\";\n"); echo(" var linkclass = \" btn-warning\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->brokenfactory == 1) ) { if( ($router[$i]->brokenfactory == 1) ) {
echo("\n if(s1.value == \"".$i."Jbroken\"){\n"); echo(" case \"".$i."Jbroken\":\n");
echo(" var link = \"".$router[$i]->brokenfactorylink."\";\n"); echo(" var link = \"".$router[$i]->brokenfactorylink."\";\n");
echo(" var linkclass = \" btn-danger\";\n"); echo(" var linkclass = \" btn-danger\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->experimentalfactory == 1) ) { if( ($router[$i]->experimentalfactory == 1) ) {
echo("\n if(s1.value == \"".$i."Jexp\"){\n"); echo(" case \"".$i."Jexp\":\n");
echo(" var link = \"".$router[$i]->experimentalfactorylink."\";\n"); echo(" var link = \"".$router[$i]->experimentalfactorylink."\";\n");
echo(" var linkclass = \" btn-warning\";\n"); echo(" var linkclass = \" btn-warning\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->stablefactory == 1) ) { if( ($router[$i]->stablefactory == 1) ) {
echo("\n if(s1.value == \"".$i."Jstable\"){\n"); echo(" case \"".$i."Jstable\":\n");
echo(" var link = \"".$router[$i]->stablefactorylink."\";\n"); echo(" var link = \"".$router[$i]->stablefactorylink."\";\n");
echo(" var linkclass = \" btn-success\";\n"); echo(" var linkclass = \" btn-success\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->betasysupgrade == 1) ) { if( ($router[$i]->betasysupgrade == 1) ) {
echo("\n if(s1.value == \"".$i."Nbeta\"){\n"); echo(" case \"".$i."Nbeta\":\n");
echo(" var link = \"".$router[$i]->betasysupgradelink."\";\n"); echo(" var link = \"".$router[$i]->betasysupgradelink."\";\n");
echo(" var linkclass = \" btn-warning\";\n"); echo(" var linkclass = \" btn-warning\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->brokensysupgrade == 1) ) { if( ($router[$i]->brokensysupgrade == 1) ) {
echo("\n if(s1.value == \"".$i."Nbroken\"){\n"); echo(" case \"".$i."Nbroken\":\n");
echo(" var link = \"".$router[$i]->brokensysupgradelink."\";\n"); echo(" var link = \"".$router[$i]->brokensysupgradelink."\";\n");
echo(" var linkclass = \" btn-danger\";\n"); echo(" var linkclass = \" btn-danger\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->experimentalsysupgrade == 1) ) { if( ($router[$i]->experimentalsysupgrade == 1) ) {
echo("\n if(s1.value == \"".$i."Nexp\"){\n"); echo(" case \"".$i."Nexp\":\n");
echo(" var link = \"".$router[$i]->experimentalsysupgradelink."\";\n"); echo(" var link = \"".$router[$i]->experimentalsysupgradelink."\";\n");
echo(" var linkclass = \" btn-warning\";\n"); echo(" var linkclass = \" btn-warning\";\n");
echo(" }\n"); echo(" break;\n");
} }
if( ($router[$i]->stablesysupgrade == 1) ) { if( ($router[$i]->stablesysupgrade == 1) ) {
echo("\n if(s1.value == \"".$i."Nstable\"){\n"); echo(" case \"".$i."Nstable\":\n");
echo(" var link = \"".$router[$i]->stablesysupgradelink."\";\n"); echo(" var link = \"".$router[$i]->stablesysupgradelink."\";\n");
echo(" var linkclass = \" btn-success\";\n"); echo(" var linkclass = \" btn-success\";\n");
echo(" }\n"); echo(" break;\n");
} }
$i++; $i++;
} }
echo <<<EOT echo <<<EOT
default:
break;
}
s2.href = link; s2.href = link;
s2.className = s2.className.replace( /(?:^|\s)disabled(?!\S)/g , '' ); s2.className = s2.className.replace( /(?:^|\s)disabled(?!\S)/g , '' );
s2.className = s2.className.replace( /(?:^|\s)btn-primary(?!\S)/g , '' ); s2.className = s2.className.replace( /(?:^|\s)btn-primary(?!\S)/g , '' );
@ -374,8 +390,8 @@ EOT;
<select id="fw-dl-1" name="fw-dl-1" onchange="populateA()"> <select id="fw-dl-1" name="fw-dl-1" onchange="populateA()">
<option value="">Hersteller auswählen</option> <option value="">Hersteller auswählen</option>
EOT; EOT;
for( $i=0; $i<count($hersteller); $i++) { for( $i=0; $i<$anzahl_hersteller; $i++) {
echo("<option value=\"".$hersteller[$i]."\">".$hersteller[$i]."</option>"); echo("<option value=\"".$hersteller[$i]['name']."\">".$hersteller[$i]['name']."</option>");
} }
echo <<<EOT echo <<<EOT
</select> </select>
@ -463,7 +479,6 @@ EOT;
</div> </div>
<script src="js/jquery-2.2.3.min.js"></script> <script src="js/jquery-2.2.3.min.js"></script>
<script src="js/bootstrap.min.js"></script> <script src="js/bootstrap.min.js"></script>
<script src="js/validator.min.js"></script>
<!-- <script src="js/scripts.js"></script> --> <!-- <script src="js/scripts.js"></script> -->
</body> </body>
</html> </html>

2363
js/bootstrap.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +0,0 @@
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')

9
js/validator.min.js vendored

File diff suppressed because one or more lines are too long

114
readme.md
View File

@ -1,48 +1,66 @@
Freifunk Hennef Firmware Downloader Freifunk Hennef Firmware Downloader
=================================== ===================================
Beschreibung Beschreibung
------------ ------------
Der Freifunk Hennef Firmware Downloader soll es Laien ermöglichen schneller und sicherer die zu ihrem Router passende Firmware zu finden. Der Freifunker kann nacheinander aus automatisch generierten Listen seinen Router auswählen: Hersteller -> Modell -> Version und dann festlegen ob es eine Erstinstallation ist oder nicht, sowie am Ende wählen welches Entwicklungsstadium die Firmware haben soll. Dabei wird automatisch gewarnt (Download Button verändert die Farbe) falls nicht "stable" ausgewählt wird. Zusätzlich werden etliche der Router auch als Grafik (Front & Back Ansicht) gezeigt, so dass der Freifunker auf den ersten Blick erkennen kann wenn er den falschen Router ausgewählt hat. Der Freifunk Hennef Firmware Downloader soll es Laien ermöglichen schneller und sicherer die zu ihrem Router passende Firmware zu finden. Der Freifunker kann nacheinander aus automatisch generierten Listen seinen Router auswählen: Hersteller -> Modell -> Version und dann festlegen ob es eine Erstinstallation ist oder nicht, sowie am Ende wählen welches Entwicklungsstadium die Firmware haben soll. Dabei wird automatisch gewarnt (Download Button verändert die Farbe) falls nicht "stable" ausgewählt wird. Zusätzlich werden etliche der Router auch als Grafik (Front & Back Ansicht) gezeigt, so dass der Freifunker auf den ersten Blick erkennen kann wenn er den falschen Router ausgewählt hat.
Technik Technik
------- -------
Der Freifunk Hennef Firmware Downloader scannt das in der config.inc.php angegebene Verzeichnis auf Firmwares in den Unterverzeichnissen (beta/broken/experimental/stable) und dort in (stable/sysupgrade). Aus dem Ergebnis baut das PHP Script ein interaktives Javascript für die Auswahl und verwendet dabei Bootstrap für das Layout. Der Freifunk Hennef Firmware Downloader scannt das in der config.inc.php angegebene Verzeichnis auf Firmwares in den Unterverzeichnissen (beta/broken/experimental/stable) und dort in (stable/sysupgrade). Aus dem Ergebnis baut das PHP Script ein interaktives Javascript für die Auswahl und verwendet dabei Bootstrap für das Layout.
Bisher werden Router der folgenden Hersteller automatisch erkannt: Bisher werden Router der folgenden Hersteller automatisch erkannt:
- Alfa - 8devices
- Allnet - Alfa
- Buffalo - Allnet
- D-Link - Buffalo
- GL-Inet - D-Link
- LeMaker - GL-Inet
- Linksys - LeMaker
- Netgear - Linksys
- Onion - Meraki
- Raspberry Pi - Netgear
- TP-Link - Onion
- Ubiquiti - Raspberry Pi
- Western Digital - TP-Link
- x86 - Ubiquiti
- Western Digital
Soll eine Firmware für Router von anderen Herstellern angeboten werden muss erst das Script geändert werden! - x86
Bilder Soll eine Firmware für Router von anderen Herstellern angeboten werden muss erst das Script geändert werden!
------
Bilder
Die Bilder der Router kommen von Daniel Krah und sind lizensiert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz (CC-BY NC SA). ------
Code Die Bilder der Router kommen von Daniel Krah und sind lizensiert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz (CC-BY NC SA).
----
Installation
Der Code ist grausam und generiert einen Haufen Variablen/Arrays in PHP aus denen dann "on the fly" ein Javascript Code erzeugt wird. Das geht sicher besser (JSON erzeugen in PHP und wieder ins Javascript einladen) und Fehlertoleranter - aber es ist die erste Version, die erstmal "läuft". Mittlerweile existiert wenigstens eine ffrouter Klasse, die über die ganzen Eigenschaften (Hersteller, Modell, etc.) verfügt und der Großteil des PHP Codes ist ausgelagert. ------------
Lizenz Den Freifunk Hennef Firmware Downloader in ein eigenes Unterverzeichnis des Webservers packen, auf dem auch die Firmwares liegen. In der config.inc.php werden dann diverse Variablen gesetzt:
------
$firmware_download_path = Pfad zum Hauptverzeichnis der Firmware
@author Caspar Armster $entwicklung = Entwicklungsstufen der Firmware (beta/broken/experimental/stable) - (sollte man in Ruhe lassen normalerweise)
@copyright 2016 Caspar Armster, Freifunk Hennef $installation = Art der Installation (factory/sysupgrade) - (sollte man in Ruhe lassen normalerweise)
@license Licensed under GPLv3 $anzahl_hersteller = Anzahl der supporteten Hersteller
$hersteller = Array mit Informationen zu den Herstellern
-> name = Name des Herstellers
-> filename = Name des Herstellers wie er in den Dateinamen der Firmware auftaucht
-> offset_modell = Offset für das Parsen des Modells im Dateinamen der Firmware
-> offset_version = Offset für das Parsen der Version im Dateinamen der Firmware
$offset_sysupgrade = Offset für "-sysupgrade" im Dateinamen der Firmware
Code
----
Der Code ist nun halbwegs aufgeräumt und generiert aus dem PHP heraus "on the fly" einen Javascript Code. Das geht sicher noch besser (JSON erzeugen in PHP und wieder ins Javascript einladen), aber so läuft es erstmal. Mittlerweile existiert eine ffrouter Klasse, die über die ganzen Eigenschaften (Hersteller, Modell, etc.) verfügt und der Großteil des PHP Codes ist ausgelagert.
Lizenz
------
author Caspar Armster
copyright 2016 Caspar Armster, Freifunk Hennef
license Licensed under GPLv3