r20151212
Signed-off-by: Flashwave <me@flash.moe>
This commit is contained in:
parent
cf33d8a059
commit
7da4685d89
53 changed files with 394 additions and 20548 deletions
|
@ -41,7 +41,7 @@ class Permissions
|
||||||
'CHANGE_PASSWORD' => 16384, // Can change their password
|
'CHANGE_PASSWORD' => 16384, // Can change their password
|
||||||
'ALTER_RANKS' => 32768, // Can change their ranks
|
'ALTER_RANKS' => 32768, // Can change their ranks
|
||||||
'MANAGE_SESSIONS' => 65536, // Can manage their sessions
|
'MANAGE_SESSIONS' => 65536, // Can manage their sessions
|
||||||
'CREATE_REGKEYS' => 131072, // Can create registration keys
|
'CHANGE_SIGNATURE' => 131072, // User can change their signature
|
||||||
'DEACTIVATE_ACCOUNT' => 262144, // Can deactivate their account
|
'DEACTIVATE_ACCOUNT' => 262144, // Can deactivate their account
|
||||||
'VIEW_PROFILE_DATA' => 524288, // Can view other's profile data
|
'VIEW_PROFILE_DATA' => 524288, // Can view other's profile data
|
||||||
'MANAGE_FRIENDS' => 1048576, // Can manage friends (add/remove)
|
'MANAGE_FRIENDS' => 1048576, // Can manage friends (add/remove)
|
||||||
|
@ -55,7 +55,6 @@ class Permissions
|
||||||
'CREATE_COMMENTS' => 268435456, // User can make comments
|
'CREATE_COMMENTS' => 268435456, // User can make comments
|
||||||
'DELETE_COMMENTS' => 536870912, // User can delete own comments
|
'DELETE_COMMENTS' => 536870912, // User can delete own comments
|
||||||
'VOTE_COMMENTS' => 1073741824, // User can vote on comments
|
'VOTE_COMMENTS' => 1073741824, // User can vote on comments
|
||||||
'CHANGE_SIGNATURE' => 2147483648, // User can vote on comments
|
|
||||||
],
|
],
|
||||||
|
|
||||||
// Site management permissions
|
// Site management permissions
|
||||||
|
|
|
@ -1,587 +0,0 @@
|
||||||
/*!
|
|
||||||
* Bootstrap v3.3.5 (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 */
|
|
6800
public/content/data/broomcloset/css/bootstrap.css
vendored
6800
public/content/data/broomcloset/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,9 +0,0 @@
|
||||||
/*
|
|
||||||
* Broomcloset bootstrap extension thing
|
|
||||||
* By Flashwave <https://flash.moe>
|
|
||||||
*/
|
|
||||||
|
|
||||||
.main {
|
|
||||||
margin: -40px auto 0;
|
|
||||||
max-width: 1280px;
|
|
||||||
}
|
|
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
Binary file not shown.
Before Width: | Height: | Size: 27 KiB |
2363
public/content/data/broomcloset/js/bootstrap.js
vendored
2363
public/content/data/broomcloset/js/bootstrap.js
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,114 +0,0 @@
|
||||||
/*
|
|
||||||
* Broom Closet
|
|
||||||
*/
|
|
||||||
@charset "utf-8";
|
|
||||||
|
|
||||||
/* Standard Elements */
|
|
||||||
* {
|
|
||||||
/* Reset margin and padding */
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
html {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
body {
|
|
||||||
font: 12px/20px "Segoe UI", sans-serif;
|
|
||||||
background: #EEE;
|
|
||||||
color: #000;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
min-height: 100%;
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clear {
|
|
||||||
clear: both !important;
|
|
||||||
float: none !important;
|
|
||||||
}
|
|
||||||
.hidden {
|
|
||||||
display: none !important;
|
|
||||||
visibility: hidden !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #22E;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
a:hover {
|
|
||||||
color: #22E;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
a:active {
|
|
||||||
color: #E22;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Page header */
|
|
||||||
.header {
|
|
||||||
background: #222;
|
|
||||||
color: #FFF;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
box-shadow: 0 0 1em #222;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header > .logo {
|
|
||||||
font-size: 3em;
|
|
||||||
line-height: 1.7em;
|
|
||||||
margin: 0 20px;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header > .logo > a {
|
|
||||||
color: inherit !important;
|
|
||||||
text-decoration: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header > .nav {
|
|
||||||
padding: 0 0 10px 10px;
|
|
||||||
font-size: 1.3em;
|
|
||||||
line-height: 1.4em;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header > .nav > div > * {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.header > .nav > div > div {
|
|
||||||
min-width: 160px;
|
|
||||||
}
|
|
||||||
.header > .nav > div > a {
|
|
||||||
color: #DDD;
|
|
||||||
text-decoration: none !important;
|
|
||||||
padding: 0 5px 2px;
|
|
||||||
transition: .2s;
|
|
||||||
}
|
|
||||||
.header > .nav > div > a:hover {
|
|
||||||
background: #333;
|
|
||||||
}
|
|
||||||
.header > .nav > div > a:active {
|
|
||||||
text-shadow: 0 0 1em #F1F1F1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Page footer */
|
|
||||||
.footer {
|
|
||||||
background: #222;
|
|
||||||
text-align: center;
|
|
||||||
padding-top: 1px;
|
|
||||||
margin-top: 10px;
|
|
||||||
box-shadow: 0 0 1em #222;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Page content */
|
|
||||||
#contentwrapper {
|
|
||||||
padding-bottom: 50px;
|
|
||||||
}
|
|
|
@ -20,7 +20,7 @@ function notifyUI(content) {
|
||||||
alert.className = 'notification-enter';
|
alert.className = 'notification-enter';
|
||||||
alert.id = id;
|
alert.id = id;
|
||||||
// Add the icon
|
// Add the icon
|
||||||
if ((typeof content.img).toLowerCase() === 'undefined' && content.img == null && !(content.img.length > 1)) {
|
if ((typeof content.img).toLowerCase() === 'undefined' || content.img == null || content.img.length < 2) {
|
||||||
aIconCont = document.createElement('div');
|
aIconCont = document.createElement('div');
|
||||||
aIconCont.className = 'font-icon fa fa-info fa-4x';
|
aIconCont.className = 'font-icon fa fa-info fa-4x';
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ function notifyUI(content) {
|
||||||
else {
|
else {
|
||||||
aIconCont = document.createElement('img');
|
aIconCont = document.createElement('img');
|
||||||
aIconCont.alt = id;
|
aIconCont.alt = id;
|
||||||
aIconCont.img = content.img;
|
aIconCont.src = content.img;
|
||||||
}
|
}
|
||||||
aIcon.appendChild(aIconCont);
|
aIcon.appendChild(aIconCont);
|
||||||
aIcon.className = 'notification-icon';
|
aIcon.className = 'notification-icon';
|
||||||
|
@ -67,8 +67,8 @@ function notifyUI(content) {
|
||||||
// Assign attribs
|
// Assign attribs
|
||||||
mp3.type = 'audio/mp3';
|
mp3.type = 'audio/mp3';
|
||||||
ogg.type = 'audio/ogg';
|
ogg.type = 'audio/ogg';
|
||||||
mp3.src = sakuraVars.content_path + '/sounds/notify.mp3';
|
mp3.src = sakuraVars.content + '/sounds/notify.mp3';
|
||||||
ogg.src = sakuraVars.content_path + '/sounds/notify.ogg';
|
ogg.src = sakuraVars.content + '/sounds/notify.ogg';
|
||||||
// Append
|
// Append
|
||||||
sound.appendChild(mp3);
|
sound.appendChild(mp3);
|
||||||
sound.appendChild(ogg);
|
sound.appendChild(ogg);
|
||||||
|
|
|
@ -35,7 +35,7 @@ function notifyUI(content: Notification): void {
|
||||||
alert.id = id;
|
alert.id = id;
|
||||||
|
|
||||||
// Add the icon
|
// Add the icon
|
||||||
if ((typeof content.img).toLowerCase() === 'undefined' && content.img == null && !(content.img.length > 1)) {
|
if ((typeof content.img).toLowerCase() === 'undefined' || content.img == null || content.img.length < 2) {
|
||||||
aIconCont = document.createElement('div');
|
aIconCont = document.createElement('div');
|
||||||
aIconCont.className = 'font-icon fa fa-info fa-4x';
|
aIconCont.className = 'font-icon fa fa-info fa-4x';
|
||||||
} else if (content.img.substr(0, 5) == 'FONT:') {
|
} else if (content.img.substr(0, 5) == 'FONT:') {
|
||||||
|
@ -44,7 +44,7 @@ function notifyUI(content: Notification): void {
|
||||||
} else {
|
} else {
|
||||||
aIconCont = document.createElement('img');
|
aIconCont = document.createElement('img');
|
||||||
aIconCont.alt = id;
|
aIconCont.alt = id;
|
||||||
aIconCont.img = content.img;
|
aIconCont.src = content.img;
|
||||||
}
|
}
|
||||||
|
|
||||||
aIcon.appendChild(aIconCont);
|
aIcon.appendChild(aIconCont);
|
||||||
|
@ -88,8 +88,8 @@ function notifyUI(content: Notification): void {
|
||||||
// Assign attribs
|
// Assign attribs
|
||||||
mp3.type = 'audio/mp3';
|
mp3.type = 'audio/mp3';
|
||||||
ogg.type = 'audio/ogg';
|
ogg.type = 'audio/ogg';
|
||||||
mp3.src = sakuraVars.content_path + '/sounds/notify.mp3';
|
mp3.src = sakuraVars.content + '/sounds/notify.mp3';
|
||||||
ogg.src = sakuraVars.content_path + '/sounds/notify.ogg';
|
ogg.src = sakuraVars.content + '/sounds/notify.ogg';
|
||||||
|
|
||||||
// Append
|
// Append
|
||||||
sound.appendChild(mp3);
|
sound.appendChild(mp3);
|
||||||
|
|
5
public/content/libraries/d3.js
vendored
Normal file
5
public/content/libraries/d3.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10351
public/content/libraries/jquery.js
vendored
10351
public/content/libraries/jquery.js
vendored
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -12,78 +12,305 @@ define('SAKURA_MANAGE', true);
|
||||||
// Include components
|
// Include components
|
||||||
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
||||||
|
|
||||||
// Make sure user has the permissions to view this
|
|
||||||
if (!$currentUser->checkPermission('MANAGE', 'USE_MANAGE')) {
|
|
||||||
header('Location: /');
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modes
|
|
||||||
$modes = [
|
|
||||||
'dashboard' => [
|
|
||||||
'index',
|
|
||||||
],
|
|
||||||
'configuration' => [
|
|
||||||
'general',
|
|
||||||
'security',
|
|
||||||
'authentication',
|
|
||||||
'appearance',
|
|
||||||
'performance',
|
|
||||||
],
|
|
||||||
'logs' => [
|
|
||||||
'errors',
|
|
||||||
],
|
|
||||||
'error' => [
|
|
||||||
'index',
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
// Select mode
|
|
||||||
$category = isset($_GET['cat'])
|
|
||||||
? (
|
|
||||||
array_key_exists($_GET['cat'], $modes) ?
|
|
||||||
$_GET['cat'] :
|
|
||||||
'error'
|
|
||||||
)
|
|
||||||
: key($modes);
|
|
||||||
$mode = isset($_GET['mode'])
|
|
||||||
? (
|
|
||||||
in_array($_GET['mode'], $modes[$category]) ?
|
|
||||||
$_GET['mode'] :
|
|
||||||
'error'
|
|
||||||
)
|
|
||||||
: $modes[$category][0];
|
|
||||||
|
|
||||||
// Override category if mode is error
|
|
||||||
if ($mode == 'error') {
|
|
||||||
$category = 'error';
|
|
||||||
$mode = $modes[$category][0];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set page data
|
|
||||||
$renderData = array_merge($renderData, [
|
|
||||||
'manage' => [
|
|
||||||
'category' => $category,
|
|
||||||
'mode' => $mode,
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Add special variables
|
|
||||||
switch ($category . '.' . $mode) {
|
|
||||||
case 'logs.errors':
|
|
||||||
$errorLog = Database::fetch('error_log', true, null, ['error_id', true]);
|
|
||||||
$renderData = array_merge($renderData, ['errors' => $errorLog]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialise templating engine
|
// Initialise templating engine
|
||||||
$template = new Template();
|
$template = new Template();
|
||||||
|
|
||||||
// Change templating engine
|
// Change templating engine
|
||||||
$template->setTemplate($templateName);
|
$template->setTemplate($templateName);
|
||||||
|
|
||||||
|
// Make sure user has the permissions to view this
|
||||||
|
if (!$currentUser->checkPermission('MANAGE', 'USE_MANAGE')) {
|
||||||
|
// Set parse variables
|
||||||
|
$template->setVariables($renderData);
|
||||||
|
|
||||||
|
// Print page contents
|
||||||
|
echo $template->render('global/restricted');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Modes
|
||||||
|
$pages = [
|
||||||
|
'general' => [
|
||||||
|
'title' => 'General',
|
||||||
|
'modes' => [
|
||||||
|
'dashboard' => [
|
||||||
|
'title' => 'Dashboard',
|
||||||
|
'description' => [
|
||||||
|
'Welcome to the Broomcloset! Here\'s a quick overview of the site.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'info' => [
|
||||||
|
'title' => 'Info pages',
|
||||||
|
'description' => [
|
||||||
|
'Manage and edit the info pages.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'config' => [
|
||||||
|
'title' => 'Configuration',
|
||||||
|
'modes' => [
|
||||||
|
'general' => [
|
||||||
|
'title' => 'General',
|
||||||
|
'description' => [
|
||||||
|
'Manages the appearance of the site and most other options that don\'t need their own category.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'uploads' => [
|
||||||
|
'title' => 'Uploads',
|
||||||
|
'description' => [
|
||||||
|
'Settings regarding uploads like avatars and backgrounds.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'premium' => [
|
||||||
|
'title' => 'Premium',
|
||||||
|
'description' => [
|
||||||
|
'Alters the way the premium system works.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'user' => [
|
||||||
|
'title' => 'User',
|
||||||
|
'description' => [
|
||||||
|
'Settings regarding users such as registration.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'mail' => [
|
||||||
|
'title' => 'Mail',
|
||||||
|
'description' => [
|
||||||
|
'How will Sakura send e-mails.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'forums' => [
|
||||||
|
'title' => 'Forums',
|
||||||
|
'modes' => [
|
||||||
|
'manage' => [
|
||||||
|
'title' => 'Manage',
|
||||||
|
'description' => [
|
||||||
|
'Change the forums.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'settings' => [
|
||||||
|
'title' => 'Settings',
|
||||||
|
'description' => [
|
||||||
|
'Alter settings specific to the forum.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'comments' => [
|
||||||
|
'title' => 'Comments',
|
||||||
|
'modes' => [
|
||||||
|
'manage' => [
|
||||||
|
'title' => 'Manage',
|
||||||
|
'description' => [
|
||||||
|
'View all the comment categories.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'users' => [
|
||||||
|
'title' => 'Users',
|
||||||
|
'modes' => [
|
||||||
|
'manage-users' => [
|
||||||
|
'title' => 'Manage users',
|
||||||
|
'description' => [
|
||||||
|
'View and change users.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'manage-ranks' => [
|
||||||
|
'title' => 'Manage ranks',
|
||||||
|
'description' => [
|
||||||
|
'View and change ranks.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'profile-fields' => [
|
||||||
|
'title' => 'Profile fields',
|
||||||
|
'description' => [
|
||||||
|
'Manage the custom profile fields.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'option-fields' => [
|
||||||
|
'title' => 'Option fields',
|
||||||
|
'description' => [
|
||||||
|
'Manage the custom option fields.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'bans' => [
|
||||||
|
'title' => 'Bans',
|
||||||
|
'description' => [
|
||||||
|
'Banning users.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'warnings' => [
|
||||||
|
'title' => 'Warnings',
|
||||||
|
'description' => [
|
||||||
|
'Warn users.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'permissions' => [
|
||||||
|
'title' => 'Permissions',
|
||||||
|
'modes' => [
|
||||||
|
'site' => [
|
||||||
|
'title' => 'Manage site',
|
||||||
|
'description' => [
|
||||||
|
'Alter the global site perms.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'management' => [
|
||||||
|
'title' => 'Manage management',
|
||||||
|
'description' => [
|
||||||
|
'Alter the management/moderation perms.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'forum' => [
|
||||||
|
'title' => 'Manage forums',
|
||||||
|
'description' => [
|
||||||
|
'Alter the perms of the forums.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'logs' => [
|
||||||
|
'title' => 'Logs',
|
||||||
|
'modes' => [
|
||||||
|
'actions' => [
|
||||||
|
'title' => 'Actions',
|
||||||
|
'description' => [
|
||||||
|
'Viewing the global action logs.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'management' => [
|
||||||
|
'title' => 'Management',
|
||||||
|
'description' => [
|
||||||
|
'Viewing the management actions taken by staff.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
'errors' => [
|
||||||
|
'title' => 'Errors',
|
||||||
|
'description' => [
|
||||||
|
'Viewing the PHP error logs Sakura was able to log.',
|
||||||
|
],
|
||||||
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
||||||
|
'menu' => true,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Current settings page
|
||||||
|
$category = isset($_GET['cat']) ? (
|
||||||
|
array_key_exists($_GET['cat'], $pages) ? $_GET['cat'] : false
|
||||||
|
) : array_keys($pages)[0];
|
||||||
|
$mode = false;
|
||||||
|
|
||||||
|
// Only continue setting mode if $category is true
|
||||||
|
if ($category) {
|
||||||
|
$mode = isset($_GET['mode']) && $category ? (
|
||||||
|
array_key_exists($_GET['mode'], $pages[$category]['modes']) ? $_GET['mode'] : false
|
||||||
|
) : array_keys($pages[$category]['modes'])[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Not found
|
||||||
|
if (!$category
|
||||||
|
|| empty($category)
|
||||||
|
|| !$mode
|
||||||
|
|| empty($mode)
|
||||||
|
|| !$pages[$category]['modes'][$mode]['access']) {
|
||||||
|
header('HTTP/1.0 404 Not Found');
|
||||||
|
|
||||||
|
// Set parse variables
|
||||||
|
$template->setVariables($renderData);
|
||||||
|
|
||||||
|
// Print page contents
|
||||||
|
echo $template->render('global/notfound');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set templates directory
|
||||||
|
$renderData['templates'] = 'manage';
|
||||||
|
|
||||||
|
// Render data
|
||||||
|
$renderData['current'] = $category . '.' . $mode;
|
||||||
|
|
||||||
|
// Settings pages
|
||||||
|
$renderData['pages'] = $pages;
|
||||||
|
|
||||||
|
// Page data
|
||||||
|
$renderData['page'] = [
|
||||||
|
'category' => $pages[$category]['title'],
|
||||||
|
'mode' => $pages[$category]['modes'][$mode]['title'],
|
||||||
|
'description' => $pages[$category]['modes'][$mode]['description'],
|
||||||
|
];
|
||||||
|
|
||||||
|
// Add special variables
|
||||||
|
switch ($category . '.' . $mode) {
|
||||||
|
case 'general.dashboard':
|
||||||
|
$renderData = array_merge($renderData, [
|
||||||
|
'stats' => [
|
||||||
|
'postcount' => Database::count('posts')[0],
|
||||||
|
'threadcount' => Database::count('topics')[0],
|
||||||
|
'commentcount' => Database::count('comments')[0],
|
||||||
|
'userscount' => Database::count('users')[0],
|
||||||
|
'bancount' => Database::count('bans')[0],
|
||||||
|
'uploadcount' => count(glob(ROOT . Config::get('user_uploads') . '/*')) - 1,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'logs.errors':
|
||||||
|
$errorLog = Database::fetch('error_log', true, null, ['error_id', true]);
|
||||||
|
$renderData = array_merge($renderData, ['errors' => $errorLog]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// Set parse variables
|
// Set parse variables
|
||||||
$template->setVariables($renderData);
|
$template->setVariables($renderData);
|
||||||
|
|
||||||
// Print page contents
|
// Print page contents
|
||||||
echo $template->render('pages/' . $category . '/' . $mode);
|
echo $template->render('main/settings');
|
||||||
|
|
|
@ -1262,16 +1262,6 @@ if (Users::checkLogin()) {
|
||||||
'access' => $currentUser->checkPermission('SITE', 'MANAGE_SESSIONS'),
|
'access' => $currentUser->checkPermission('SITE', 'MANAGE_SESSIONS'),
|
||||||
'menu' => true,
|
'menu' => true,
|
||||||
],
|
],
|
||||||
'registrationkeys' => [
|
|
||||||
'title' => 'Registration Keys',
|
|
||||||
'description' => [
|
|
||||||
'Sometimes we activate the registration key system which means that users can only
|
|
||||||
register using your "referer" keys,this means we can keep unwanted people from registering.',
|
|
||||||
'Each user can generate 5 of these keys, bans and deactivates render these keys useless.',
|
|
||||||
],
|
|
||||||
'access' => $currentUser->checkPermission('SITE', 'CREATE_REGKEYS'),
|
|
||||||
'menu' => true,
|
|
||||||
],
|
|
||||||
'deactivate' => [
|
'deactivate' => [
|
||||||
'title' => 'Deactivate Account',
|
'title' => 'Deactivate Account',
|
||||||
'description' => [
|
'description' => [
|
||||||
|
@ -1313,6 +1303,9 @@ if (Users::checkLogin()) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set templates directory
|
||||||
|
$renderData['templates'] = 'settings';
|
||||||
|
|
||||||
// Render data
|
// Render data
|
||||||
$renderData['current'] = $category . '.' . $mode;
|
$renderData['current'] = $category . '.' . $mode;
|
||||||
|
|
||||||
|
|
13
sakura.php
13
sakura.php
|
@ -8,7 +8,7 @@
|
||||||
namespace Sakura;
|
namespace Sakura;
|
||||||
|
|
||||||
// Define Sakura version
|
// Define Sakura version
|
||||||
define('SAKURA_VERSION', '20151211');
|
define('SAKURA_VERSION', '20151212');
|
||||||
define('SAKURA_VLABEL', 'Eminence');
|
define('SAKURA_VLABEL', 'Eminence');
|
||||||
define('SAKURA_COLOUR', '#6C3082');
|
define('SAKURA_COLOUR', '#6C3082');
|
||||||
|
|
||||||
|
@ -111,13 +111,10 @@ $urls = new Urls();
|
||||||
|
|
||||||
// Prepare the name of the template to load (outside of SAKURA_NO_TPL because it's used in imageserve.php)
|
// Prepare the name of the template to load (outside of SAKURA_NO_TPL because it's used in imageserve.php)
|
||||||
$templateName =
|
$templateName =
|
||||||
defined('SAKURA_MANAGE') ?
|
!defined('SAKURA_MANAGE')
|
||||||
Config::get('manage_style') :
|
&& isset($currentUser->optionFields()['useMisaki'])
|
||||||
(
|
&& $currentUser->optionFields()['useMisaki'] ?
|
||||||
isset($currentUser->optionFields()['useMisaki']) && $currentUser->optionFields()['useMisaki'] ?
|
'misaki' : Config::get('site_style');
|
||||||
'misaki' :
|
|
||||||
Config::get('site_style')
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!defined('SAKURA_NO_TPL')) {
|
if (!defined('SAKURA_NO_TPL')) {
|
||||||
// Set base page rendering data
|
// Set base page rendering data
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<!-- META -->
|
|
||||||
<meta charset="{{ sakura.charset }}" />
|
|
||||||
<title>{% block title %}{{ sakura.siteName }}{% endblock %}</title>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
|
|
||||||
{% if page.redirect %}
|
|
||||||
<meta http-equiv="refresh" content="{{ page.redirectTimeout ? page.redirectTimeout : '3' }}; URL={{ page.redirect }}" />
|
|
||||||
{% endif %}
|
|
||||||
{{ block('meta') }}
|
|
||||||
<!-- CSS -->
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ sakura.resources }}/css/broomcloset.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ sakura.resources }}/css/bootstrap.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ sakura.resources }}/css/bootstrap-theme.css" />
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ sakura.contentPath }}/fonts/font-awesome/font.css" />
|
|
||||||
{{ block('css') }}
|
|
||||||
<!-- JS -->
|
|
||||||
<script type="text/javascript" charset="utf-8" src="{{ sakura.contentPath }}/libraries/jquery.js"></script>
|
|
||||||
<script type="text/javascript" charset="utf-8" src="{{ sakura.resources }}/js/bootstrap.js"></script>
|
|
||||||
{{ block('js') }}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<nav class="navbar navbar-inverse navbar-static-top">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="navbar-header">
|
|
||||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
|
||||||
<span class="sr-only">Toggle navigation</span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
<span class="icon-bar"></span>
|
|
||||||
</button>
|
|
||||||
<a class="navbar-brand" href="{{ urls.format('MANAGE_INDEX') }}">The Broomcloset</a>
|
|
||||||
</div>
|
|
||||||
<div id="navbar" class="navbar-collapse collapse">
|
|
||||||
<ul class="nav navbar-nav navbar-left">
|
|
||||||
<li{% if manage.category == 'dashboard' %} class="active"{% endif %}><a href="{{ urls.format('MANAGE_INDEX') }}">Dashboard</a></li>
|
|
||||||
<li{% if manage.category == 'news' %} class="active"{% endif %}><a href="{{ urls.format('MANAGE_CAT', ['news']) }}">News</a></li>
|
|
||||||
<li class="dropdown{% if manage.category == 'configuration' %} active{% endif %}">
|
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Configuration <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['configuration', 'general']) }}">General</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['configuration', 'security']) }}">Security</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['configuration', 'authentication']) }}">Authentication</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['configuration', 'appearance']) }}">Appearance</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['configuration', 'performance']) }}">Performance</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li{% if manage.category == 'reports' %} class="active"{% endif %}><a href="{{ urls.format('MANAGE_CAT', ['reports']) }}">Reports</a></li>
|
|
||||||
<li{% if manage.category == 'infopages' %} class="active"{% endif %}><a href="{{ urls.format('MANAGE_CAT', ['infopages']) }}">Info pages</a></li>
|
|
||||||
<li class="dropdown{% if manage.category == 'users' %} active{% endif %}">
|
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Users <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['users', 'manage']) }}">Manage users</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['users', 'ranks']) }}">Manage ranks</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['users', 'groups']) }}">Manage groups</a></li>
|
|
||||||
<li role="separator" class="divider"></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['users', 'warnings']) }}">Warnings</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['users', 'bans']) }}">Bans</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown{% if manage.category == 'forums' %} active{% endif %}">
|
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Forums <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['forums', 'manage']) }}">Manage forums</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['forums', 'moderate']) }}">Moderate forums</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown{% if manage.category == 'permissions' %} active{% endif %}">
|
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Permissions <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['permissions', 'global']) }}">Global permissions</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['permissions', 'forums']) }}">Forum permissions</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="dropdown{% if manage.category == 'logs' %} active{% endif %}">
|
|
||||||
<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Logs <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['logs', 'all']) }}">Full log</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['logs', 'management']) }}">Management logs</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['logs', 'errors']) }}">Error logs</a></li>
|
|
||||||
<li><a href="{{ urls.format('MANAGE_MODE', ['logs', 'user']) }}">User logs</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
|
||||||
<li class="dropdown">
|
|
||||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" style="color: {{ user.colour }};">{{ user.username }} <span class="caret"></span></a>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li><a href="{{ urls.format('USER_PROFILE', [user.id]) }}">View Profile</a></li>
|
|
||||||
<li><a href="{{ urls.format('SETTINGS_INDEX') }}">Site settings</a></li>
|
|
||||||
<li role="separator" class="divider"></li>
|
|
||||||
<li><a href="{{ urls.format('SITE_HOME') }}">Back to site</a></li>
|
|
||||||
<li><a href="{{ urls.format('USER_LOGOUT', [php.time, php.sessionid, urls.format('SITE_HOME')]) }}">Logout</a></li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li><a href="https://sakura.flash.moe/#r{{ sakura.versionInfo.version }}" style="color: {{ sakura.versionInfo.colour }};" title="{{ sakura.versionInfo.label }} {{ sakura.versionInfo.stable ? 'Stable' : 'Development' }}">Sakura r{{ sakura.versionInfo.version }}</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
<div class="container-fluid">
|
|
||||||
{{ block('content') }}
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,10 +0,0 @@
|
||||||
{% extends 'global/master.tpl' %}
|
|
||||||
|
|
||||||
{% block title %}Restricted{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="main">
|
|
||||||
<h1 class="page-header">Restricted</h1>
|
|
||||||
<p class="lead">You are not allowed to manage this site.</p>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,15 +0,0 @@
|
||||||
{% extends 'global/master.tpl' %}
|
|
||||||
|
|
||||||
{% block title %}Configuration{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="main">
|
|
||||||
<h1 class="page-header"><small>Configuration /</small> General</h1>
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">Windows XPs</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
and Windows XP Accessories
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,30 +0,0 @@
|
||||||
{% extends 'global/master.tpl' %}
|
|
||||||
|
|
||||||
{% block title %}Dashboard{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="main">
|
|
||||||
<h1 class="page-header">Dashboard <small>A quick overview of everything</small></h1>
|
|
||||||
<h3>Reports <small>The five newest unsolved reports</small></h3>
|
|
||||||
<table class="table table-striped table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Subject</th>
|
|
||||||
<th>User reported</th>
|
|
||||||
<th>Reporter</th>
|
|
||||||
<th>Report time</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>Faggot exists really</td>
|
|
||||||
<td>Nippon Nick
|
|
||||||
</td>
|
|
||||||
<td>Japan Joe</td>
|
|
||||||
<td>1969-69-69 69:69:69 JST</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<h3>Statistics <small>The site in numbers</small></h3>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,10 +0,0 @@
|
||||||
{% extends 'global/master.tpl' %}
|
|
||||||
|
|
||||||
{% block title %}Not found{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="main">
|
|
||||||
<h1 class="page-header">404 <small>Page not found</small></h1>
|
|
||||||
<p class="lead">The page you requested doesn't exist.</p>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,44 +0,0 @@
|
||||||
{% extends 'global/master.tpl' %}
|
|
||||||
|
|
||||||
{% block title %}Error Log{% endblock %}
|
|
||||||
|
|
||||||
{% block js %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
var backtraces = document.querySelectorAll('.backtrace');
|
|
||||||
for (var i in backtraces) {
|
|
||||||
backtraces[i].innerHTML = atob(backtraces[i].innerHTML);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="main">
|
|
||||||
<h1 class="page-header">Error Log <small>A log of server side errors that Sakura could catch</small></h1>
|
|
||||||
<table class="table table-striped table-bordered table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>ID</th>
|
|
||||||
<th>Occurred</th>
|
|
||||||
<th>Revision</th>
|
|
||||||
<th>Type</th>
|
|
||||||
<th>Line</th>
|
|
||||||
<th>String</th>
|
|
||||||
<th>File</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for error in errors %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ error.error_id }}</td>
|
|
||||||
<td>{{ error.error_timestamp }}</td>
|
|
||||||
<td>{{ error.error_revision }}</td>
|
|
||||||
<td>{{ error.error_type }}</td>
|
|
||||||
<td>{{ error.error_line }}</td>
|
|
||||||
<td>{{ error.error_string }}</td>
|
|
||||||
<td>{{ error.error_file }}</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
|
@ -1,14 +0,0 @@
|
||||||
; Sakura Template Configuration
|
|
||||||
|
|
||||||
[meta]
|
|
||||||
; Display name of the style, only used in the admin section of the management panel.
|
|
||||||
name = Broomcloset
|
|
||||||
; Author of this template.
|
|
||||||
author = Flashwave
|
|
||||||
; If you set a URL below your name becomes a clickable link in the management panel.
|
|
||||||
author_url = https://flash.moe
|
|
||||||
|
|
||||||
[manage]
|
|
||||||
; This defines whether the template is intended for the management panel.
|
|
||||||
; When it's incorrect Sakura will halt execution of the script.
|
|
||||||
mode = 1
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div>{{ category.title }}</div>
|
<div>{{ category.title }}</div>
|
||||||
{% for mname,mode in category.modes %}
|
{% for mname,mode in category.modes %}
|
||||||
{% if mode.access and mode.menu %}
|
{% if mode.access and mode.menu %}
|
||||||
<a href="{{ urls.format('SETTING_MODE', [catname, mname]) }}">{{ mode.title }}</a>
|
<a href="{{ urls.format(templates == 'settings' ? 'SETTING_MODE' : 'MANAGE_MODE', [catname, mname]) }}">{{ mode.title }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<div>{{ include(template_from_string(descline)) }}</div>
|
<div>{{ include(template_from_string(descline)) }}</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% include 'settings/' ~ current ~ '.tpl' %}
|
{% include templates ~ '/' ~ current ~ '.tpl' %}
|
||||||
</div>
|
</div>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
1
templates/yuuno/manage/comments.manage.tpl
Normal file
1
templates/yuuno/manage/comments.manage.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/config.general.tpl
Normal file
1
templates/yuuno/manage/config.general.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/config.mail.tpl
Normal file
1
templates/yuuno/manage/config.mail.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/config.premium.tpl
Normal file
1
templates/yuuno/manage/config.premium.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/config.uploads.tpl
Normal file
1
templates/yuuno/manage/config.uploads.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/config.user.tpl
Normal file
1
templates/yuuno/manage/config.user.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/forums.manage.tpl
Normal file
1
templates/yuuno/manage/forums.manage.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/forums.settings.tpl
Normal file
1
templates/yuuno/manage/forums.settings.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
57
templates/yuuno/manage/general.dashboard.tpl
Normal file
57
templates/yuuno/manage/general.dashboard.tpl
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
<h1 class="stylised">Statistics</h1>
|
||||||
|
<table class="settings-table">
|
||||||
|
<thead>
|
||||||
|
<tr><th>Statistic</th><th>Value</th><th>Statistic</th><th>Value</th></tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Number of posts</td>
|
||||||
|
<td>{{ stats.postcount }}</td>
|
||||||
|
<td>Number of users</td>
|
||||||
|
<td>{{ stats.userscount }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Posts per day</td>
|
||||||
|
<td>x</td>
|
||||||
|
<td>Users per day</td>
|
||||||
|
<td>x</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Number of threads</td>
|
||||||
|
<td>{{ stats.threadcount }}</td>
|
||||||
|
<td>Number of bans</td>
|
||||||
|
<td>{{ stats.bancount }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Threads per day</td>
|
||||||
|
<td>x</td>
|
||||||
|
<td>Bans per day</td>
|
||||||
|
<td>x</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Number of comments</td>
|
||||||
|
<td>{{ stats.commentcount }}</td>
|
||||||
|
<td>Number of uploads</td>
|
||||||
|
<td>{{ stats.uploadcount }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Comments per day</td>
|
||||||
|
<td>x</td>
|
||||||
|
<td>Size of uploads</td>
|
||||||
|
<td>x</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table><br />
|
||||||
|
<h1 class="stylised">Most recent reports</h1>
|
||||||
|
<table class="settings-table">
|
||||||
|
<thead>
|
||||||
|
<tr><th>Reporter</th><th>Action</th><th>When</th><th></th></tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr><td>Nippon Nick</td><td>User: Japan Joe</td><td>2000 years ago on cybernetics</td><td style="width: 70px;"><a href="#" class="default">View</a></td></tr>
|
||||||
|
<tr><td>Sam Hyde</td><td>Post: bug sports a shit</td><td>4000 years ago on knuckleste.co.uk</td><td style="width: 70px;"><a href="#" class="default">View</a></td></tr>
|
||||||
|
</tbody>
|
||||||
|
</table><br />
|
||||||
|
<h1 class="stylised">Most recent actions</h1>
|
||||||
|
<br />
|
||||||
|
<h1 class="stylised">Most recent moderation actions</h1>
|
1
templates/yuuno/manage/general.info.tpl
Normal file
1
templates/yuuno/manage/general.info.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/logs.actions.tpl
Normal file
1
templates/yuuno/manage/logs.actions.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/logs.errors.tpl
Normal file
1
templates/yuuno/manage/logs.errors.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/logs.management.tpl
Normal file
1
templates/yuuno/manage/logs.management.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/permissions.forum.tpl
Normal file
1
templates/yuuno/manage/permissions.forum.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/permissions.management.tpl
Normal file
1
templates/yuuno/manage/permissions.management.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/permissions.site.tpl
Normal file
1
templates/yuuno/manage/permissions.site.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.bans.tpl
Normal file
1
templates/yuuno/manage/users.bans.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.manage-ranks.tpl
Normal file
1
templates/yuuno/manage/users.manage-ranks.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.manage-users.tpl
Normal file
1
templates/yuuno/manage/users.manage-users.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.option-fields.tpl
Normal file
1
templates/yuuno/manage/users.option-fields.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.profile-fields.tpl
Normal file
1
templates/yuuno/manage/users.profile-fields.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
1
templates/yuuno/manage/users.warnings.tpl
Normal file
1
templates/yuuno/manage/users.warnings.tpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<br />
|
Reference in a new issue