mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-06 18:26:37 +02:00
Merge remote-tracking branch 'origin/master'
Conflicts: package.json
This commit is contained in:
@@ -40,7 +40,7 @@
|
||||
"mmmagic": "^0.3.13",
|
||||
"morgan": "^1.3.2",
|
||||
"nconf": "~0.7.1",
|
||||
"nodebb-plugin-composer-default": "1.0.9",
|
||||
"nodebb-plugin-composer-default": "1.0.11",
|
||||
"nodebb-plugin-dbsearch": "0.2.15",
|
||||
"nodebb-plugin-emoji-extended": "0.4.9",
|
||||
"nodebb-plugin-markdown": "4.0.4",
|
||||
@@ -48,9 +48,9 @@
|
||||
"nodebb-plugin-soundpack-default": "0.1.3",
|
||||
"nodebb-plugin-spam-be-gone": "0.4.1",
|
||||
"nodebb-rewards-essentials": "0.0.3",
|
||||
"nodebb-theme-lavender": "1.0.49",
|
||||
"nodebb-theme-lavender": "1.0.52",
|
||||
"nodebb-theme-persona": "2.0.19",
|
||||
"nodebb-theme-vanilla": "3.0.8",
|
||||
"nodebb-theme-vanilla": "3.0.11",
|
||||
"nodebb-widget-essentials": "1.0.5",
|
||||
"npm": "^2.1.4",
|
||||
"passport": "^0.2.1",
|
||||
|
||||
@@ -23,5 +23,9 @@
|
||||
"composer.user_said": "%1 said:",
|
||||
"composer.discard": "Are you sure you wish to discard this post?",
|
||||
"composer.submit_and_lock": "Submit and Lock",
|
||||
"composer.toggle_dropdown": "Toggle Dropdown"
|
||||
"composer.toggle_dropdown": "Toggle Dropdown",
|
||||
|
||||
"bootbox.ok": "OK",
|
||||
"bootbox.cancel": "Cancel",
|
||||
"bootbox.confirm": "Confirm"
|
||||
}
|
||||
@@ -1,40 +1,63 @@
|
||||
@import "./bootstrap/bootstrap";
|
||||
@import "./bootswatch";
|
||||
@import "./mixins";
|
||||
@import "./vars";
|
||||
|
||||
@import "./header";
|
||||
@import "./mobile";
|
||||
|
||||
@import "./general/dashboard";
|
||||
@import "./general/navigation";
|
||||
@import "./manage/categories";
|
||||
@import "./manage/tags";
|
||||
@import "./manage/flags";
|
||||
@import "./manage/groups";
|
||||
@import "./manage/users";
|
||||
@import "./appearance/customise";
|
||||
@import "./appearance/themes";
|
||||
@import "./extend/plugins";
|
||||
@import "./extend/rewards";
|
||||
@import "./advanced/database";
|
||||
@import "./settings";
|
||||
|
||||
@import "./modules/alerts";
|
||||
@import "./modules/selectable";
|
||||
@import "./modules/checkboxes";
|
||||
@import "./modules/snackbar";
|
||||
|
||||
.admin {
|
||||
padding-top: 70px;
|
||||
background: #f0f0f0;
|
||||
background: #fff;
|
||||
font-size: 14px;
|
||||
|
||||
.container {
|
||||
width: 100% !important;
|
||||
padding: 0px 15px;
|
||||
h1 {
|
||||
font-size: 35px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
padding: @jumbotron-padding;
|
||||
label {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
|
||||
.btn {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.btn-link {
|
||||
color: @link-color;
|
||||
}
|
||||
|
||||
.floating-button {
|
||||
background: @brand-primary !important;
|
||||
position: fixed;
|
||||
right: 30px;
|
||||
bottom: 30px;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
margin-top: -35px;
|
||||
margin-right: -2px;
|
||||
}
|
||||
|
||||
.user-img {
|
||||
width:24px;
|
||||
height:24px;
|
||||
@@ -52,129 +75,10 @@
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
&.mobile {
|
||||
#content {
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
#main-menu {
|
||||
width: 200px;
|
||||
height: 100%;
|
||||
|
||||
|
||||
-webkit-transform: translateX(-190px);
|
||||
transform: translateX(-190px);
|
||||
|
||||
&.transitioning {
|
||||
.transition(.3s ease all);
|
||||
}
|
||||
|
||||
&.open {
|
||||
-webkit-transform: translateX(0);
|
||||
transform: translateX(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#main-menu {
|
||||
position: fixed;
|
||||
width: 200px;
|
||||
height: 100%;
|
||||
padding-top: 50px;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAACgAQMAAACxAfVuAAAAA3NCSVQICAjb4U/gAAAABlBMVEU5OTk1NTVxIqOYAAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABZ0RVh0Q3JlYXRpb24gVGltZQAxNC8xMS8xMc34jO8AAAFQSURBVEiJ7ZUxbsMwDEV/68Fbc4M4aC+QsYOhXstDELg3c9CLqPAFNHYo4tKkEBoMhxgoPEkD8aRBIkV+Enh4VRFvswkLwu4HY09m6pXQ/D6NA5lpUMLHtRojmSkq4RyqS2xD9Z2U0DX1Zzo19ZCU6KW6Tx2ZJT1+SDddZuQ7MyEEcqTdk1ECO0b7KSqBQ9i3ElEmcLAv7xJ7JvmW54P8Uqbtlrx5vL1+zDm699ONyI09NDX/zVdUwmlHmeGvVEJHHvB/J6UVh3wTZbtPSpKjMBeHEkwZMcEUHBNMaTLdivh1QRvnyIjJ99ONyI3dSIgJRkJMsMKQdKw5XEpI8m4kxARTRqJ3U3DSGUxpSg8xEpJus9kyEpLXXT/diNzYjYSYYCTEBCMMphWHRkJyp5GQ5MjtyW73dvu8kdDGOSrzqMyjMo/+KUdlHpV5VObR/foD6jrYlpchAFAAAAAASUVORK5CYII=);
|
||||
z-index: 1;
|
||||
overflow-y: auto;
|
||||
|
||||
.nano-content {
|
||||
top: 51px !important;
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
overflow: hidden;
|
||||
.transition(.4s ease-in-out max-height);
|
||||
max-height: 100%;
|
||||
cursor: pointer;
|
||||
max-height: 38px;
|
||||
|
||||
&.open {
|
||||
max-height: 500px;
|
||||
}
|
||||
|
||||
.nav-header {
|
||||
color: #fff;
|
||||
border-top: 1px solid #32353E;
|
||||
border-bottom: 1px solid #1A1C20;
|
||||
background-color: #272727;
|
||||
text-shadow: 0px 0px 2px #111;
|
||||
padding: 10px;
|
||||
.user-select(none);
|
||||
}
|
||||
|
||||
.nav-list {
|
||||
background: #232323;
|
||||
|
||||
li {
|
||||
i {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
&:hover a {
|
||||
background-color: #3f3f3f;
|
||||
|
||||
span {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
|
||||
&.active a {
|
||||
padding-left: 20px;
|
||||
background-color: #3f3f3f;
|
||||
|
||||
span {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: white;
|
||||
padding: 7px 15px;
|
||||
font-size: 13px;
|
||||
padding-left: 11px;
|
||||
outline: 0;
|
||||
|
||||
span {
|
||||
opacity: 0;
|
||||
margin-right: -8px;
|
||||
.transition(.3s ease-in opacity);
|
||||
}
|
||||
|
||||
-webkit-transition: background-color .3s ease-in, padding-left .3s ease-in;
|
||||
-moz-transition: background-color .3s ease-in, padding-left .3s ease-in;
|
||||
-o-transition: background-color .3s ease-in, padding-left .3s ease-in;
|
||||
transition: background-color .3s ease-in, padding-left .3s ease-in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
padding-left: 215px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#breadcrumbs {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
width: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.acp-panel-heading {
|
||||
padding: 7px 14px;
|
||||
border: 0;
|
||||
@@ -203,20 +107,6 @@
|
||||
.box-header-font
|
||||
}
|
||||
|
||||
#user_label {
|
||||
a {
|
||||
padding-top: 13px;
|
||||
padding-bottom: 13px;
|
||||
|
||||
img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #454;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.icon-container {
|
||||
.row {
|
||||
margin: 0;
|
||||
@@ -271,30 +161,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
#acp-search {
|
||||
input {
|
||||
background: black;
|
||||
border: 0;
|
||||
color: white;
|
||||
box-shadow: none;
|
||||
.transition(.4s ease width);
|
||||
font-family: @font-family-monospace;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
vertical-align: -30%;
|
||||
border-radius: 0;
|
||||
|
||||
&:focus {
|
||||
width: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
.search-match {
|
||||
font-weight: 700;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
#taskbar {
|
||||
display: none; /* not sure why I have to do this, but it only seems to show up on prod */
|
||||
}
|
||||
@@ -311,16 +177,6 @@
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.acp-sidebar {
|
||||
position: fixed;
|
||||
top: 70px;
|
||||
right: 15px;
|
||||
width: initial;
|
||||
max-width: calc( ~"(100% - 200px)/4" );
|
||||
}
|
||||
}
|
||||
|
||||
.category-settings-form {
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
@@ -364,4 +220,20 @@
|
||||
max-width: 24px;
|
||||
max-height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
.mdl-switch.is-checked .mdl-switch__ripple-container {
|
||||
cursor: pointer !important;
|
||||
}
|
||||
|
||||
.mdl-switch.is-checked .mdl-switch__thumb {
|
||||
background: @brand-primary !important;
|
||||
}
|
||||
|
||||
.mdl-switch.is-checked .mdl-switch__track {
|
||||
background: lighten(@brand-primary, 20%) !important;
|
||||
}
|
||||
|
||||
* > .checkbox:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
@@ -8,14 +8,6 @@
|
||||
margin: 0.25em 1em;
|
||||
list-style-type: none;
|
||||
.pointer;
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
-webkit-transition: background-color 250ms linear;
|
||||
-moz-transition: background-color 250ms linear;
|
||||
-ms-transition: background-color 250ms linear;
|
||||
-o-transition: background-color 250ms linear;
|
||||
transition: background-color 250ms linear;
|
||||
|
||||
img {
|
||||
max-width: 150px;
|
||||
@@ -30,16 +22,39 @@
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: rgba(128, 128, 128, 0.2);
|
||||
}
|
||||
|
||||
&.no-themes {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.theme-card {
|
||||
margin-bottom: 30px;
|
||||
|
||||
.mdl-card__title {
|
||||
height: 223px;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.mdl-card__supporting-text h2 {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
[data-theme].selected .mdl-button {
|
||||
color: black;
|
||||
}
|
||||
|
||||
[data-type="bootswatch"] {
|
||||
.mdl-card__title {
|
||||
height: 198px;
|
||||
}
|
||||
|
||||
.mdl-card__title-text {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
textarea[data-field] {
|
||||
min-height: 450px;
|
||||
width: 100%;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
// Paper 3.3.5
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
@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, 46.7%); // #777
|
||||
@gray-dark: #212121;
|
||||
@gray: #666;
|
||||
@gray-light: #bbb;
|
||||
@gray-lighter: lighten(@gray-base, 93.5%); // #eee
|
||||
|
||||
@brand-primary: darken(#428bca, 6.5%);
|
||||
@brand-success: #5cb85c;
|
||||
@brand-info: #5bc0de;
|
||||
@brand-warning: #f0ad4e;
|
||||
@brand-danger: #d9534f;
|
||||
@brand-primary: #2196F3;
|
||||
@brand-success: #4CAF50;
|
||||
@brand-info: #9C27B0;
|
||||
@brand-warning: #ff9800;
|
||||
@brand-danger: #e51c23;
|
||||
|
||||
|
||||
//== Scaffolding
|
||||
@@ -28,7 +28,7 @@
|
||||
//** Background color for `<body>`.
|
||||
@body-bg: #fff;
|
||||
//** Global text color on `<body>`.
|
||||
@text-color: @gray-dark;
|
||||
@text-color: @gray;
|
||||
|
||||
//** Global textual link color.
|
||||
@link-color: @brand-primary;
|
||||
@@ -42,33 +42,33 @@
|
||||
//
|
||||
//## Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
@font-family-sans-serif: "Roboto", "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-base: 13px;
|
||||
@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
|
||||
@font-size-h1: 56px;
|
||||
@font-size-h2: 45px;
|
||||
@font-size-h3: 34px;
|
||||
@font-size-h4: 24px;
|
||||
@font-size-h5: 20px;
|
||||
@font-size-h6: 14px;
|
||||
|
||||
//** Unit-less `line-height` for use in components like buttons.
|
||||
@line-height-base: 1.428571429; // 20/14
|
||||
@line-height-base: 1.846; // 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: 500;
|
||||
@headings-font-weight: 400;
|
||||
@headings-line-height: 1.1;
|
||||
@headings-color: inherit;
|
||||
@headings-color: #444;
|
||||
|
||||
|
||||
//== Iconography
|
||||
@@ -88,7 +88,7 @@
|
||||
//## 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: 6px;
|
||||
@padding-base-horizontal: 12px;
|
||||
@padding-base-horizontal: 16px;
|
||||
|
||||
@padding-large-vertical: 10px;
|
||||
@padding-large-horizontal: 16px;
|
||||
@@ -99,12 +99,12 @@
|
||||
@padding-xs-vertical: 1px;
|
||||
@padding-xs-horizontal: 5px;
|
||||
|
||||
@line-height-large: 1.33;
|
||||
@line-height-large: 1.3333333; // extra decimals for Win 8.1 Chrome
|
||||
@line-height-small: 1.5;
|
||||
|
||||
@border-radius-base: 4px;
|
||||
@border-radius-large: 6px;
|
||||
@border-radius-small: 3px;
|
||||
@border-radius-base: 0px;
|
||||
@border-radius-large: 0px;
|
||||
@border-radius-small: 0px;
|
||||
|
||||
//** Global color for active items (e.g., navs or dropdowns).
|
||||
@component-active-color: #fff;
|
||||
@@ -144,49 +144,55 @@
|
||||
|
||||
@btn-font-weight: normal;
|
||||
|
||||
@btn-default-color: #333;
|
||||
@btn-default-color: #444;
|
||||
@btn-default-bg: #fff;
|
||||
@btn-default-border: #ccc;
|
||||
@btn-default-border: transparent;
|
||||
|
||||
@btn-primary-color: #fff;
|
||||
@btn-primary-bg: @brand-primary;
|
||||
@btn-primary-border: darken(@btn-primary-bg, 5%);
|
||||
@btn-primary-border: transparent;
|
||||
|
||||
@btn-success-color: #fff;
|
||||
@btn-success-bg: @brand-success;
|
||||
@btn-success-border: darken(@btn-success-bg, 5%);
|
||||
@btn-success-border: transparent;
|
||||
|
||||
@btn-info-color: #fff;
|
||||
@btn-info-bg: @brand-info;
|
||||
@btn-info-border: darken(@btn-info-bg, 5%);
|
||||
@btn-info-border: transparent;
|
||||
|
||||
@btn-warning-color: #fff;
|
||||
@btn-warning-bg: @brand-warning;
|
||||
@btn-warning-border: darken(@btn-warning-bg, 5%);
|
||||
@btn-warning-border: transparent;
|
||||
|
||||
@btn-danger-color: #fff;
|
||||
@btn-danger-bg: @brand-danger;
|
||||
@btn-danger-border: darken(@btn-danger-bg, 5%);
|
||||
@btn-danger-border: transparent;
|
||||
|
||||
@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-bg: transparent;
|
||||
//** `<input disabled>` background color
|
||||
@input-bg-disabled: @gray-lighter;
|
||||
@input-bg-disabled: transparent;
|
||||
|
||||
//** Text color for `<input>`s
|
||||
@input-color: @gray;
|
||||
//** `<input>` border color
|
||||
@input-border: #ccc;
|
||||
@input-border: transparent;
|
||||
|
||||
// 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;
|
||||
@@ -197,7 +203,7 @@
|
||||
@input-border-focus: #66afe9;
|
||||
|
||||
//** Placeholder text color
|
||||
@input-color-placeholder: #999;
|
||||
@input-color-placeholder: @gray-light;
|
||||
|
||||
//** Default `.form-control` height
|
||||
@input-height-base: (@line-height-computed + (@padding-base-vertical * 2) + 2);
|
||||
@@ -206,11 +212,14 @@
|
||||
//** 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;
|
||||
@input-group-addon-bg: transparent;
|
||||
//** Border color for textual input addons
|
||||
@input-group-addon-border-color: @input-border;
|
||||
|
||||
@@ -232,11 +241,11 @@
|
||||
@dropdown-divider-bg: #e5e5e5;
|
||||
|
||||
//** Dropdown link text color.
|
||||
@dropdown-link-color: @gray-dark;
|
||||
@dropdown-link-color: @text-color;
|
||||
//** Hover color for dropdown links.
|
||||
@dropdown-link-hover-color: darken(@gray-dark, 5%);
|
||||
//** Hover background for dropdown links.
|
||||
@dropdown-link-hover-bg: #f5f5f5;
|
||||
@dropdown-link-hover-bg: @gray-lighter;
|
||||
|
||||
//** Active dropdown menu item text color.
|
||||
@dropdown-link-active-color: @component-active-color;
|
||||
@@ -250,7 +259,7 @@
|
||||
@dropdown-header-color: @gray-light;
|
||||
|
||||
//** Deprecated `@dropdown-caret-color` as of v3.1.0
|
||||
@dropdown-caret-color: #000;
|
||||
@dropdown-caret-color: @gray-light;
|
||||
|
||||
|
||||
//-- Z-index master list
|
||||
@@ -265,7 +274,8 @@
|
||||
@zindex-popover: 1060;
|
||||
@zindex-tooltip: 1070;
|
||||
@zindex-navbar-fixed: 1030;
|
||||
@zindex-modal: 1040;
|
||||
@zindex-modal-background: 1040;
|
||||
@zindex-modal: 1050;
|
||||
|
||||
|
||||
//== Media queries breakpoints
|
||||
@@ -347,45 +357,45 @@
|
||||
//##
|
||||
|
||||
// Basics of a navbar
|
||||
@navbar-height: 50px;
|
||||
@navbar-height: 64px;
|
||||
@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: #777;
|
||||
@navbar-default-bg: #f8f8f8;
|
||||
@navbar-default-border: darken(@navbar-default-bg, 6.5%);
|
||||
@navbar-default-color: @gray-light;
|
||||
@navbar-default-bg: #fff;
|
||||
@navbar-default-border: transparent;
|
||||
|
||||
// Navbar links
|
||||
@navbar-default-link-color: #777;
|
||||
@navbar-default-link-hover-color: #333;
|
||||
@navbar-default-link-color: @gray;
|
||||
@navbar-default-link-hover-color: @gray-dark;
|
||||
@navbar-default-link-hover-bg: transparent;
|
||||
@navbar-default-link-active-color: #555;
|
||||
@navbar-default-link-active-color: @gray-dark;
|
||||
@navbar-default-link-active-bg: darken(@navbar-default-bg, 6.5%);
|
||||
@navbar-default-link-disabled-color: #ccc;
|
||||
@navbar-default-link-disabled-bg: transparent;
|
||||
|
||||
// Navbar brand label
|
||||
@navbar-default-brand-color: @navbar-default-link-color;
|
||||
@navbar-default-brand-hover-color: darken(@navbar-default-brand-color, 10%);
|
||||
@navbar-default-brand-hover-color: @navbar-default-link-hover-color;
|
||||
@navbar-default-brand-hover-bg: transparent;
|
||||
|
||||
// Navbar toggle
|
||||
@navbar-default-toggle-hover-bg: #ddd;
|
||||
@navbar-default-toggle-icon-bar-bg: #888;
|
||||
@navbar-default-toggle-border-color: #ddd;
|
||||
@navbar-default-toggle-hover-bg: transparent;
|
||||
@navbar-default-toggle-icon-bar-bg: rgba(0,0,0,0.5);
|
||||
@navbar-default-toggle-border-color: transparent;
|
||||
|
||||
|
||||
// Inverted navbar
|
||||
//=== Inverted navbar
|
||||
// Reset inverted navbar basics
|
||||
@navbar-inverse-color: lighten(@gray-light, 15%);
|
||||
@navbar-inverse-bg: #222;
|
||||
@navbar-inverse-border: darken(@navbar-inverse-bg, 10%);
|
||||
@navbar-inverse-color: @gray-light;
|
||||
@navbar-inverse-bg: @brand-primary;
|
||||
@navbar-inverse-border: transparent;
|
||||
|
||||
// Inverted navbar links
|
||||
@navbar-inverse-link-color: lighten(@gray-light, 15%);
|
||||
@navbar-inverse-link-color: lighten(@brand-primary, 30%);
|
||||
@navbar-inverse-link-hover-color: #fff;
|
||||
@navbar-inverse-link-hover-bg: transparent;
|
||||
@navbar-inverse-link-active-color: @navbar-inverse-link-hover-color;
|
||||
@@ -398,10 +408,10 @@
|
||||
@navbar-inverse-brand-hover-color: #fff;
|
||||
@navbar-inverse-brand-hover-bg: transparent;
|
||||
|
||||
// Inverted navbar toggle
|
||||
@navbar-inverse-toggle-hover-bg: #333;
|
||||
@navbar-inverse-toggle-icon-bar-bg: #fff;
|
||||
@navbar-inverse-toggle-border-color: #333;
|
||||
// Inverted navbar toggle\
|
||||
@navbar-inverse-toggle-hover-bg: transparent;
|
||||
@navbar-inverse-toggle-icon-bar-bg: rgba(0,0,0,0.5);
|
||||
@navbar-inverse-toggle-border-color: transparent;
|
||||
|
||||
|
||||
//== Navs
|
||||
@@ -416,15 +426,15 @@
|
||||
@nav-disabled-link-hover-color: @gray-light;
|
||||
|
||||
//== Tabs
|
||||
@nav-tabs-border-color: #ddd;
|
||||
@nav-tabs-border-color: transparent;
|
||||
|
||||
@nav-tabs-link-hover-border-color: @gray-lighter;
|
||||
|
||||
@nav-tabs-active-link-hover-bg: @body-bg;
|
||||
@nav-tabs-active-link-hover-bg: transparent;
|
||||
@nav-tabs-active-link-hover-color: @gray;
|
||||
@nav-tabs-active-link-hover-border-color: #ddd;
|
||||
@nav-tabs-active-link-hover-border-color: transparent;
|
||||
|
||||
@nav-tabs-justified-link-border-color: #ddd;
|
||||
@nav-tabs-justified-link-border-color: @nav-tabs-border-color;
|
||||
@nav-tabs-justified-active-link-border-color: @body-bg;
|
||||
|
||||
//== Pills
|
||||
@@ -476,29 +486,30 @@
|
||||
|
||||
@jumbotron-padding: 30px;
|
||||
@jumbotron-color: inherit;
|
||||
@jumbotron-bg: @gray-lighter;
|
||||
@jumbotron-heading-color: inherit;
|
||||
@jumbotron-bg: #f9f9f9;
|
||||
@jumbotron-heading-color: @headings-color;
|
||||
@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: #3c763d;
|
||||
@state-success-text: @brand-success;
|
||||
@state-success-bg: #dff0d8;
|
||||
@state-success-border: darken(spin(@state-success-bg, -10), 5%);
|
||||
|
||||
@state-info-text: #31708f;
|
||||
@state-info-bg: #d9edf7;
|
||||
@state-info-text: @brand-info;
|
||||
@state-info-bg: #e1bee7;
|
||||
@state-info-border: darken(spin(@state-info-bg, -10), 7%);
|
||||
|
||||
@state-warning-text: #8a6d3b;
|
||||
@state-warning-bg: #fcf8e3;
|
||||
@state-warning-text: @brand-warning;
|
||||
@state-warning-bg: #ffe0b2;
|
||||
@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
|
||||
|
||||
@state-danger-text: #a94442;
|
||||
@state-danger-bg: #f2dede;
|
||||
@state-danger-text: @brand-danger;
|
||||
@state-danger-bg: #f9bdbb;
|
||||
@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
|
||||
|
||||
|
||||
@@ -511,7 +522,7 @@
|
||||
//** Tooltip text color
|
||||
@tooltip-color: #fff;
|
||||
//** Tooltip background color
|
||||
@tooltip-bg: #000;
|
||||
@tooltip-bg: #727272;
|
||||
@tooltip-opacity: .9;
|
||||
|
||||
//** Tooltip arrow width
|
||||
@@ -529,9 +540,9 @@
|
||||
//** Popover maximum width
|
||||
@popover-max-width: 276px;
|
||||
//** Popover border color
|
||||
@popover-border-color: rgba(0,0,0,.2);
|
||||
@popover-border-color: transparent;
|
||||
//** Popover fallback border color
|
||||
@popover-fallback-border-color: #ccc;
|
||||
@popover-fallback-border-color: transparent;
|
||||
|
||||
//** Popover title background color
|
||||
@popover-title-bg: darken(@popover-bg, 3%);
|
||||
@@ -544,7 +555,7 @@
|
||||
//** 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-arrow-outer-color: fadein(@popover-border-color, 7.5%);
|
||||
//** Popover outer arrow fallback color
|
||||
@popover-arrow-outer-fallback-color: darken(@popover-fallback-border-color, 20%);
|
||||
|
||||
@@ -587,7 +598,7 @@
|
||||
//** Background color of modal content area
|
||||
@modal-content-bg: #fff;
|
||||
//** Modal content border color
|
||||
@modal-content-border-color: rgba(0,0,0,.2);
|
||||
@modal-content-border-color: transparent;
|
||||
//** Modal content border color **for IE8**
|
||||
@modal-content-fallback-border-color: #999;
|
||||
|
||||
@@ -596,7 +607,7 @@
|
||||
//** Modal backdrop opacity
|
||||
@modal-backdrop-opacity: .5;
|
||||
//** Modal header border color
|
||||
@modal-header-border-color: #e5e5e5;
|
||||
@modal-header-border-color: transparent;
|
||||
//** Modal footer border color
|
||||
@modal-footer-border-color: @modal-header-border-color;
|
||||
|
||||
@@ -709,21 +720,21 @@
|
||||
@panel-primary-border: @brand-primary;
|
||||
@panel-primary-heading-bg: @brand-primary;
|
||||
|
||||
@panel-success-text: @state-success-text;
|
||||
@panel-success-text: #fff;
|
||||
@panel-success-border: @state-success-border;
|
||||
@panel-success-heading-bg: @state-success-bg;
|
||||
@panel-success-heading-bg: @brand-success;
|
||||
|
||||
@panel-info-text: @state-info-text;
|
||||
@panel-info-text: #fff;
|
||||
@panel-info-border: @state-info-border;
|
||||
@panel-info-heading-bg: @state-info-bg;
|
||||
@panel-info-heading-bg: @brand-info;
|
||||
|
||||
@panel-warning-text: @state-warning-text;
|
||||
@panel-warning-text: #fff;
|
||||
@panel-warning-border: @state-warning-border;
|
||||
@panel-warning-heading-bg: @state-warning-bg;
|
||||
@panel-warning-heading-bg: @brand-warning;
|
||||
|
||||
@panel-danger-text: @state-danger-text;
|
||||
@panel-danger-text: #fff;
|
||||
@panel-danger-border: @state-danger-border;
|
||||
@panel-danger-heading-bg: @state-danger-bg;
|
||||
@panel-danger-heading-bg: @brand-danger;
|
||||
|
||||
|
||||
//== Thumbnails
|
||||
@@ -749,8 +760,8 @@
|
||||
//
|
||||
//##
|
||||
|
||||
@well-bg: #f5f5f5;
|
||||
@well-border: darken(@well-bg, 7%);
|
||||
@well-bg: #f9f9f9;
|
||||
@well-border: transparent;
|
||||
|
||||
|
||||
//== Badges
|
||||
@@ -767,7 +778,7 @@
|
||||
//** Badge background color in active nav link
|
||||
@badge-active-bg: #fff;
|
||||
|
||||
@badge-font-weight: bold;
|
||||
@badge-font-weight: normal;
|
||||
@badge-line-height: 1;
|
||||
@badge-border-radius: 10px;
|
||||
|
||||
@@ -809,9 +820,9 @@
|
||||
//
|
||||
//##
|
||||
|
||||
@close-font-weight: bold;
|
||||
@close-font-weight: normal;
|
||||
@close-color: #000;
|
||||
@close-text-shadow: 0 1px 0 #fff;
|
||||
@close-text-shadow: none;
|
||||
|
||||
|
||||
//== Code
|
||||
|
||||
607
public/less/admin/bootswatch.less
Normal file
607
public/less/admin/bootswatch.less
Normal file
@@ -0,0 +1,607 @@
|
||||
// Paper 3.3.5
|
||||
// Bootswatch
|
||||
// -----------------------------------------------------
|
||||
|
||||
@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700");
|
||||
|
||||
// Navbar =====================================================================
|
||||
|
||||
.navbar {
|
||||
border: none;
|
||||
.box-shadow(0 1px 2px rgba(0,0,0,.3));
|
||||
|
||||
&-brand {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
&-inverse {
|
||||
.form-control {
|
||||
color: #fff;
|
||||
.placeholder(@navbar-inverse-link-color);
|
||||
|
||||
&[type=text],
|
||||
&[type=password] {
|
||||
.box-shadow(inset 0 -1px 0 @navbar-inverse-link-color);
|
||||
|
||||
&:focus {
|
||||
.box-shadow(inset 0 -2px 0 #fff);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Buttons ====================================================================
|
||||
|
||||
#btn(@class,@bg) {
|
||||
.btn-@{class} {
|
||||
background-size: 200%;
|
||||
background-position: 50%;
|
||||
|
||||
&:focus {
|
||||
background-color: @bg;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active:hover {
|
||||
background-color: darken(@bg, 6%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: darken(@bg, 12%);
|
||||
#gradient > .radial(darken(@bg, 12%) 10%, @bg 11%);
|
||||
background-size: 1000%;
|
||||
.box-shadow(2px 2px 4px rgba(0,0,0,.4));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#btn(default,@btn-default-bg);
|
||||
#btn(primary,@btn-primary-bg);
|
||||
#btn(success,@btn-success-bg);
|
||||
#btn(info,@btn-info-bg);
|
||||
#btn(warning,@btn-warning-bg);
|
||||
#btn(danger,@btn-danger-bg);
|
||||
#btn(link,#fff);
|
||||
|
||||
.btn {
|
||||
text-transform: uppercase;
|
||||
border: none;
|
||||
.box-shadow(1px 1px 4px rgba(0,0,0,.4));
|
||||
.transition(all 0.4s);
|
||||
|
||||
&-link {
|
||||
border-radius: @btn-border-radius-base;
|
||||
.box-shadow(none);
|
||||
color: @btn-default-color;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
.box-shadow(none);
|
||||
color: @btn-default-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
&-default {
|
||||
|
||||
&.disabled {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
.btn + .btn,
|
||||
.btn + .btn-group,
|
||||
.btn-group + .btn,
|
||||
.btn-group + .btn-group {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
&-vertical {
|
||||
> .btn + .btn,
|
||||
> .btn + .btn-group,
|
||||
> .btn-group + .btn,
|
||||
> .btn-group + .btn-group {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Typography =================================================================
|
||||
|
||||
body {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
letter-spacing: .1px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
|
||||
input,
|
||||
button {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
letter-spacing: .1px;
|
||||
}
|
||||
|
||||
a {
|
||||
.transition(all 0.2s);
|
||||
}
|
||||
|
||||
// Tables =====================================================================
|
||||
|
||||
.table-hover {
|
||||
> tbody > tr,
|
||||
> tbody > tr > th,
|
||||
> tbody > tr > td {
|
||||
.transition(all 0.2s);
|
||||
}
|
||||
}
|
||||
|
||||
// Forms ======================================================================
|
||||
|
||||
label {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
textarea,
|
||||
textarea.form-control,
|
||||
input.form-control,
|
||||
input[type=text],
|
||||
input[type=password],
|
||||
input[type=email],
|
||||
input[type=number],
|
||||
[type=text].form-control,
|
||||
[type=password].form-control,
|
||||
[type=email].form-control,
|
||||
[type=tel].form-control,
|
||||
[contenteditable].form-control {
|
||||
padding: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
-webkit-appearance: none;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
font-size: 16px;
|
||||
|
||||
&:focus {
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
}
|
||||
|
||||
&[disabled],
|
||||
&[readonly] {
|
||||
.box-shadow(none);
|
||||
border-bottom: 1px dotted #ddd;
|
||||
}
|
||||
|
||||
&.input {
|
||||
&-sm {
|
||||
font-size: @font-size-small;
|
||||
}
|
||||
|
||||
&-lg {
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
select,
|
||||
select.form-control {
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
padding-left: 0;
|
||||
padding-right: 0\9; // remove padding for < ie9 since default arrow can't be removed
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEVmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmaP/QSjAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
|
||||
background-size: 13px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
|
||||
&::-ms-expand {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.input {
|
||||
&-sm {
|
||||
font-size: @font-size-small;
|
||||
}
|
||||
|
||||
&-lg {
|
||||
font-size: @font-size-large;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAMAAACelLz8AAAAJ1BMVEUhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF8S9ewAAAADHRSTlMAAgMJC0uWpKa6wMxMdjkoAAAANUlEQVR4AeXJyQEAERAAsNl7Hf3X6xt0QL6JpZWq30pdvdadme+0PMdzvHm8YThHcT1H7K0BtOMDniZhWOgAAAAASUVORK5CYII=);
|
||||
}
|
||||
|
||||
&[multiple] {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
|
||||
.radio,
|
||||
.radio-inline,
|
||||
.checkbox,
|
||||
.checkbox-inline {
|
||||
label {
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
input[type="checkbox"] {
|
||||
margin-left: -25px;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="radio"],
|
||||
.radio input[type="radio"],
|
||||
.radio-inline input[type="radio"] {
|
||||
position: relative;
|
||||
margin-top: 6px;
|
||||
margin-right: 4px;
|
||||
vertical-align: top;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 50%;
|
||||
.transition(240ms);
|
||||
}
|
||||
|
||||
&:before {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: -3px;
|
||||
background-color: @brand-primary;
|
||||
.scale(0);
|
||||
}
|
||||
|
||||
&:after {
|
||||
position: relative;
|
||||
top: -3px;
|
||||
border: 2px solid @gray;
|
||||
}
|
||||
|
||||
&:checked:before {
|
||||
.scale(0.5);
|
||||
}
|
||||
|
||||
&:disabled:checked:before {
|
||||
background-color: @gray-light;
|
||||
}
|
||||
|
||||
&:checked:after {
|
||||
border-color: @brand-primary;
|
||||
}
|
||||
|
||||
&:disabled:after,
|
||||
&:disabled:checked:after {
|
||||
border-color: @gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
.checkbox input[type="checkbox"],
|
||||
.checkbox-inline input[type="checkbox"] {
|
||||
position: relative;
|
||||
border: none;
|
||||
margin-bottom: -4px;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
cursor: pointer;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
margin-top: -2px;
|
||||
margin-right: 5px;
|
||||
border: 2px solid @gray;
|
||||
border-radius: 2px;
|
||||
.transition(240ms);
|
||||
}
|
||||
|
||||
&:checked:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 6px;
|
||||
display: table;
|
||||
width: 6px;
|
||||
height: 12px;
|
||||
border: 2px solid #fff;
|
||||
border-top-width: 0;
|
||||
border-left-width: 0;
|
||||
.rotate(45deg);
|
||||
}
|
||||
|
||||
&:checked:after {
|
||||
background-color: @brand-primary;
|
||||
border-color: @brand-primary;
|
||||
}
|
||||
|
||||
&:disabled:after {
|
||||
border-color: @gray-light;
|
||||
}
|
||||
|
||||
&:disabled:checked:after {
|
||||
background-color: @gray-light;
|
||||
border-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.has-warning {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-warning);
|
||||
}
|
||||
}
|
||||
|
||||
.has-error {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-danger);
|
||||
}
|
||||
}
|
||||
|
||||
.has-success {
|
||||
input:not([type=checkbox]),
|
||||
.form-control,
|
||||
input.form-control[readonly],
|
||||
input[type=text][readonly],
|
||||
[type=text].form-control[readonly],
|
||||
input:not([type=checkbox]):focus,
|
||||
.form-control:focus {
|
||||
border-bottom: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-success);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove the Bootstrap feedback styles for input addons
|
||||
.input-group-addon {
|
||||
.has-warning &, .has-error &, .has-success & {
|
||||
color: @input-color;
|
||||
border-color: @input-group-addon-border-color;
|
||||
background-color: @input-group-addon-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Navs =======================================================================
|
||||
|
||||
.nav-tabs {
|
||||
> li > a,
|
||||
> li > a:focus {
|
||||
margin-right: 0;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
color: @navbar-default-link-color;
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
.transition(all 0.2s);
|
||||
|
||||
&:hover {
|
||||
background-color: transparent;
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
& > li.active > a,
|
||||
& > li.active > a:focus {
|
||||
border: none;
|
||||
.box-shadow(inset 0 -2px 0 @brand-primary);
|
||||
color: @brand-primary;
|
||||
|
||||
&:hover {
|
||||
border: none;
|
||||
color: @brand-primary;
|
||||
}
|
||||
}
|
||||
|
||||
& > li.disabled > a {
|
||||
.box-shadow(inset 0 -1px 0 #ddd);
|
||||
}
|
||||
|
||||
&.nav-justified {
|
||||
|
||||
& > li > a,
|
||||
& > li > a:hover,
|
||||
& > li > a:focus,
|
||||
& > .active > a,
|
||||
& > .active > a:hover,
|
||||
& > .active > a:focus {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
margin-top: 0;
|
||||
border: none;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
}
|
||||
|
||||
// Indicators =================================================================
|
||||
|
||||
.alert {
|
||||
border: none;
|
||||
color: #fff;
|
||||
|
||||
&-success {
|
||||
background-color: @brand-success;
|
||||
}
|
||||
|
||||
&-info {
|
||||
background-color: @brand-info;
|
||||
}
|
||||
|
||||
&-warning {
|
||||
background-color: @brand-warning;
|
||||
}
|
||||
|
||||
&-danger {
|
||||
background-color: @brand-danger;
|
||||
}
|
||||
|
||||
a:not(.close),
|
||||
.alert-link {
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.close {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 3px 6px 5px;
|
||||
}
|
||||
|
||||
.progress {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
height: 6px;
|
||||
border-radius: 0;
|
||||
|
||||
.box-shadow(none);
|
||||
|
||||
&-bar {
|
||||
.box-shadow(none);
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
&:before {
|
||||
display: block;
|
||||
content: "";
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: -1;
|
||||
background-color: lighten(@progress-bar-bg, 35%);
|
||||
}
|
||||
}
|
||||
|
||||
&-success:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-success, 35%);
|
||||
}
|
||||
|
||||
&-info:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-info, 45%);
|
||||
}
|
||||
&-warning:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-warning, 35%);
|
||||
}
|
||||
|
||||
&-danger:last-child.progress-bar:before {
|
||||
background-color: lighten(@brand-danger, 25%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Progress bars ==============================================================
|
||||
|
||||
// Containers =================================================================
|
||||
|
||||
.close {
|
||||
font-size: 34px;
|
||||
font-weight: 300;
|
||||
line-height: 24px;
|
||||
opacity: 0.6;
|
||||
.transition(all 0.2s);
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.list-group {
|
||||
|
||||
&-item {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
&-item-text {
|
||||
color: @gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
.well {
|
||||
border-radius: 0;
|
||||
.box-shadow(none);
|
||||
}
|
||||
|
||||
.panel {
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
|
||||
&-heading {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&-footer {
|
||||
border-top: none;
|
||||
}
|
||||
}
|
||||
|
||||
.popover {
|
||||
border: none;
|
||||
.box-shadow(0 1px 4px rgba(0,0,0,.3));
|
||||
}
|
||||
|
||||
.carousel {
|
||||
&-caption {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
83
public/less/admin/header.less
Normal file
83
public/less/admin/header.less
Normal file
@@ -0,0 +1,83 @@
|
||||
.header {
|
||||
position: relative;
|
||||
background: #333;
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
margin-bottom: 50px;
|
||||
font-size: 16px;
|
||||
|
||||
#main-page-title {
|
||||
position: absolute;
|
||||
left: 48px;
|
||||
bottom: 17px;
|
||||
color: #aaa;
|
||||
font-size: 47px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
#user_label {
|
||||
position: absolute;
|
||||
right: 30px;
|
||||
bottom: 125px;
|
||||
|
||||
#user_dropdown {
|
||||
font-size: 25px;
|
||||
color: #eee;
|
||||
|
||||
i {
|
||||
margin-top: 12px;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#acp-search {
|
||||
margin-top: 2px;
|
||||
margin-right: 20px;
|
||||
|
||||
input {
|
||||
padding: 10px 20px;
|
||||
width: 250px;
|
||||
height: 44px;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
border-radius: 3px;
|
||||
box-shadow: none;
|
||||
.transition(.4s ease background-color);
|
||||
|
||||
&:focus {
|
||||
background-color: #eee;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
.search-match {
|
||||
font-weight: 700;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
> ul {
|
||||
list-style-type: none;
|
||||
padding: 0px;
|
||||
position: absolute;
|
||||
bottom: -11px;
|
||||
left: 50px;
|
||||
|
||||
> li {
|
||||
float: left;
|
||||
margin-right: 30px;
|
||||
|
||||
&.active {
|
||||
border-bottom: 4px solid @brand-primary;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
> a {
|
||||
color: white;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,12 @@ div.categories {
|
||||
padding-bottom: 12px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
> li li:last-child {
|
||||
.row {
|
||||
border-bottom: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.stats {
|
||||
@@ -32,6 +38,7 @@ div.categories {
|
||||
li {
|
||||
min-height: @acp-line-height;
|
||||
margin: @acp-base-line 0;
|
||||
margin-top: 28px;
|
||||
|
||||
&.placeholder {
|
||||
border: 1px dashed #2196F3;
|
||||
@@ -41,7 +48,7 @@ div.categories {
|
||||
|
||||
.disabled {
|
||||
|
||||
.icon, .header, .description {
|
||||
.icon, .category-header, .description {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
@@ -67,7 +74,7 @@ div.categories {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.header {
|
||||
.category-header {
|
||||
margin-top: 0;
|
||||
margin-bottom: @acp-base-line;
|
||||
}
|
||||
|
||||
5
public/less/admin/manage/groups.less
Normal file
5
public/less/admin/manage/groups.less
Normal file
@@ -0,0 +1,5 @@
|
||||
.group {
|
||||
.current_members {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
.tag-item {
|
||||
border: solid 1px @gray-light;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-top-left-radius: 5px;
|
||||
background-color: transparent;
|
||||
color: @gray-light;
|
||||
padding: .2em .6em .3em;
|
||||
@@ -31,15 +29,14 @@
|
||||
.tag-topic-count {
|
||||
border: solid 1px lighten(@brand-primary, 20%);
|
||||
background-color: lighten(@brand-primary, 20%);
|
||||
padding: .2em .6em .3em;
|
||||
padding: 6px;
|
||||
font-size: 75%;
|
||||
font-weight: 700;
|
||||
white-space: nowrap;
|
||||
border-left: none;
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
border-width: 1px 1px 2px medium;
|
||||
|
||||
a {
|
||||
color: #FFFFFF;
|
||||
|
||||
173
public/less/admin/mobile.less
Normal file
173
public/less/admin/mobile.less
Normal file
@@ -0,0 +1,173 @@
|
||||
#mobile-menu {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 980px) {
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.header {
|
||||
height: 58px;
|
||||
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.26);
|
||||
position: fixed;
|
||||
top: 0px;
|
||||
z-index: 5;
|
||||
|
||||
#main-page-title {
|
||||
bottom: -31px;
|
||||
font-size: 20px;
|
||||
color: #FFF;
|
||||
left: 52px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
#user_label {
|
||||
right: 0px;
|
||||
bottom: 7px;
|
||||
}
|
||||
|
||||
#main-menu {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#mobile-menu {
|
||||
width: 31px;
|
||||
background: none;
|
||||
border: none;
|
||||
vertical-align: 10%;
|
||||
margin-right: 10px;
|
||||
margin-left: -15px;
|
||||
outline: none !important;
|
||||
display: block;
|
||||
|
||||
position: absolute;
|
||||
top: 22px;
|
||||
left: 22px;
|
||||
|
||||
.bar {
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background: #fff;
|
||||
margin-bottom: 3px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
#menu {
|
||||
background-color: #1D1F20;
|
||||
background-image: linear-gradient(145deg, #1D1F20, #404348);
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.menu-header-title {
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.menu-section {
|
||||
margin: 25px 0;
|
||||
}
|
||||
|
||||
.menu-section-title {
|
||||
text-transform: uppercase;
|
||||
color: #85888d;
|
||||
font-weight: 200;
|
||||
font-size: 13px;
|
||||
letter-spacing: 1px;
|
||||
padding: 0 20px;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.menu-section-list {
|
||||
padding:0;
|
||||
margin: 10px 0;
|
||||
list-style:none;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
#panel {
|
||||
background: white;
|
||||
min-height: 100%;
|
||||
padding-top: 80px;
|
||||
}
|
||||
|
||||
.slideout-menu {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 0;
|
||||
width: 256px;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.slideout-panel {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.slideout-open,
|
||||
.slideout-open body,
|
||||
.slideout-open .slideout-panel {
|
||||
overflow: hidden;
|
||||
overflow-y: hidden !important;
|
||||
}
|
||||
|
||||
.slideout-open .slideout-menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
.slideout-open {
|
||||
overflow-y: hidden;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.content-header, .settings-header {
|
||||
font-size: 200%;
|
||||
margin-bottom: 20px;
|
||||
margin-left: -2px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.checkbox label {
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.admin {
|
||||
.fa-toggle-on, .fa-toggle-off {
|
||||
font-size: 21px;
|
||||
vertical-align: -3px;
|
||||
}
|
||||
|
||||
.fa-toggle-on {
|
||||
color: @brand-success;
|
||||
}
|
||||
}
|
||||
65
public/less/admin/modules/snackbar.less
Normal file
65
public/less/admin/modules/snackbar.less
Normal file
@@ -0,0 +1,65 @@
|
||||
#snackbar-container {
|
||||
position:fixed;
|
||||
left:20px;
|
||||
bottom:0;
|
||||
z-index:99999;
|
||||
|
||||
strong {
|
||||
margin-right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
.snackbar {
|
||||
overflow:hidden;
|
||||
clear:both;
|
||||
min-width:288px;
|
||||
max-width:568px;
|
||||
cursor:pointer;
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
.snackbar.snackbar-opened {
|
||||
height:auto;
|
||||
opacity:1;
|
||||
}
|
||||
|
||||
@media (max-width:767px) {
|
||||
#snackbar-container {
|
||||
left:0!important;
|
||||
right:0;
|
||||
width:100%;
|
||||
|
||||
strong {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
#snackbar-container .snackbar {
|
||||
min-width:100%;
|
||||
}
|
||||
|
||||
#snackbar-container [class="snackbar snackbar-opened"]~.snackbar.toast {
|
||||
margin-top:20px;
|
||||
}
|
||||
|
||||
#snackbar-container [class="snackbar snackbar-opened"] {
|
||||
border-radius:0;
|
||||
margin-bottom:0;
|
||||
}
|
||||
}
|
||||
|
||||
.snackbar {
|
||||
background-color: #323232;
|
||||
color: #FFFFFF;
|
||||
font-size: 14px;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
|
||||
height: 0;
|
||||
.transition(.25s ease-in-out opacity);
|
||||
}
|
||||
|
||||
.snackbar.snackbar-opened {
|
||||
padding: 10px 15px;
|
||||
margin-bottom: 20px;
|
||||
height: auto;
|
||||
}
|
||||
19
public/less/admin/settings.less
Normal file
19
public/less/admin/settings.less
Normal file
@@ -0,0 +1,19 @@
|
||||
.settings {
|
||||
.row {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.section-content {
|
||||
border-left: 3px solid @brand-primary;
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
font-size: 16px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
[data-action="upload"][type="text"] {
|
||||
width: 95%;
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,29 @@
|
||||
"use strict";
|
||||
/*global define, socket, app, ajaxify, utils, bootbox, Mousetrap, Hammer, RELATIVE_PATH*/
|
||||
/*global componentHandler, define, socket, app, ajaxify, utils, bootbox, Mousetrap, Hammer, RELATIVE_PATH*/
|
||||
|
||||
(function() {
|
||||
$(document).ready(function() {
|
||||
setupMenu();
|
||||
setupKeybindings();
|
||||
|
||||
if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
|
||||
require(['admin/modules/search'], function(search) {
|
||||
search.init();
|
||||
});
|
||||
} else {
|
||||
activateMobile();
|
||||
}
|
||||
|
||||
$(window).on('action:ajaxify.contentLoaded', function(ev, data) {
|
||||
var url = data.url;
|
||||
|
||||
selectMenuItem(data.url);
|
||||
setupHeaderMenu();
|
||||
setupRestartLinks();
|
||||
|
||||
componentHandler.upgradeDom();
|
||||
});
|
||||
|
||||
$(window).on('action:admin.settingsLoaded', setupCheckboxes);
|
||||
|
||||
$('[component="logout"]').on('click', app.logout);
|
||||
app.alert = launchSnackbar;
|
||||
|
||||
$(window).resize(setupHeaderMenu);
|
||||
configureSlidemenu();
|
||||
});
|
||||
|
||||
socket.emit('admin.config.get', function(err, config) {
|
||||
@@ -45,27 +42,6 @@
|
||||
$(window).trigger('action:config.loaded');
|
||||
});
|
||||
|
||||
function setupMenu() {
|
||||
var listElements = $('.sidebar-nav li');
|
||||
|
||||
listElements.on('click', function() {
|
||||
var $this = $(this);
|
||||
|
||||
if ($this.hasClass('nav-header')) {
|
||||
$this.parents('.sidebar-nav').toggleClass('open').bind('animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd', function (ev) {
|
||||
$('.nano').nanoScroller();
|
||||
});
|
||||
} else {
|
||||
listElements.removeClass('active');
|
||||
$this.addClass('active');
|
||||
}
|
||||
});
|
||||
|
||||
$('.nano').nanoScroller();
|
||||
|
||||
$('#main-menu .nav-list > li a').append('<span class="pull-right"><i class="fa fa-inverse fa-arrow-circle-right"></i> </span>');
|
||||
}
|
||||
|
||||
function setupKeybindings() {
|
||||
Mousetrap.bind('ctrl+shift+a r', function() {
|
||||
require(['admin/modules/instance'], function(instance) {
|
||||
@@ -84,75 +60,32 @@
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function activateMobile() {
|
||||
$('.admin').addClass('mobile');
|
||||
$('#main-menu').addClass('transitioning');
|
||||
|
||||
Hammer(document.body).on('swiperight', function(e) {
|
||||
$('#main-menu').addClass('open');
|
||||
});
|
||||
|
||||
Hammer(document.body).on('swipeleft', function(e) {
|
||||
$('#main-menu').removeClass('open');
|
||||
});
|
||||
|
||||
Hammer($('#main-menu')[0]).on('swiperight', function(e) {
|
||||
$('#main-menu').addClass('open');
|
||||
});
|
||||
|
||||
Hammer($('#main-menu')[0]).on('swipeleft', function(e) {
|
||||
$('#main-menu').removeClass('open');
|
||||
});
|
||||
|
||||
$(window).on('scroll', function() {
|
||||
$('#main-menu').height($(window).height() + 20);
|
||||
});
|
||||
}
|
||||
|
||||
function selectMenuItem(url) {
|
||||
url = url.replace(/\/\d+$/, '');
|
||||
url = url
|
||||
.replace(/\/\d+$/, '')
|
||||
.split('/').slice(0, 3).join('/');
|
||||
|
||||
// If index is requested, load the dashboard
|
||||
if (url === 'admin') {
|
||||
url = 'admin/general/dashboard';
|
||||
}
|
||||
|
||||
$('#main-menu .nav-list > li').removeClass('active').each(function() {
|
||||
$('#main-menu li').removeClass('active');
|
||||
$('#main-menu a').removeClass('active').each(function() {
|
||||
var menu = $(this),
|
||||
category = menu.parents('.sidebar-nav'),
|
||||
href = menu.children('a').attr('href'),
|
||||
isLink = menu.attr('data-link') === '1';
|
||||
href = menu.attr('href'),
|
||||
isLink = menu.parent().attr('data-link') === '1';
|
||||
|
||||
if (!isLink && href && href.slice(1) === url) {
|
||||
category.addClass('open');
|
||||
menu.addClass('active');
|
||||
modifyBreadcrumb(category.find('.nav-header').text(), menu.text());
|
||||
if (!isLink && href && href === [config.relative_path, url].join('/')) {
|
||||
menu
|
||||
.parent().addClass('active')
|
||||
.parents('.menu-item').addClass('active');
|
||||
|
||||
$('#main-page-title').text(menu.text() + (menu.parents('.menu-item').children('a').text() === 'Settings' ? ' Settings' : ''));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function modifyBreadcrumb() {
|
||||
var caret = ' <i class="fa fa-angle-right"></i> ';
|
||||
|
||||
$('#breadcrumbs').html(caret + Array.prototype.slice.call(arguments).join(caret));
|
||||
}
|
||||
|
||||
function setupHeaderMenu() {
|
||||
var env = utils.findBootstrapEnvironment();
|
||||
|
||||
if (env !== 'lg') {
|
||||
if ($('.mobile-header').length || $('#content .col-lg-9').first().height() < 2000) {
|
||||
return;
|
||||
}
|
||||
|
||||
($('#content .col-lg-3').first().clone().addClass('mobile-header'))
|
||||
.insertBefore($('#content .col-lg-9').first());
|
||||
} else {
|
||||
$('.mobile-header').remove();
|
||||
}
|
||||
}
|
||||
|
||||
function setupRestartLinks() {
|
||||
$('.restart').off('click').on('click', function() {
|
||||
bootbox.confirm('Are you sure you wish to restart NodeBB?', function(confirm) {
|
||||
@@ -171,37 +104,54 @@
|
||||
});
|
||||
}
|
||||
|
||||
function setupCheckboxes() {
|
||||
if (ajaxify.currentPage.match(/^admin\/manage\/categories/)) {
|
||||
return $('[type=checkbox]').show();
|
||||
function launchSnackbar(params) {
|
||||
var bar = $.snackbar({
|
||||
content: "<strong>" + params.title + "</strong>" + params.message,
|
||||
timeout: 3000,
|
||||
htmlAllowed: true
|
||||
});
|
||||
|
||||
if (params.clickfn) {
|
||||
bar.on('click', clickfn);
|
||||
}
|
||||
|
||||
$('[type=checkbox]').change(function() {
|
||||
var checked = $(this).is(':checked');
|
||||
|
||||
$(this).siblings('[class*=fa-]').toggleClass('fa-toggle-off', !checked)
|
||||
.toggleClass('fa-toggle-on', checked);
|
||||
});
|
||||
|
||||
$('[type=checkbox]').each(function() {
|
||||
var checkbox = $(this),
|
||||
checked = checkbox.is(':checked');
|
||||
|
||||
if (checkbox.attr('data-toggle-added')) {
|
||||
return;
|
||||
}
|
||||
|
||||
checkbox.hide();
|
||||
|
||||
if (checked) {
|
||||
checkbox.after('<i class="fa fa-toggle-on"></i>');
|
||||
}
|
||||
else {
|
||||
checkbox.after('<i class="fa fa-toggle-off"></i>');
|
||||
}
|
||||
|
||||
checkbox.attr('data-toggle-added', true);
|
||||
});
|
||||
}
|
||||
|
||||
function configureSlidemenu() {
|
||||
var slideout = new Slideout({
|
||||
'panel': document.getElementById('panel'),
|
||||
'menu': document.getElementById('menu'),
|
||||
'padding': 256,
|
||||
'tolerance': 70
|
||||
});
|
||||
|
||||
$('#mobile-menu').on('click', function() {
|
||||
slideout.toggle();
|
||||
});
|
||||
|
||||
$('#menu a').on('click', function() {
|
||||
slideout.close();
|
||||
});
|
||||
|
||||
$(window).on('resize', function() {
|
||||
slideout.close();
|
||||
});
|
||||
|
||||
function onOpeningMenu() {
|
||||
$('#header').css({
|
||||
'top': $('#panel').position().top * -1 + 'px',
|
||||
'position': 'absolute'
|
||||
});
|
||||
}
|
||||
|
||||
slideout.on('beforeopen', onOpeningMenu);
|
||||
slideout.on('open', onOpeningMenu);
|
||||
slideout.on('translate', onOpeningMenu);
|
||||
|
||||
slideout.on('close', function() {
|
||||
$('#header').css({
|
||||
'top': '0px',
|
||||
'position': 'fixed'
|
||||
});
|
||||
});
|
||||
}
|
||||
}());
|
||||
@@ -9,12 +9,12 @@ define('admin/appearance/skins', function() {
|
||||
scriptEl.attr('src', '//bootswatch.aws.af.cm/3/?callback=bootswatchListener');
|
||||
$('body').append(scriptEl);
|
||||
|
||||
$('#bootstrap_themes').on('click', function(e){
|
||||
$('#skins').on('click', function(e){
|
||||
var target = $(e.target),
|
||||
action = target.attr('data-action');
|
||||
|
||||
if (action && action === 'use') {
|
||||
var parentEl = target.parents('li'),
|
||||
var parentEl = target.parents('[data-theme]'),
|
||||
themeType = parentEl.attr('data-type'),
|
||||
cssSrc = parentEl.attr('data-css'),
|
||||
themeId = parentEl.attr('data-theme');
|
||||
@@ -59,12 +59,37 @@ define('admin/appearance/skins', function() {
|
||||
showRevert: true
|
||||
}, function(html) {
|
||||
themeContainer.html(html);
|
||||
|
||||
var skin = config['theme:src']
|
||||
.match(/latest\/(\S+)\/bootstrap.min.css/)[1]
|
||||
.replace(/(^|\s)([a-z])/g , function(m,p1,p2){return p1+p2.toUpperCase();});
|
||||
|
||||
highlightSelectedTheme(skin);
|
||||
});
|
||||
};
|
||||
|
||||
function highlightSelectedTheme(themeId) {
|
||||
$('.themes li[data-theme]').removeClass('btn-warning');
|
||||
$('.themes li[data-theme="' + themeId + '"]').addClass('btn-warning');
|
||||
$('[data-theme]')
|
||||
.removeClass('selected')
|
||||
.find('[data-action="use"]').each(function() {
|
||||
if ($(this).parents('[data-theme]').attr('data-theme')) {
|
||||
$(this)
|
||||
.html('Select Theme')
|
||||
.removeClass('btn-success')
|
||||
.addClass('btn-primary');
|
||||
}
|
||||
});
|
||||
|
||||
if (!themeId) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('[data-theme="' + themeId + '"]')
|
||||
.addClass('selected')
|
||||
.find('[data-action="use"]')
|
||||
.html('Current Theme')
|
||||
.removeClass('btn-primary')
|
||||
.addClass('btn-success');
|
||||
}
|
||||
|
||||
return Skins;
|
||||
|
||||
@@ -10,7 +10,7 @@ define('admin/appearance/themes', function() {
|
||||
action = target.attr('data-action');
|
||||
|
||||
if (action && action === 'use') {
|
||||
var parentEl = target.parents('li'),
|
||||
var parentEl = target.parents('[data-theme]'),
|
||||
themeType = parentEl.attr('data-type'),
|
||||
cssSrc = parentEl.attr('data-css'),
|
||||
themeId = parentEl.attr('data-theme');
|
||||
@@ -40,16 +40,16 @@ define('admin/appearance/themes', function() {
|
||||
});
|
||||
|
||||
$('#revert_theme').on('click', function() {
|
||||
bootbox.confirm('Are you sure you wish to remove the custom theme and restore the NodeBB default theme?', function(confirm) {
|
||||
bootbox.confirm('Are you sure you wish to restore the default NodeBB theme?', function(confirm) {
|
||||
if (confirm) {
|
||||
socket.emit('admin.themes.set', {
|
||||
type: 'local',
|
||||
id: 'nodebb-theme-vanilla'
|
||||
id: 'nodebb-theme-persona'
|
||||
}, function(err) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
highlightSelectedTheme('nodebb-theme-vanilla');
|
||||
highlightSelectedTheme('nodebb-theme-persona');
|
||||
app.alert({
|
||||
alert_id: 'admin:theme',
|
||||
type: 'success',
|
||||
@@ -84,8 +84,19 @@ define('admin/appearance/themes', function() {
|
||||
};
|
||||
|
||||
function highlightSelectedTheme(themeId) {
|
||||
$('.themes li[data-theme]').removeClass('btn-warning');
|
||||
$('.themes li[data-theme="' + themeId + '"]').addClass('btn-warning');
|
||||
$('[data-theme]')
|
||||
.removeClass('selected')
|
||||
.find('[data-action="use"]')
|
||||
.html('Select Theme')
|
||||
.removeClass('btn-success')
|
||||
.addClass('btn-primary');
|
||||
|
||||
$('[data-theme="' + themeId + '"]')
|
||||
.addClass('selected')
|
||||
.find('[data-action="use"]')
|
||||
.html('Current Theme')
|
||||
.removeClass('btn-primary')
|
||||
.addClass('btn-success');
|
||||
}
|
||||
|
||||
return Themes;
|
||||
|
||||
@@ -13,6 +13,8 @@ define('admin/extend/plugins', function() {
|
||||
return;
|
||||
}
|
||||
|
||||
$('#plugin-search').val('');
|
||||
|
||||
pluginsList.on('click', 'button[data-action="toggleActive"]', function() {
|
||||
pluginID = $(this).parents('li').attr('data-plugin-id');
|
||||
var btn = $(this);
|
||||
|
||||
@@ -17,6 +17,13 @@ define('admin/extend/widgets', function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#widget-selector').on('change', function() {
|
||||
$('.available-widgets [data-widget]').addClass('hide');
|
||||
$('.available-widgets [data-widget="' + $(this).val() + '"]').removeClass('hide');
|
||||
});
|
||||
|
||||
$('#widget-selector').trigger('change');
|
||||
|
||||
loadWidgetData();
|
||||
};
|
||||
|
||||
@@ -64,7 +71,7 @@ define('admin/extend/widgets', function() {
|
||||
}
|
||||
});
|
||||
|
||||
$('#widgets .save').on('click', saveWidgets);
|
||||
$('#save').on('click', saveWidgets);
|
||||
|
||||
function saveWidgets() {
|
||||
var total = $('#widgets [data-template][data-location]').length;
|
||||
|
||||
@@ -63,21 +63,6 @@ define('admin/manage/category', [
|
||||
});
|
||||
}
|
||||
|
||||
function setupEditTargets() {
|
||||
$('[data-edit-target]').on('click', function() {
|
||||
var $this = $(this),
|
||||
target = $($this.attr('data-edit-target'));
|
||||
|
||||
$this.addClass('hide');
|
||||
target.removeClass('hide').on('blur', function() {
|
||||
$this.removeClass('hide').children('span').text(this.value).html();
|
||||
$(this).addClass('hide');
|
||||
}).val($this.children('span').html().text());
|
||||
|
||||
target.focus();
|
||||
});
|
||||
}
|
||||
|
||||
// If any inputs have changed, prepare it for saving
|
||||
$('form.category input, form.category select').on('change', function(ev) {
|
||||
modified(ev.target);
|
||||
@@ -91,12 +76,11 @@ define('admin/manage/category', [
|
||||
// Colour Picker
|
||||
$('[data-name="bgColor"], [data-name="color"]').each(enableColorPicker);
|
||||
|
||||
$('.save').on('click', save);
|
||||
$('.revert').on('click', ajaxify.refresh);
|
||||
$('#save').on('click', save);
|
||||
$('.purge').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
bootbox.confirm('<p class="lead">Do you really want to purge this category "' + $('form.category').find('input[data-name="name"]').val() + '"?</p><p><strong class="text-danger">Warning!</strong> All topics and posts in this category will be purged!</p>', function(confirm) {
|
||||
bootbox.confirm('<p class="lead">Do you really want to purge this category "' + $('form.category').find('input[data-name="name"]').val() + '"?</p><h5><strong class="text-danger">Warning!</strong> All topics and posts in this category will be purged!</h5> <p class="help-block">Purging a category will remove all topics and posts, and delete the category from the database. If you want to remove a category <em>temporarily</em>, you\'ll want to "disable" the category instead.</p>', function(confirm) {
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
@@ -158,7 +142,6 @@ define('admin/manage/category', [
|
||||
});
|
||||
});
|
||||
|
||||
setupEditTargets();
|
||||
Category.setupPrivilegeTable();
|
||||
};
|
||||
|
||||
|
||||
@@ -50,14 +50,10 @@ define(function() {
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.sidebar-nav a').each(function(idx, link) {
|
||||
$('#main-menu a').each(function(idx, link) {
|
||||
routes.push($(link).attr('href'));
|
||||
});
|
||||
|
||||
input.on('blur', function() {
|
||||
$(this).val('').attr('placeholder', '/');
|
||||
});
|
||||
|
||||
input.on('keyup focus', function() {
|
||||
var $input = $(this),
|
||||
value = $input.val().toLowerCase(),
|
||||
@@ -67,8 +63,6 @@ define(function() {
|
||||
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
||||
}
|
||||
|
||||
$input.attr('placeholder', '');
|
||||
|
||||
firstResult = null;
|
||||
|
||||
if (value.length >= 3) {
|
||||
@@ -101,15 +95,14 @@ define(function() {
|
||||
}
|
||||
}
|
||||
|
||||
if (menuItems.html() !== '') {
|
||||
menuItems.append('<li role="presentation" class="divider"></li>');
|
||||
} else {
|
||||
if (menuItems.html() === '') {
|
||||
menuItems.append('<li role="presentation"><a role="menuitem" href="#">No results...</a></li>');
|
||||
}
|
||||
}
|
||||
|
||||
if (value.length > 0) {
|
||||
if (config.searchEnabled) {
|
||||
menuItems.append('<li role="presentation" class="divider"></li>');
|
||||
menuItems.append('<li role="presentation"><a role="menuitem" target="_top" href="' + RELATIVE_PATH + '/search/' + value + '">Search the forum for <strong>' + value + '</strong></a></li>');
|
||||
} else if (value.length < 3) {
|
||||
menuItems.append('<li role="presentation"><a role="menuitem" href="#">Type more to see results...</a></li>');
|
||||
|
||||
@@ -5,7 +5,21 @@ define('admin/settings', ['uploader', 'sounds'], function(uploader, sounds) {
|
||||
var Settings = {};
|
||||
|
||||
Settings.init = function() {
|
||||
$(window).on('action:config.loaded', Settings.prepare);
|
||||
if (!app.config) {
|
||||
$(window).on('action:config.loaded', Settings.prepare);
|
||||
} else {
|
||||
Settings.prepare();
|
||||
}
|
||||
};
|
||||
|
||||
Settings.populateTOC = function() {
|
||||
$('.settings-header').each(function() {
|
||||
var header = $(this).text(),
|
||||
anchor = header.toLowerCase().replace(/ /g, '-').trim();
|
||||
|
||||
$(this).prepend('<a name="' + anchor + '"></a>');
|
||||
$('.section-content ul').append('<li><a href="#' + anchor + '">' + header + '</a></li>');
|
||||
});
|
||||
};
|
||||
|
||||
Settings.prepare = function(callback) {
|
||||
|
||||
@@ -130,6 +130,49 @@ app.cacheBuster = null;
|
||||
}
|
||||
}
|
||||
|
||||
function overrideBootbox() {
|
||||
var dialog = bootbox.dialog,
|
||||
prompt = bootbox.prompt,
|
||||
confirm = bootbox.confirm;
|
||||
|
||||
function translate(modal) {
|
||||
translator.translate(modal.html(), function(html) {
|
||||
modal.html(html);
|
||||
});
|
||||
}
|
||||
|
||||
bootbox.dialog = function() {
|
||||
var modal = $(dialog.apply(this, arguments)[0]);
|
||||
translate(modal);
|
||||
return modal;
|
||||
}
|
||||
|
||||
bootbox.prompt = function() {
|
||||
var modal = $(prompt.apply(this, arguments)[0]);
|
||||
translate(modal);
|
||||
return modal;
|
||||
}
|
||||
|
||||
bootbox.confirm = function() {
|
||||
var modal = $(confirm.apply(this, arguments)[0]);
|
||||
translate(modal);
|
||||
return modal;
|
||||
}
|
||||
}
|
||||
|
||||
function overrideTimeago() {
|
||||
var timeagoFn = $.fn.timeago;
|
||||
$.fn.timeago = function() {
|
||||
var els = timeagoFn.apply(this, arguments);
|
||||
|
||||
if (els) {
|
||||
els.each(function() {
|
||||
$(this).attr('title', (new Date($(this).attr('title'))).toString());
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
app.logout = function() {
|
||||
require(['csrf'], function(csrf) {
|
||||
$.ajax(RELATIVE_PATH + '/logout', {
|
||||
@@ -241,8 +284,6 @@ app.cacheBuster = null;
|
||||
app.processPage = function () {
|
||||
highlightNavigationLink();
|
||||
|
||||
utils.overrideTimeago();
|
||||
|
||||
$('.timeago').timeago();
|
||||
|
||||
utils.makeNumbersHumanReadable($('.human-readable-number'));
|
||||
@@ -491,6 +532,9 @@ app.cacheBuster = null;
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
categories = categories.filter(function(category) {
|
||||
return !category.link && !parseInt(category.parentCid, 10);
|
||||
});
|
||||
if (categories.length) {
|
||||
$(window).trigger('action:composer.topic.new', {
|
||||
cid: categories[0].cid
|
||||
@@ -525,6 +569,8 @@ app.cacheBuster = null;
|
||||
}
|
||||
});
|
||||
|
||||
overrideBootbox();
|
||||
overrideTimeago();
|
||||
createHeaderTooltips();
|
||||
app.showEmailConfirmWarning();
|
||||
|
||||
|
||||
@@ -203,19 +203,6 @@
|
||||
return text.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
|
||||
},
|
||||
|
||||
overrideTimeago: function() {
|
||||
var timeagoFn = $.fn.timeago;
|
||||
$.fn.timeago = function() {
|
||||
var els = timeagoFn.apply(this, arguments);
|
||||
|
||||
if (els) {
|
||||
els.each(function() {
|
||||
$(this).attr('title', (new Date($(this).attr('title'))).toString());
|
||||
});
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
toISOString: function(timestamp) {
|
||||
if (!timestamp || !Date.prototype.toISOString) {
|
||||
return '';
|
||||
|
||||
2
public/vendor/bootbox/bootbox.min.js
vendored
2
public/vendor/bootbox/bootbox.min.js
vendored
File diff suppressed because one or more lines are too long
9724
public/vendor/mdl/mdl.css
vendored
Normal file
9724
public/vendor/mdl/mdl.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
public/vendor/mdl/mdl.min.css
vendored
Normal file
1
public/vendor/mdl/mdl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
54
public/vendor/nanoscroller/nanoscroller.css
vendored
54
public/vendor/nanoscroller/nanoscroller.css
vendored
@@ -1,54 +0,0 @@
|
||||
/** initial setup **/
|
||||
.nano {
|
||||
position : relative;
|
||||
width : 100%;
|
||||
height : 100%;
|
||||
overflow : hidden;
|
||||
}
|
||||
.nano > .nano-content {
|
||||
position : absolute;
|
||||
overflow : scroll;
|
||||
overflow-x : hidden;
|
||||
top : 0;
|
||||
right : 0;
|
||||
bottom : 0;
|
||||
left : 0;
|
||||
}
|
||||
.nano > .nano-content:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
.nano > .nano-content::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.has-scrollbar > .nano-content::-webkit-scrollbar {
|
||||
display: block;
|
||||
}
|
||||
.nano > .nano-pane {
|
||||
background : rgba(0,0,0,.25);
|
||||
position : absolute;
|
||||
width : 10px;
|
||||
right : 0;
|
||||
top : 0;
|
||||
bottom : 0;
|
||||
visibility : hidden\9; /* Target only IE7 and IE8 with this hack */
|
||||
opacity : .01;
|
||||
-webkit-transition : .2s;
|
||||
-moz-transition : .2s;
|
||||
-o-transition : .2s;
|
||||
transition : .2s;
|
||||
-moz-border-radius : 5px;
|
||||
-webkit-border-radius : 5px;
|
||||
border-radius : 5px;
|
||||
}
|
||||
.nano > .nano-pane > .nano-slider {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
position : relative;
|
||||
margin : 0 1px;
|
||||
-moz-border-radius : 3px;
|
||||
-webkit-border-radius : 3px;
|
||||
border-radius : 3px;
|
||||
}
|
||||
.nano:hover > .nano-pane, .nano-pane.active, .nano-pane.flashed {
|
||||
visibility : visible\9; /* Target only IE7 and IE8 with this hack */
|
||||
opacity : 0.99;
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
1
public/vendor/slideout/slideout.min.js
vendored
Normal file
1
public/vendor/slideout/slideout.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
public/vendor/snackbar/snackbar.min.js
vendored
Normal file
2
public/vendor/snackbar/snackbar.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/* SnackbarJS - MIT LICENSE (https://github.com/FezVrasta/snackbarjs/blob/master/LICENSE.md) */
|
||||
!function(t){"function"==typeof define&&define.amd&&t(jQuery)}(function(t){function a(t){return"undefined"!=typeof t&&null!==t?!0:!1}t(document).ready(function(){t("body").append("<div id=snackbar-container/>")}),t(document).on("click","[data-toggle=snackbar]",function(){t(this).snackbar("toggle")}).on("click","#snackbar-container .snackbar",function(){t(this).snackbar("hide")}),t.snackbar=function(n){if(a(n)&&n===Object(n)){var e,o=!1;a(n.id)?t("#"+n.id).length?e=t("#"+n.id):(e=t("<div/>").attr("id",""+n.id).attr("class","snackbar"),o=!0):(e=t("<div/>").attr("id","snackbar"+Date.now()).attr("class","snackbar"),o=!0);var i=e.hasClass("snackbar-opened");a(n.style)?(i?e.attr("class","snackbar snackbar-opened "+n.style):e.attr("class","snackbar "+n.style),e.attr("data-style",n.style)):i?e.attr("class","snackbar snackbar-opened"):e.attr("class","snackbar"),n.htmlAllowed=a(n.htmlAllowed)?n.htmlAllowed:!1,n.timeout=a(n.timeout)?n.timeout:3e3,e.attr("data-timeout",n.timeout),n.content=n.htmlAllowed?n.content:t("<p>"+n.content+"</p>").text(),a(n.htmlAllowed)&&e.attr("data-html-allowed",n.htmlAllowed),a(n.content)&&(e.find(".snackbar-content").length?e.find(".snackbar-content").html(n.content):e.prepend("<span class=snackbar-content>"+n.content+"</span>"),e.attr("data-content",n.content)),o?e.appendTo("#snackbar-container"):e.insertAfter("#snackbar-container .snackbar:last-child"),a(n.action)&&"toggle"==n.action&&(n.action=i?"hide":"show");var s=Date.now();e.data("animationId1",s),setTimeout(function(){e.data("animationId1")===s&&(a(n.action)&&"show"!=n.action?a(n.action)&&"hide"==n.action&&e.removeClass("snackbar-opened"):e.addClass("snackbar-opened"))},50);var c=Date.now();return e.data("animationId2",c),0!==n.timeout&&setTimeout(function(){e.data("animationId2")===c&&e.removeClass("snackbar-opened")},n.timeout),e}return!1},t.fn.snackbar=function(n){if("undefined"!=typeof n){var e={};if(this.hasClass("snackbar"))return e={id:this.attr("id"),content:t(this).attr("data-content"),style:t(this).attr("data-style"),timeout:t(this).attr("data-timeout"),htmlAllowed:t(this).attr("data-html-allowed")},("show"===n||"hide"===n||"toggle"==n)&&(e.action=n),t.snackbar(e);a(n)&&"show"!==n&&"hide"!==n&&"toggle"!=n||(e={content:t(this).attr("data-content"),style:t(this).attr("data-style"),timeout:t(this).attr("data-timeout"),htmlAllowed:t(this).attr("data-html-allowed")}),a(n)&&(e.id=this.attr("data-snackbar-id"),("show"===n||"hide"===n||"toggle"==n)&&(e.action=n));var o=t.snackbar(e);return this.attr("data-snackbar-id",o.attr("id")),o}}});
|
||||
@@ -175,6 +175,10 @@ accountsController.getAccount = function(req, res, next) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (parseInt(meta.config['reputation:disabled'], 10) === 1) {
|
||||
delete userData.reputation;
|
||||
}
|
||||
|
||||
userData.posts = results.posts.posts.filter(function (p) {
|
||||
return p && parseInt(p.deleted, 10) !== 1;
|
||||
});
|
||||
|
||||
@@ -58,7 +58,7 @@ function addRoutes(router, middleware, controllers) {
|
||||
router.get('/manage/users/sort-posts', controllers.admin.users.sortByPosts);
|
||||
router.get('/manage/users/sort-reputation', controllers.admin.users.sortByReputation);
|
||||
router.get('/manage/users/banned', controllers.admin.users.banned);
|
||||
router.get('/manage/users/registration', controllers.admin.users.registrationQueue);
|
||||
router.get('/manage/registration', controllers.admin.users.registrationQueue);
|
||||
|
||||
router.get('/manage/groups', controllers.admin.groups.list);
|
||||
router.get('/manage/groups/:name', controllers.admin.groups.get);
|
||||
|
||||
@@ -310,7 +310,8 @@ SocketUser.follow = function(socket, data, callback) {
|
||||
notifications.create({
|
||||
bodyShort: '[[notifications:user_started_following_you, ' + userData.username + ']]',
|
||||
nid: 'follow:' + data.uid + ':uid:' + socket.uid,
|
||||
from: socket.uid
|
||||
from: socket.uid,
|
||||
path: '/user/' + userData.userslug
|
||||
}, next);
|
||||
},
|
||||
function(notification, next) {
|
||||
|
||||
@@ -48,7 +48,7 @@ module.exports = function(User) {
|
||||
notifications.create({
|
||||
bodyShort: '[[notifications:new_register, ' + username + ']]',
|
||||
nid: 'new_register:' + username,
|
||||
path: '/admin/manage/users/registration'
|
||||
path: '/admin/manage/registration'
|
||||
}, function(err, notification) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
@@ -157,6 +157,9 @@ module.exports = function(User) {
|
||||
return next(null, user);
|
||||
}
|
||||
|
||||
// temporary: see http://www.stopforumspam.com/forum/viewtopic.php?id=6392
|
||||
user.ip = user.ip.replace('::ffff:', '');
|
||||
|
||||
request('http://api.stopforumspam.org/api?ip=' + user.ip + '&email=' + user.email + '&username=' + user.username + '&f=json', function (err, response, body) {
|
||||
if (err) {
|
||||
return next(null, user);
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
<div id="customise" class="customise">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Custom CSS</div>
|
||||
<div class="panel-body">
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href="#custom-css" data-toggle="tab">Custom CSS</a></li>
|
||||
<li><a href="#custom-header" data-toggle="tab">Custom Header</a></li>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade active in" id="custom-css">
|
||||
<p>
|
||||
Enter your own CSS declarations here, which will be applied after all other styles.
|
||||
</p>
|
||||
@@ -11,18 +15,14 @@
|
||||
<br />
|
||||
<form class="form">
|
||||
<div class="form-group">
|
||||
<label for="useCustomCSS">
|
||||
Use Custom CSS?
|
||||
<input id="useCustomCSS" type="checkbox" data-field="useCustomCSS" />
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="useCustomCSS">
|
||||
<input class="mdl-switch__input" id="useCustomCSS" type="checkbox" data-field="useCustomCSS" />
|
||||
<span class="mdl-switch__label">Enable Custom CSS</span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Custom Header</div>
|
||||
<div class="panel-body">
|
||||
<div class="tab-pane fade" id="custom-header">
|
||||
<p>
|
||||
Enter custom HTML here (ex. JavaScript, Meta Tags, etc.), which will be appended to the <code><head></code> section of your forum's markup.
|
||||
</p>
|
||||
@@ -33,14 +33,16 @@
|
||||
<br />
|
||||
<form class="form">
|
||||
<div class="form-group">
|
||||
<label for="useCustomJS">
|
||||
Use Custom Header?
|
||||
<input id="useCustomJS" type="checkbox" data-field="useCustomJS" />
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="useCustomJS">
|
||||
<input class="mdl-switch__input" id="useCustomJS" type="checkbox" data-field="useCustomJS" />
|
||||
<span class="mdl-switch__label">Enable Custom Header</span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-primary" id="save">Save</button>
|
||||
</div>
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
@@ -1,25 +1,12 @@
|
||||
<div id="skins" class="row skins">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Bootswatch Themes</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
NodeBB's skins are powered by Bootswatch, a repository containing themes built with Bootstrap as a base theme. Currently, the Vanilla theme is best optimized for use with Bootswatch.
|
||||
</p>
|
||||
<ul class="directory" id="bootstrap_themes">
|
||||
<li><i class="fa fa-refresh fa-spin"></i> Loading Themes</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="directory row" id="bootstrap_themes">
|
||||
<i class="fa fa-refresh fa-spin"></i> Loading Themes
|
||||
</div>
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Revert to Default</div>
|
||||
<div class="panel-body">
|
||||
<p>This will remove any custom Bootswatch skin applied to your NodeBB, and restore the base theme.</p>
|
||||
<button class="btn btn-warning btn-md" id="revert_theme">Revert to Default</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div data-type="bootswatch" data-theme="" data-css="">
|
||||
<button data-action="use" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">undo</i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
<div id="themes" class="themes">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Installed Themes</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
The following themes are currently installed on your forum.
|
||||
</p>
|
||||
|
||||
<ul class="directory" id="installed_themes">
|
||||
<li><i class="fa fa-refresh fa-spin"></i> Checking for installed themes...</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="directory row" id="installed_themes">
|
||||
<i class="fa fa-refresh fa-spin"></i> Checking for installed themes...
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="revert_theme" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">undo</i>
|
||||
</button>
|
||||
@@ -1,24 +1,27 @@
|
||||
<div class="plugins">
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href="#installed" data-toggle="tab">Installed Plugins</a></li>
|
||||
<li><a href="#download" data-toggle="tab">Download Plugins</a></li>
|
||||
</ul>
|
||||
<br />
|
||||
|
||||
<div class="plugins row">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-code-fork"></i> Installed Plugins</div>
|
||||
<div class="panel-body">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade active in" id="installed">
|
||||
<ul class="installed">
|
||||
<!-- BEGIN installed -->
|
||||
<!-- IMPORT admin/partials/installed_plugin_item.tpl -->
|
||||
<!-- END installed -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-code-fork"></i> Download Plugins</div>
|
||||
<div class="panel-body">
|
||||
<ul class="download">
|
||||
<!-- BEGIN download -->
|
||||
<!-- IMPORT admin/partials/download_plugin_item.tpl -->
|
||||
<!-- END download -->
|
||||
</ul>
|
||||
<div class="tab-pane fade" id="download">
|
||||
<div class="panel-body">
|
||||
<ul class="download">
|
||||
<!-- BEGIN download -->
|
||||
<!-- IMPORT admin/partials/download_plugin_item.tpl -->
|
||||
<!-- END download -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,9 +38,6 @@
|
||||
<div class="panel-heading">Re-order Plugins</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-default btn-block" id="plugin-order"><i class="fa fa-exchange"></i> Order Active Plugins</button>
|
||||
<p class="help-block">
|
||||
Certain plugins work ideally when they are initialised before/after other plugins. You can alter this loading behaviour here.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -60,10 +60,13 @@
|
||||
<h4 class="modal-title">Order Active Plugins</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>Plugins load in the order specified here, from top to bottom</p>
|
||||
<ul class="plugin-list">
|
||||
|
||||
</ul>
|
||||
<p>
|
||||
Certain plugins work ideally when they are initialised before/after other plugins.
|
||||
</p>
|
||||
<p>
|
||||
Plugins load in the order specified here, from top to bottom
|
||||
</p>
|
||||
<ul class="plugin-list"></ul>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||
|
||||
@@ -1,33 +1,26 @@
|
||||
<div id="widgets">
|
||||
<div id="widgets" class="row">
|
||||
<div class="col-md-7">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Widget Areas</div>
|
||||
<div class="panel-body">
|
||||
<ul class="nav nav-pills">
|
||||
<!-- BEGIN templates -->
|
||||
<li class="<!-- IF @first -->active<!-- ENDIF @first -->"><a href="#" data-template="{../template}" data-toggle="pill">{../template}</a></li>
|
||||
<!-- END templates -->
|
||||
</ul>
|
||||
|
||||
<ul class="nav nav-pills">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="tab-content">
|
||||
<!-- BEGIN templates -->
|
||||
<li class="<!-- IF @first -->active<!-- ENDIF @first -->"><a href="#" data-template="{../template}" data-toggle="pill">{../template}</a></li>
|
||||
<!-- END templates -->
|
||||
</ul>
|
||||
<div class="tab-pane <!-- IF @first -->active<!-- ENDIF @first -->" data-template="{../template}">
|
||||
<!-- BEGIN areas -->
|
||||
<div class="area" data-template="{templates.template}" data-location="{../location}">
|
||||
<h4>{../name} <small>{templates.template} / {../location}</small></h4>
|
||||
<div class="well widget-area">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="tab-content">
|
||||
<!-- BEGIN templates -->
|
||||
<div class="tab-pane <!-- IF @first -->active<!-- ENDIF @first -->" data-template="{../template}">
|
||||
<!-- BEGIN areas -->
|
||||
<div class="area" data-template="{templates.template}" data-location="{../location}">
|
||||
<h4>{../name} <small>{templates.template} / {../location}</small></h4>
|
||||
<div class="well widget-area">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- END areas -->
|
||||
</div>
|
||||
<!-- END templates -->
|
||||
</div>
|
||||
<button class="btn btn-success save pull-right">Save</button>
|
||||
<!-- END areas -->
|
||||
</div>
|
||||
<!-- END templates -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -38,14 +31,21 @@
|
||||
<div class="panel-heading">Available Widgets</div>
|
||||
<div class="panel-body">
|
||||
<div class="available-widgets">
|
||||
<p>Drag and drop widgets into templates</p>
|
||||
<p>Select a widget and then drag and drop it into a template's widget area on the left.</p>
|
||||
<!-- IF !widgets.length -->
|
||||
<div class="alert alert-info">No widgets found! Activate the essential widgets plugin in the <a href="/admin/extend/plugins">plugins</a> control panel.</div>
|
||||
<!-- ENDIF !widgets.length -->
|
||||
<p>
|
||||
<select id="widget-selector" class="form-control">
|
||||
<!-- BEGIN widgets -->
|
||||
<option value="{widgets.widget}">{widgets.name}</option>
|
||||
<!-- END widgets -->
|
||||
</select>
|
||||
</p>
|
||||
<div class="row">
|
||||
<!-- BEGIN widgets -->
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<div data-widget="{widgets.widget}" class="panel widget-panel panel-default pointer">
|
||||
<div class="col-xs-12">
|
||||
<div data-widget="{widgets.widget}" class="panel widget-panel panel-default pointer hide">
|
||||
<div class="panel-heading">
|
||||
<strong>{widgets.name}</strong>
|
||||
<small><br />{widgets.description}</small>
|
||||
@@ -67,7 +67,6 @@
|
||||
<div class="panel-body">
|
||||
<p>Drag and drop on top of any active widget</p>
|
||||
<div class="available-containers">
|
||||
<h4>Available Containers <small>Drag and drop on top of any widget</small></h4>
|
||||
<div class="containers">
|
||||
<div class="pointer" style="padding: 20px; border: 1px dotted #dedede; margin-bottom: 20px;" data-container-html=" ">
|
||||
None
|
||||
@@ -114,4 +113,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,28 +1,25 @@
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Home Page</div>
|
||||
<div class="panel-body">
|
||||
<form>
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Home Page</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<p>
|
||||
Choose what page is shown when users navigate to the root URL of your forum.
|
||||
</p>
|
||||
<form class="row">
|
||||
<div class="col-xs-6">
|
||||
<label>Home Page Route</label>
|
||||
<select class="form-control" data-field="homePageRoute">
|
||||
<!-- BEGIN routes -->
|
||||
<option value="{routes.route}">{routes.name}</option>
|
||||
<!-- END routes -->
|
||||
</select>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Save Settings</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary btn-md" id="save">Save Changes</button>
|
||||
<button class="btn btn-warning btn-md" id="revert">Revert Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
|
||||
<script>
|
||||
require(['admin/settings'], function(Settings) {
|
||||
|
||||
@@ -1,38 +1,27 @@
|
||||
<div class="languages">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Language Settings</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
The default language determines the language settings for all users who
|
||||
are visiting your forum. <br />
|
||||
Individual users can override the default language on their account settings page.
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Language Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<p>
|
||||
The default language determines the language settings for all users who
|
||||
are visiting your forum. <br />
|
||||
Individual users can override the default language on their account settings page.
|
||||
</p>
|
||||
|
||||
<form class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<label for="defaultLang">Default Language</label>
|
||||
<select id="language" data-field="defaultLang" class="form-control">
|
||||
<!-- BEGIN languages -->
|
||||
<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option>
|
||||
<!-- END languages -->
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Languages Control Panel</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary" id="save">Save Language Settings</button>
|
||||
</div>
|
||||
<form class="row">
|
||||
<div class="form-group col-sm-6">
|
||||
<label for="defaultLang">Default Language</label>
|
||||
<select id="language" data-field="defaultLang" class="form-control">
|
||||
<!-- BEGIN languages -->
|
||||
<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option>
|
||||
<!-- END languages -->
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
@@ -1,5 +1,5 @@
|
||||
<div id="navigation">
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Active Navigation</div>
|
||||
<div class="panel-body">
|
||||
@@ -87,13 +87,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Navigation Control</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary btn-md" id="save">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
@@ -1,69 +1,62 @@
|
||||
<div class="sounds" class="row">
|
||||
<div class="col-lg-9">
|
||||
<form role="form">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">General</div>
|
||||
<div class="panel-body">
|
||||
<label for="notification">Notifications</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="notification" name="notification">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
<div class="sounds settings" class="row">
|
||||
<form role="form">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Notifications</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<label for="notification">Notifications</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="notification" name="notification">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Chat</div>
|
||||
<div class="panel-body">
|
||||
<label for="chat-incoming">Incoming Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-incoming" name="chat-incoming">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="chat-outgoing">Outgoing Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-outgoing" name="chat-outgoing">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Sounds Control Panel</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary" id="save">Save Sound Settings</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Chat Messages</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<label for="chat-incoming">Incoming Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-incoming" name="chat-incoming">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label for="chat-outgoing">Outgoing Message</label>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-9">
|
||||
<select class="form-control" id="chat-outgoing" name="chat-outgoing">
|
||||
<option value=""></option>
|
||||
<!-- BEGIN sounds -->
|
||||
<option value="{sounds.name}">{sounds.name}</option>
|
||||
<!-- END sounds -->
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn-group col-xs-3">
|
||||
<button type="button" class="form-control btn btn-sm btn-default" data-action="play">Play <i class="fa fa-play"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
@@ -5,8 +5,10 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="{relative_path}/vendor/jquery/css/smoothness/jquery-ui-1.10.4.custom.min.css?{cache-buster}">
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/vendor/nanoscroller/nanoscroller.css?{cache-buster}">
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/admin.css?{cache-buster}" />
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/vendor/mdl/mdl.min.css?{cache-buster}" />
|
||||
<link rel="stylesheet" type="text/css" href="{relative_path}/vendor/snackbar/snackbar.min.css?{cache-buster}" />
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
|
||||
<script>
|
||||
var RELATIVE_PATH = "{relative_path}";
|
||||
@@ -24,6 +26,7 @@
|
||||
<script>__lt_ie_9__ = 1;</script>
|
||||
<![endif]-->
|
||||
|
||||
<script src="https://storage.googleapis.com/code.getmdl.io/1.0.3/material.min.js"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/chart.js/chart.min.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/hammer/hammer.min.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/sortable/Sortable.js?{cache-buster}"></script>
|
||||
@@ -45,7 +48,6 @@
|
||||
<script type="text/javascript" src="{relative_path}/vendor/colorpicker/colorpicker.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/src/admin/admin.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/ace/ace.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/nanoscroller/nanoscroller.min.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drag.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drop.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/semver/semver.browser.js?{cache-buster}"></script>
|
||||
@@ -53,6 +55,8 @@
|
||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/deserialize/jquery.deserialize.min.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/mousetrap/mousetrap.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/jquery/js/jquery-ui-1.10.4.custom.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/snackbar/snackbar.min.js?{cache-buster}"></script>
|
||||
<script type="text/javascript" src="{relative_path}/vendor/slideout/slideout.min.js?{cache-buster}"></script>
|
||||
|
||||
<!-- BEGIN scripts -->
|
||||
<script type="text/javascript" src="{scripts.src}"></script>
|
||||
@@ -60,99 +64,5 @@
|
||||
</head>
|
||||
|
||||
<body class="admin">
|
||||
<nav class="navbar navbar-inverse navbar-fixed-top header">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand nodebb-logo" href="{relative_path}/admin/general/dashboard"><img src="{relative_path}/images/logo.png" alt="NodeBB ACP" /> Admin Control Panel <span id="breadcrumbs" class="hidden-xs"></span></a>
|
||||
<ul class="nav navbar-nav pull-left">
|
||||
<li>
|
||||
<a href="#" id="reconnect"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
<ul id="logged-in-menu" class="navbar-nav nav navbar-right">
|
||||
<li class="hidden-lg hidden-md hidden-sm">
|
||||
<a href="{relative_path}/" target="_blank" title="View Forum">
|
||||
View Forum
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-lg hidden-md hidden-sm">
|
||||
<a id="user-profile-link" href="{relative_path}/user/{user.userslug}" target="_top">
|
||||
View Profile
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="hidden-lg hidden-md hidden-sm divider"></li>
|
||||
<li class="hidden-lg hidden-md hidden-sm">
|
||||
<a href="#" class="reload" title="Reload Forum">
|
||||
Reload Forum
|
||||
</a>
|
||||
</li>
|
||||
<li class="hidden-lg hidden-md hidden-sm">
|
||||
<a href="#" class="restart" title="Restart Forum">
|
||||
Restart Forum
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="hidden-lg hidden-md hidden-sm divider"></li>
|
||||
<li component="logout" class="hidden-lg hidden-md hidden-sm">
|
||||
<a href="#">Log out</a>
|
||||
</li>
|
||||
<li style="float:left;">
|
||||
<form class="navbar-form hidden-xs" role="search">
|
||||
<div class="form-group" id="acp-search" >
|
||||
<div class="dropdown" >
|
||||
<input type="text" data-toggle="dropdown" class="form-control" placeholder="/">
|
||||
<ul class="dropdown-menu" role="menu"></ul>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</li>
|
||||
<li id="user_label" class="dropdown pull-right hidden-xs">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="user_dropdown">
|
||||
<img src="{user.picture}"/>
|
||||
</a>
|
||||
<ul id="user-control-list" class="dropdown-menu" aria-labelledby="user_dropdown">
|
||||
<li>
|
||||
<a href="{relative_path}/" target="_blank" title="View Forum">
|
||||
View Forum
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a id="user-profile-link" href="{relative_path}/user/{user.userslug}" target="_top">
|
||||
View Profile
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li>
|
||||
<a href="#" class="reload" title="Reload Forum">
|
||||
Reload Forum
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="restart" title="Restart Forum">
|
||||
Restart Forum
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li component="logout">
|
||||
<a href="#">Log out</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="wrapper">
|
||||
<div id="main-menu" class="nano">
|
||||
<div class="nano-content">
|
||||
<!-- IMPORT admin/partials/menu.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12" id="content">
|
||||
<!-- IMPORT admin/partials/menu.tpl -->
|
||||
<div class="container" id="content">
|
||||
@@ -1,20 +1,5 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-folder"></i> Categories</div>
|
||||
<div class="panel-body">
|
||||
<div class="categories"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="categories"></div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Categories Control Panel</div>
|
||||
<div class="panel-body">
|
||||
<button type="button" class="btn btn-primary btn-block" data-action="create">Create New Category
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button data-action="create" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">add</i>
|
||||
</button>
|
||||
@@ -1,143 +1,134 @@
|
||||
<div class="row">
|
||||
<form role="form" class="category" data-cid="{category.cid}">
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-folder"></i> Category Settings</div>
|
||||
<div class="panel-body category-settings-form">
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<h3 data-edit-target="#cid-{category.cid}-name"><span>{category.name}</span> <small><i class="fa fa-edit"></i></small></h3>
|
||||
<input id="cid-{category.cid}-name" type="text" class="form-control hide" placeholder="Category Name" data-name="name" value="{category.name}" />
|
||||
<h4 data-edit-target="#cid-{category.cid}-description"><span>{category.description}</span> <small><i class="fa fa-edit"></i></small></h4>
|
||||
<input id="cid-{category.cid}-description" data-name="description" placeholder="Category Description" value="{category.description}" class="form-control category_description input-sm description hide"></input>
|
||||
</div>
|
||||
</fieldset>
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href="#category-settings" data-toggle="tab">Category Settings</a></li>
|
||||
<li><a href="#privileges" data-toggle="tab">Privileges</a></li>
|
||||
</ul>
|
||||
<br />
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade active in row" id="category-settings">
|
||||
<div class="col-md-9">
|
||||
<div class="category-settings-form">
|
||||
<fieldset>
|
||||
<label for="cid-{category.cid}-name">Category Name</label>
|
||||
<input id="cid-{category.cid}-name" type="text" class="form-control" placeholder="Category Name" data-name="name" value="{category.name}" /><br />
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-parentCid">Parent Category</label>
|
||||
<br/>
|
||||
<div class="btn-group <!-- IF !category.parent.name -->hide<!-- ENDIF !category.parent.name-->">
|
||||
<button type="button" class="btn btn-default" data-action="changeParent" data-parentCid="{category.parent.cid}"><i class="fa {category.parent.icon}"></i> {category.parent.name}</button>
|
||||
<button type="button" class="btn btn-warning" data-action="removeParent" data-parentCid="{category.parent.cid}"><i class="fa fa-times"></i></button>
|
||||
<label for="cid-{category.cid}-description">Category Description</label>
|
||||
<input id="cid-{category.cid}-description" data-name="description" placeholder="Category Description" value="{category.description}" class="form-control category_description description"></input><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="row">
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-bgColor">Background Colour</label>
|
||||
<input id="cid-{category.cid}-bgColor" placeholder="#0059b2" data-name="bgColor" value="{category.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
<button type="button" class="btn btn-default form-control <!-- IF category.parent.name -->hide<!-- ENDIF category.parent.name-->" data-action="setParent"><i class="fa fa-sitemap"></i> (None)</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-bgColor">Background Colour</label>
|
||||
<input id="cid-{category.cid}-bgColor" placeholder="#0059b2" data-name="bgColor" value="{category.bgColor}" class="form-control category_bgColor" />
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-color">Text Colour</label>
|
||||
<input id="cid-{category.cid}-color" placeholder="#fff" data-name="color" value="{category.color}" class="form-control category_color" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-color">Text Colour</label>
|
||||
<input id="cid-{category.cid}-color" placeholder="#fff" data-name="color" value="{category.color}" class="form-control category_color" />
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-imageClass">Background Image Size</label>
|
||||
<select id="cid-{category.cid}-imageClass" class="form-control" data-name="imageClass" data-value="{category.imageClass}">
|
||||
<option value="auto">auto</option>
|
||||
<option value="cover">cover</option>
|
||||
<option value="contain">contain</option>
|
||||
</select>
|
||||
</div>
|
||||
</div><br />
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-class">Custom Class</label>
|
||||
<input id="cid-{category.cid}-class" type="text" class="form-control" placeholder="col-md-6 col-xs-6" data-name="class" value="{category.class}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-imageClass">Background Image Size</label>
|
||||
<select id="cid-{category.cid}-imageClass" class="form-control" data-name="imageClass" data-value="{category.imageClass}">
|
||||
<option value="auto">auto</option>
|
||||
<option value="cover">cover</option>
|
||||
<option value="contain">contain</option>
|
||||
</select>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-numRecentReplies"># of Recent Replies</label>
|
||||
<input id="cid-{category.cid}-numRecentReplies" type="text" class="form-control" placeholder="2" data-name="numRecentReplies" value="{category.numRecentReplies}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-class">Custom Class</label>
|
||||
<input id="cid-{category.cid}-class" type="text" class="form-control" placeholder="col-md-6 col-xs-6" data-name="class" value="{category.class}" />
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-link">External Link</label>
|
||||
<input id="cid-{category.cid}-link" type="text" class="form-control" placeholder="http://domain.com" data-name="link" value="{category.link}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-numRecentReplies"># of Recent Replies</label>
|
||||
<input id="cid-{category.cid}-numRecentReplies" type="text" class="form-control" placeholder="2" data-name="numRecentReplies" value="{category.numRecentReplies}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="cid-{category.cid}-link">External Link</label>
|
||||
<input id="cid-{category.cid}-link" type="text" class="form-control" placeholder="http://domain.com" data-name="link" value="{category.link}" />
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-key"></i> Privileges / Access Control</div>
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or
|
||||
a per-group basis. You can add a new user to this table by searching for them in the form below.
|
||||
</p>
|
||||
<p class="text-warning">
|
||||
<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting
|
||||
these settings.
|
||||
</p>
|
||||
<hr />
|
||||
<div class="privilege-table-container">
|
||||
<!-- IMPORT admin/partials/categories/privileges.tpl -->
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 options acp-sidebar">
|
||||
<div class="panel panel-default hidden-sm">
|
||||
<div class="panel-heading">Preview</div>
|
||||
<div class="panel-body">
|
||||
<div class="category-preview" style="
|
||||
<!-- IF category.backgroundImage -->background-image: url({category.backgroundImage});<!-- ENDIF category.backgroundImage -->
|
||||
<!-- IF category.bgColor -->background-color: {category.bgColor};<!-- ENDIF category.bgColor -->
|
||||
<!-- IF category.imageClass -->background-size: {category.imageClass};<!-- ENDIF category.imageClass -->
|
||||
color: {category.color};
|
||||
">
|
||||
<div class="icon">
|
||||
<i data-name="icon" value="{category.icon}" class="fa {category.icon} fa-2x"></i>
|
||||
<div class="col-md-3 options acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="category-preview" style="
|
||||
<!-- IF category.backgroundImage -->background-image: url({category.backgroundImage});<!-- ENDIF category.backgroundImage -->
|
||||
<!-- IF category.bgColor -->background-color: {category.bgColor};<!-- ENDIF category.bgColor -->
|
||||
<!-- IF category.imageClass -->background-size: {category.imageClass};<!-- ENDIF category.imageClass -->
|
||||
color: {category.color};
|
||||
">
|
||||
<div class="icon">
|
||||
<i data-name="icon" value="{category.icon}" class="fa {category.icon} fa-2x"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group btn-group-justified">
|
||||
<div class="btn-group">
|
||||
<button type="button" data-cid="{category.cid}" data-name="image" data-value="{category.image}" class="btn btn-default upload-button"><i class="fa fa-upload"></i> Upload</button>
|
||||
</div>
|
||||
<!-- IF category.image -->
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-warning delete-image"><i data-name="icon" value="fa-times" class="fa fa-times"></i> Remove</button>
|
||||
</div>
|
||||
<!-- ENDIF category.image -->
|
||||
</div><br />
|
||||
|
||||
<fieldset>
|
||||
<div class="form-group text-center">
|
||||
<label for="cid-{category.cid}-parentCid">Parent Category</label>
|
||||
<br/>
|
||||
<div class="btn-group <!-- IF !category.parent.name -->hide<!-- ENDIF !category.parent.name-->">
|
||||
<button type="button" class="btn btn-default" data-action="changeParent" data-parentCid="{category.parent.cid}"><i class="fa {category.parent.icon}"></i> {category.parent.name}</button>
|
||||
<button type="button" class="btn btn-warning" data-action="removeParent" data-parentCid="{category.parent.cid}"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
<button type="button" class="btn btn-default btn-block <!-- IF category.parent.name -->hide<!-- ENDIF category.parent.name-->" data-action="setParent"><i class="fa fa-sitemap"></i> (None)</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr />
|
||||
<button class="btn btn-danger btn-block purge"><i class="fa fa-eraser"></i> Purge Category</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group btn-group-justified">
|
||||
<div class="btn-group">
|
||||
<button type="button" data-cid="{category.cid}" data-name="image" data-value="{category.image}" class="btn btn-default upload-button"><i class="fa fa-upload"></i> Upload</button>
|
||||
</div>
|
||||
<!-- IF category.image -->
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-warning delete-image"><i data-name="icon" value="fa-times" class="fa fa-times"></i> Remove</button>
|
||||
</div>
|
||||
<!-- ENDIF category.image -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Categories Control Panel</div>
|
||||
<div class="panel-body">
|
||||
<div class="btn-group btn-group-justified">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-primary save">Save</button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-default revert">Revert</button>
|
||||
<div class="tab-pane fade col-xs-12" id="privileges">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
You can configure the access control privileges for this category in this section. Privileges can be granted on a per-user or
|
||||
a per-group basis. You can add a new user to this table by searching for them in the form below.
|
||||
</p>
|
||||
<p class="text-warning">
|
||||
<strong>Note</strong>: Privilege settings take effect immediately. It is not necessary to save the category after adjusting
|
||||
these settings.
|
||||
</p>
|
||||
<hr />
|
||||
<div class="privilege-table-container">
|
||||
<!-- IMPORT admin/partials/categories/privileges.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<button class="btn btn-danger btn-block btn-xs purge"><i class="fa fa-eraser"></i> Purge Category</button>
|
||||
<p class="help-block">
|
||||
Purging a category will remove all topics and posts, and delete the category from the database. If you want to
|
||||
remove a category <em>temporarily</em>, you'll want to "disable" the category instead.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
|
||||
<input type="hidden" template-variable="cid" value="{category.cid}" />
|
||||
@@ -1,73 +1,72 @@
|
||||
<div class="flags">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-flag"></i> Flags</div>
|
||||
<div class="panel-body" data-next="{next}">
|
||||
<form id="flag-search" method="GET" action="flags">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>Flags by user</label>
|
||||
<input type="text" class="form-control" id="byUsername" placeholder="Search flagged posts by username" name="byUsername" value="{byUsername}">
|
||||
</div>
|
||||
<div data-next="{next}">
|
||||
<form id="flag-search" method="GET" action="flags">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>Flags by user</label>
|
||||
<input type="text" class="form-control" id="byUsername" placeholder="Search flagged posts by username" name="byUsername" value="{byUsername}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Sort By</label>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<select id="flag-sort-by" class="form-control" name="sortBy">
|
||||
<option value="count">Most Flags</option>
|
||||
<option value="time">Most Recent</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-default">[[global:search]]</button>
|
||||
</form>
|
||||
<hr/>
|
||||
|
||||
<div class="post-container" data-next="{next}">
|
||||
<!-- IF !posts.length -->
|
||||
No flagged posts!
|
||||
<!-- ENDIF !posts.length-->
|
||||
|
||||
<!-- BEGIN posts -->
|
||||
<div>
|
||||
<div class="panel panel-default" data-pid="{posts.pid}" data-tid="{posts.topic.tid}">
|
||||
<div class="panel-body">
|
||||
<a href="{config.relative_path}/user/{posts.user.userslug}">
|
||||
<img title="{posts.user.username}" class="img-rounded user-img" src="{posts.user.picture}">
|
||||
</a>
|
||||
|
||||
<a href="{config.relative_path}/user/{posts.user.userslug}">
|
||||
<strong><span>{posts.user.username}</span></strong>
|
||||
</a>
|
||||
<div class="content">
|
||||
<p>{posts.content}</p>
|
||||
<p class="fade-out"></p>
|
||||
</div>
|
||||
<small>
|
||||
<span class="pull-right">
|
||||
Posted in <a href="{config.relative_path}/category/{posts.category.slug}" target="_blank"><i class="fa {posts.category.icon}"></i> {posts.category.name}</a>, <span class="timeago" title="{posts.relativeTime}"></span> •
|
||||
<a href="{config.relative_path}/topic/{posts.topic.slug}/{posts.index}" target="_blank">Read More</a>
|
||||
</span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="badge badge-warning"><i class="fa fa-flag"></i> {posts.flags}</span>
|
||||
<button class="btn btn-warning dismiss">Dismiss</button>
|
||||
<button class="btn btn-danger delete">Delete</button>
|
||||
<br/><br/>
|
||||
</div>
|
||||
<!-- END posts -->
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Sort By</label>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<select id="flag-sort-by" class="form-control" name="sortBy">
|
||||
<option value="count">Most Flags</option>
|
||||
<option value="time">Most Recent</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">[[global:search]]</button>
|
||||
</form>
|
||||
<br />
|
||||
<hr/>
|
||||
|
||||
<div class="post-container" data-next="{next}">
|
||||
<!-- IF !posts.length -->
|
||||
No flagged posts!
|
||||
<!-- ENDIF !posts.length-->
|
||||
|
||||
<!-- BEGIN posts -->
|
||||
<div>
|
||||
<div class="panel panel-default" data-pid="{posts.pid}" data-tid="{posts.topic.tid}">
|
||||
<div class="panel-body">
|
||||
<a href="{config.relative_path}/user/{posts.user.userslug}">
|
||||
<img title="{posts.user.username}" class="img-rounded user-img" src="{posts.user.picture}">
|
||||
</a>
|
||||
|
||||
<a href="{config.relative_path}/user/{posts.user.userslug}">
|
||||
<strong><span>{posts.user.username}</span></strong>
|
||||
</a>
|
||||
<div class="content">
|
||||
<p>{posts.content}</p>
|
||||
<p class="fade-out"></p>
|
||||
</div>
|
||||
<small>
|
||||
<span class="pull-right">
|
||||
Posted in <a href="{config.relative_path}/category/{posts.category.slug}" target="_blank"><i class="fa {posts.category.icon}"></i> {posts.category.name}</a>, <span class="timeago" title="{posts.relativeTime}"></span> •
|
||||
<a href="{config.relative_path}/topic/{posts.topic.slug}/{posts.index}" target="_blank">Read More</a>
|
||||
</span>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="badge badge-warning"><i class="fa fa-flag"></i> {posts.flags}</span>
|
||||
<button class="btn btn-warning dismiss">Dismiss</button>
|
||||
<button class="btn btn-danger delete">Delete</button>
|
||||
<br/><br/>
|
||||
</div>
|
||||
<!-- END posts -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Flags Control Panel</div>
|
||||
|
||||
@@ -1,97 +1,78 @@
|
||||
<div class="row">
|
||||
<form role="form" class="group" data-groupname="{group.displayName}">
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-folder"></i> Group Settings</div>
|
||||
<div class="panel-body group-settings-form">
|
||||
|
||||
<div class="group-settings-form">
|
||||
<fieldset>
|
||||
<label for="change-group-name">Name</label>
|
||||
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" value="{group.displayName}" <!-- IF group.system -->readonly<!-- ENDIF group.system -->/><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="change-group-name">Name</label>
|
||||
<input type="text" class="form-control" id="change-group-name" placeholder="Group Name" value="{group.displayName}" <!-- IF group.system -->readonly<!-- ENDIF group.system -->/>
|
||||
<label for="change-group-desc">Description</label>
|
||||
<input type="text" class="form-control" id="change-group-desc" placeholder="A short description about your group" value="{group.description}" /><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-user-title">Title of Members</label>
|
||||
<input type="text" class="form-control" id="change-group-user-title" placeholder="The title of users if they are a member of this group" value="{group.userTitle}"/><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-icon">Group Icon</label><br/>
|
||||
<i id="group-icon" class="fa fa-2x <!-- IF group.icon -->{group.icon}<!-- ELSE -->fa-shield<!-- ENDIF group.icon -->" value="{group.icon}"></i><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<label for="change-group-label-color">Group Label Color</label>
|
||||
<span id="group-label-preview" class="label label-default" style="background:<!-- IF group.labelColor -->{group.labelColor}<!-- ELSE -->#000000<!-- ENDIF group.labelColor -->;">{group.userTitle}</span>
|
||||
<input id="change-group-label-color" placeholder="#0059b2" data-name="bgColor" value="{group.labelColor}" class="form-control" /><br />
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-private" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private-->> <strong>[[groups:details.private]]</strong>
|
||||
<p class="help-block">
|
||||
[[groups:details.private_help]]
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="change-group-desc">Description</label>
|
||||
<input type="text" class="form-control" id="change-group-desc" placeholder="A short description about your group" value="{group.description}" />
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-hidden" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden-->> <strong>[[groups:details.hidden]]</strong>
|
||||
<p class="help-block">
|
||||
[[groups:details.hidden_help]]
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="change-group-user-title">Title of Members</label>
|
||||
<input type="text" class="form-control" id="change-group-user-title" placeholder="The title of users if they are a member of this group" value="{group.userTitle}"/>
|
||||
</div>
|
||||
<label for="add-member">Add User to Group</label>
|
||||
<input type="text" class="form-control" id="group-details-search" placeholder="Search Users" />
|
||||
<ul class="members user-list" id="group-details-search-results"></ul>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="change-group-icon">Group Icon</label><br/>
|
||||
<i id="group-icon" class="fa fa-2x <!-- IF group.icon -->{group.icon}<!-- ELSE -->fa-shield<!-- ENDIF group.icon -->" value="{group.icon}"></i>
|
||||
</div>
|
||||
</fieldset>
|
||||
<label>Members</label>
|
||||
<p>Click on a user to remove them from the group</p>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="change-group-label-color">Group Label Color</label>
|
||||
<span id="group-label-preview" class="label label-default" style="background:<!-- IF group.labelColor -->{group.labelColor}<!-- ELSE -->#000000<!-- ENDIF group.labelColor -->;">{group.userTitle}</span>
|
||||
<input id="change-group-label-color" placeholder="#0059b2" data-name="bgColor" value="{group.labelColor}" class="form-control" />
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-private" name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private-->> <strong>[[groups:details.private]]</strong>
|
||||
<p class="help-block">
|
||||
[[groups:details.private_help]]
|
||||
</p>
|
||||
</label>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<ul class="members current_members user-list">
|
||||
<!-- BEGIN group.members -->
|
||||
<li data-uid="{group.members.uid}">
|
||||
<img src="{group.members.picture}" />
|
||||
<span>{group.members.username}</span>
|
||||
</li>
|
||||
<!-- END group.members -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input id="group-hidden" name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden-->> <strong>[[groups:details.hidden]]</strong>
|
||||
<p class="help-block">
|
||||
[[groups:details.hidden_help]]
|
||||
</p>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label for="add-member">Add User to Group</label>
|
||||
<input type="text" class="form-control" id="group-details-search" placeholder="Search Users" />
|
||||
<ul class="members user-list" id="group-details-search-results"></ul>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<div class="col-xs-12">
|
||||
<label>Members</label>
|
||||
<p>Click on a user to remove them from the group</p>
|
||||
<ul class="members current_members user-list">
|
||||
<!-- BEGIN group.members -->
|
||||
<li data-uid="{group.members.uid}">
|
||||
<img src="{group.members.picture}" />
|
||||
<span>{group.members.username}</span>
|
||||
</li>
|
||||
<!-- END group.members -->
|
||||
</ul>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,55 +1,53 @@
|
||||
<div class="registration">
|
||||
<div class="col-lg-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><i class="fa fa-group"></i> Registration Queue</div>
|
||||
<div class="panel-body">
|
||||
<table class="table table-striped users-list">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>IP</th>
|
||||
<th>Time</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<!-- BEGIN users -->
|
||||
<tr data-username="{users.username}">
|
||||
<td>
|
||||
<!-- IF users.usernameSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.username.frequency} Appears: {users.spamData.username.appears} Confidence: {users.spamData.username.confidence}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.usernameSpam -->
|
||||
{users.username}
|
||||
</td>
|
||||
<td>
|
||||
<!-- IF users.emailSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.email.frequency} Appears: {users.spamData.email.appears}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.emailSpam -->
|
||||
{users.email}
|
||||
</td>
|
||||
<td>
|
||||
<!-- IF users.ipSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.ip.frequency} Appears: {users.spamData.ip.appears}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.ipSpam -->
|
||||
{users.ip}
|
||||
</td>
|
||||
<td>
|
||||
<span class="timeago" title="{users.timestamp}"></span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-success btn-xs" data-action="accept"><i class="fa fa-check"></i></button>
|
||||
<button class="btn btn-danger btn-xs" data-action="delete"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END users -->
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-striped users-list">
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>IP</th>
|
||||
<th>Time</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
<!-- IF !users.length -->
|
||||
<p>
|
||||
There are no users in the registration queue. To enable this feature go to <a href="{config.relative_path}/admin/settings/user">Settings -> User -> Authentication</a> and set <strong>Registration Type</strong> to "Admin Approval".
|
||||
</p>
|
||||
<!-- ENDIF !users.length -->
|
||||
<!-- BEGIN users -->
|
||||
<tr data-username="{users.username}">
|
||||
<td>
|
||||
<!-- IF users.usernameSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.username.frequency} Appears: {users.spamData.username.appears} Confidence: {users.spamData.username.confidence}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.usernameSpam -->
|
||||
{users.username}
|
||||
</td>
|
||||
<td>
|
||||
<!-- IF users.emailSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.email.frequency} Appears: {users.spamData.email.appears}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.emailSpam -->
|
||||
{users.email}
|
||||
</td>
|
||||
<td>
|
||||
<!-- IF users.ipSpam -->
|
||||
<i class="fa fa-times-circle text-danger" title="Frequency: {users.spamData.ip.frequency} Appears: {users.spamData.ip.appears}"></i>
|
||||
<!-- ELSE -->
|
||||
<i class="fa fa-check text-success"></i>
|
||||
<!-- ENDIF users.ipSpam -->
|
||||
{users.ip}
|
||||
</td>
|
||||
<td>
|
||||
<span class="timeago" title="{users.timestamp}"></span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="btn-group pull-right">
|
||||
<button class="btn btn-success btn-xs" data-action="accept"><i class="fa fa-check"></i></button>
|
||||
<button class="btn btn-danger btn-xs" data-action="delete"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- END users -->
|
||||
</table>
|
||||
</div>
|
||||
@@ -1,34 +1,30 @@
|
||||
<div class="tags">
|
||||
<div class="tags row">
|
||||
|
||||
<div class="col-lg-9">
|
||||
<!-- IF !tags.length -->
|
||||
<div class="alert alert-warning">
|
||||
<strong>Your forum does not have any topics with tags yet!</strong>
|
||||
</div>
|
||||
<!-- ENDIF !tags.length -->
|
||||
<div class="panel panel-default tag-management">
|
||||
<div class="panel-heading">Tag Management</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="tag-list">
|
||||
<!-- BEGIN tags -->
|
||||
<div class="tag-row" data-tag="{tags.value}">
|
||||
<div data-value="{tags.value}">
|
||||
<span class="tag-item" data-tag="{tags.value}" style="<!-- IF tags.color -->color: {tags.color};<!-- ENDIF tags.color --><!-- IF tags.bgColor -->background-color: {tags.bgColor};<!-- ENDIF tags.bgColor -->">{tags.value}</span><span class="tag-topic-count"><a href="{config.relative_path}/tags/{tags.value}" target="_blank">{tags.score}</a></span>
|
||||
<!-- IF !tags.length -->
|
||||
Your forum does not have any topics with tags yet.
|
||||
<!-- ENDIF !tags.length -->
|
||||
|
||||
<div class="tag-list">
|
||||
<!-- BEGIN tags -->
|
||||
<div class="tag-row" data-tag="{tags.value}">
|
||||
<div data-value="{tags.value}">
|
||||
<span class="tag-item" data-tag="{tags.value}" style="<!-- IF tags.color -->color: {tags.color};<!-- ENDIF tags.color --><!-- IF tags.bgColor -->background-color: {tags.bgColor};<!-- ENDIF tags.bgColor -->">{tags.value}</span><span class="tag-topic-count"><a href="{config.relative_path}/tags/{tags.value}" target="_blank">{tags.score}</a></span>
|
||||
</div>
|
||||
<div class="tag-modal hidden">
|
||||
<div class="form-group">
|
||||
<label for="bgColor">Background Colour</label>
|
||||
<input id="bgColor" placeholder="#ffffff" data-name="bgColor" value="{tags.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
<div class="tag-modal hidden">
|
||||
<div class="form-group">
|
||||
<label for="bgColor">Background Colour</label>
|
||||
<input id="bgColor" placeholder="#ffffff" data-name="bgColor" value="{tags.bgColor}" class="form-control category_bgColor" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="color">Text Colour</label>
|
||||
<input id="color" placeholder="#a2a2a2" data-name="color" value="{tags.color}" class="form-control category_color" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="color">Text Colour</label>
|
||||
<input id="color" placeholder="#a2a2a2" data-name="color" value="{tags.color}" class="form-control category_color" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- END tags -->
|
||||
</div>
|
||||
<!-- END tags -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -39,8 +35,8 @@
|
||||
<div class="panel-heading">Modify Tag</div>
|
||||
<div class="panel-body">
|
||||
<p>Select tags via clicking and/or dragging, use shift to select multiple.</p>
|
||||
<button class="btn btn-primary btn-md" id="modify">Modify Tags</button>
|
||||
<button class="btn btn-warning btn-md" id="deleteSelected">Delete Tags</button>
|
||||
<button class="btn btn-primary btn-block" id="modify">Modify Tags</button>
|
||||
<button class="btn btn-warning btn-block" id="deleteSelected">Delete Tags</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -4,12 +4,11 @@
|
||||
<div class="panel-heading"><i class="fa fa-user"></i> Users</div>
|
||||
<div class="panel-body">
|
||||
<ul class="nav nav-pills">
|
||||
<li class='active'><a href='{config.relative_path}/admin/manage/users/latest'>Latest Users</a></li>
|
||||
<li class=''><a href='{config.relative_path}/admin/manage/users/sort-posts'>Top Posters</a></li>
|
||||
<li class=''><a href='{config.relative_path}/admin/manage/users/sort-reputation'>Most Reputation</a></li>
|
||||
<li class=''><a href='{config.relative_path}/admin/manage/users/banned'>Banned</a></li>
|
||||
<li class=''><a href='{config.relative_path}/admin/manage/users/registration'>Registration Queue</a></li>
|
||||
<li class=''><a href='{config.relative_path}/admin/manage/users/search'>User Search</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/latest'>Latest Users</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/sort-posts'>Top Posters</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/sort-reputation'>Most Reputation</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/banned'>Banned</a></li>
|
||||
<li><a href='{config.relative_path}/admin/manage/users/search'>User Search</a></li>
|
||||
|
||||
|
||||
<div class="btn-group pull-right">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<i data-name="icon" value="{categories.icon}" class="fa {categories.icon}"></i>
|
||||
</div>
|
||||
<div class="information">
|
||||
<h5 class="header">{categories.name}</h5>
|
||||
<h5 class="category-header">{categories.name}</h5>
|
||||
<p class="description">{categories.descriptionParsed}</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -16,10 +16,10 @@
|
||||
<div class="col-md-3">
|
||||
<div class="clearfix pull-right text-right">
|
||||
<div class="btn-group">
|
||||
<button data-action="toggle" data-disabled="{categories.disabled}" class="btn btn-xs <!-- IF categories.disabled -->btn-primary<!-- ELSE -->btn-danger<!-- ENDIF categories.disabled -->">
|
||||
<button data-action="toggle" data-disabled="{categories.disabled}" class="btn <!-- IF categories.disabled -->btn-primary<!-- ELSE -->btn-danger<!-- ENDIF categories.disabled -->">
|
||||
<!-- IF categories.disabled -->Enable<!-- ELSE -->Disable<!-- ENDIF categories.disabled -->
|
||||
</button>
|
||||
<a href="./categories/{categories.cid}" class="btn btn-default btn-xs">Edit</a>
|
||||
<a href="./categories/{categories.cid}" class="btn btn-default">Edit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,16 +15,14 @@
|
||||
<!-- END privileges.users -->
|
||||
<tr>
|
||||
<td colspan="{privileges.columnCount}">
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right" data-ajaxify="false" data-action="search.user"><i class="fa fa-plus"></i> Add User</button>
|
||||
<button type="button" class="btn btn-primary pull-right" data-ajaxify="false" data-action="search.user"> Add User</button>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ELSE -->
|
||||
<tr>
|
||||
<td colspan="{privileges.columnCount}">
|
||||
<div class="alert alert-info">
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right" data-ajaxify="false" data-action="search.user"><i class="fa fa-plus"></i> Add User</button>
|
||||
No user-specific privileges in this category.
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary pull-right" data-ajaxify="false" data-action="search.user"> Add User</button>
|
||||
No user-specific privileges in this category.
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ENDIF privileges.users.length -->
|
||||
@@ -52,16 +50,14 @@
|
||||
<!-- END privileges.groups -->
|
||||
<tr>
|
||||
<td colspan="{privileges.columnCount}">
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right" data-ajaxify="false" data-action="search.group"><i class="fa fa-plus"></i> Add Group</button>
|
||||
<button type="button" class="btn btn-primary pull-right" data-ajaxify="false" data-action="search.group"> Add Group</button>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ELSE -->
|
||||
<tr>
|
||||
<td colspan="{privileges.columnCount}">
|
||||
<div class="alert alert-info">
|
||||
<button type="button" class="btn btn-primary btn-xs pull-right" data-ajaxify="false" data-action="search.group"><i class="fa fa-plus"></i> Add Group</button>
|
||||
No group-specific privileges in this category.
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary pull-right" data-ajaxify="false" data-action="search.group"> Add Group</button>
|
||||
No group-specific privileges in this category.
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ENDIF privileges.groups.length -->
|
||||
|
||||
@@ -1,103 +1,250 @@
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-dashboard"></i> General</li>
|
||||
<li class="active"><a href="{relative_path}/admin/general/dashboard">Dashboard</a></li>
|
||||
<li><a href="{relative_path}/admin/general/homepage">Home Page</a></li>
|
||||
<li><a href="{relative_path}/admin/general/navigation">Navigation</a></li>
|
||||
<li><a href="{relative_path}/admin/general/languages">Languages</a></li>
|
||||
<li><a href="{relative_path}/admin/general/sounds">Sounds</a></li>
|
||||
</ul>
|
||||
<nav id="menu" class="visible-xs visible-sm">
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">General</h3>
|
||||
<ul class="menu-section-list">
|
||||
<a href="{relative_path}/admin/general/dashboard">Dashboard</a>
|
||||
<li><a href="{relative_path}/admin/general/homepage">Home Page</a></li>
|
||||
<li><a href="{relative_path}/admin/general/navigation">Navigation</a></li>
|
||||
<li><a href="{relative_path}/admin/general/languages">Languages</a></li>
|
||||
<li><a href="{relative_path}/admin/general/sounds">Sounds</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Manage</h3>
|
||||
<ul class="menu-section-list">
|
||||
<li><a href="{relative_path}/admin/manage/categories">Categories</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/users">Users</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/registration">Registration Queue</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/groups">Groups</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/flags">Flags</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Settings</h3>
|
||||
<ul class="menu-section-list">
|
||||
<li><a href="{relative_path}/admin/settings/general">General</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/reputation">Reputation</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/email">Email</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/user">User</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/group">Group</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/guest">Guests</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/post">Post</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/pagination">Pagination</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/notifications">Notifications</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/web-crawler">Web Crawler</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/sockets">Sockets</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/advanced">Advanced</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Appearance</h3>
|
||||
<ul class="menu-section-list">
|
||||
<li><a href="{relative_path}/admin/appearance/themes">Themes</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/skins">Skins</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/customise">Custom HTML & CSS</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Extend</h3>
|
||||
<ul class="menu-section-list">
|
||||
<li><a href="{relative_path}/admin/extend/plugins">Plugins</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/widgets">Widgets</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/rewards">Rewards</a></li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- IF authentication.length -->
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Social Authentication</h3>
|
||||
<ul class="menu-section-list">
|
||||
<!-- BEGIN authentication -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{authentication.route}">{authentication.name}</a>
|
||||
</li>
|
||||
<!-- END authentication -->
|
||||
</ul>
|
||||
</section>
|
||||
<!-- ENDIF authentication.length -->
|
||||
|
||||
<!-- IF plugins.length -->
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Plugins</h3>
|
||||
<ul class="menu-section-list">
|
||||
<!-- BEGIN plugins -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{plugins.route}">{plugins.name}</a>
|
||||
</li>
|
||||
<!-- END plugins -->
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section class="menu-section">
|
||||
<h3 class="menu-section-title">Advanced</h3>
|
||||
<ul class="menu-section-list">
|
||||
<li><a href="{relative_path}/admin/advanced/database">Database</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/events">Events</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/logs">Logs</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/post-cache">Post Cache</a></li>
|
||||
<!-- IF env -->
|
||||
<li><a href="{relative_path}/admin/development/logger">Logger</a></li>
|
||||
<!-- ENDIF env -->
|
||||
</ul>
|
||||
</section>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<main id="panel">
|
||||
<nav class="header" id="header">
|
||||
<div class="pull-left">
|
||||
<button id="mobile-menu">
|
||||
<div class="bar"></div>
|
||||
<div class="bar"></div>
|
||||
<div class="bar"></div>
|
||||
</button>
|
||||
<h1 id="main-page-title"></h1>
|
||||
</div>
|
||||
|
||||
<ul id="user_label" class="pull-right">
|
||||
<li class="dropdown pull-right">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="user_dropdown">
|
||||
<i class="fa fa-ellipsis-v"></i>
|
||||
</a>
|
||||
<ul id="user-control-list" class="dropdown-menu" aria-labelledby="user_dropdown">
|
||||
<li>
|
||||
<a href="{relative_path}/" target="_blank" title="View Forum">
|
||||
View Forum
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li>
|
||||
<a href="#" class="reload" title="Reload Forum">
|
||||
Reload Forum
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="restart" title="Restart Forum">
|
||||
Restart Forum
|
||||
</a>
|
||||
</li>
|
||||
<li role="presentation" class="divider"></li>
|
||||
<li component="logout">
|
||||
<a href="#">Log out</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<form class="pull-right hidden-sm hidden-xs" role="search">
|
||||
<div class="" id="acp-search" >
|
||||
<div class="dropdown">
|
||||
<input type="text" data-toggle="dropdown" class="form-control" placeholder="Search...">
|
||||
<ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-comments-o"></i> Manage</li>
|
||||
<li><a href="{relative_path}/admin/manage/categories">Categories</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/users">Users</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/groups">Groups</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/flags">Flags</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-cogs"></i> Settings</li>
|
||||
<li><a href="{relative_path}/admin/settings/general">General</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/reputation">Reputation</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/email">Email</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/user">User</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/group">Group</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/guest">Guests</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/post">Post</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/pagination">Pagination</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/notifications">Notifications</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/web-crawler">Web Crawler</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/sockets">Sockets</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/advanced">Advanced</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-paint-brush"></i> Appearance</li>
|
||||
<li><a href="{relative_path}/admin/appearance/themes">Themes</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/skins">Skins</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/customise">Custom HTML & CSS</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-wrench"></i> Extend</li>
|
||||
<li><a href="{relative_path}/admin/extend/plugins">Plugins</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/widgets">Widgets</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/rewards">Rewards</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-hdd-o"></i> Advanced</li>
|
||||
<li><a href="{relative_path}/admin/advanced/database">Database</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/events">Events</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/logs">Logs</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/post-cache">Post Cache</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- IF authentication.length -->
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-facebook-square"></i> Social Authentication</li>
|
||||
<!-- BEGIN authentication -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{authentication.route}">{authentication.name}</a>
|
||||
</li>
|
||||
<!-- END authentication -->
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF authentication.length -->
|
||||
<!-- IF plugins.length -->
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-th"></i> Installed Plugins</li>
|
||||
<!-- BEGIN plugins -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{plugins.route}">
|
||||
<!-- IF plugins.icon -->
|
||||
<i class="fa {plugins.icon}"></i>
|
||||
<!-- ENDIF plugins.icon -->
|
||||
{plugins.name}
|
||||
</a>
|
||||
</li>
|
||||
<!-- END plugins -->
|
||||
<li data-link="1">
|
||||
<a href="{relative_path}/admin/extend/plugins"><i class="fa fa-plus"></i> Install Plugins</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF plugins.length -->
|
||||
<!-- IF env -->
|
||||
<div class="sidebar-nav">
|
||||
<ul class="nav nav-list">
|
||||
<li class="nav-header"><i class="fa fa-fw fa-th"></i> Development</li>
|
||||
<li><a href="{relative_path}/admin/development/logger">Logger</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- ENDIF env -->
|
||||
</form>
|
||||
</ul>
|
||||
<ul id="main-menu">
|
||||
<li class="menu-item">
|
||||
<a href="{relative_path}/admin/general/dashboard">Dashboard</a>
|
||||
</li>
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">General</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/general/homepage">Home Page</a></li>
|
||||
<li><a href="{relative_path}/admin/general/navigation">Navigation</a></li>
|
||||
<li><a href="{relative_path}/admin/general/languages">Languages</a></li>
|
||||
<li><a href="{relative_path}/admin/general/sounds">Sounds</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Manage</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/manage/categories">Categories</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/users">Users</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/registration">Registration Queue</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/groups">Groups</a></li>
|
||||
<li><a href="{relative_path}/admin/manage/flags">Flags</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Settings</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/settings/general">General</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/reputation">Reputation</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/email">Email</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/user">User</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/group">Group</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/guest">Guests</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/post">Post</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/pagination">Pagination</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/tags">Tags</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/notifications">Notifications</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/web-crawler">Web Crawler</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/sockets">Sockets</a></li>
|
||||
<li><a href="{relative_path}/admin/settings/advanced">Advanced</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Appearance</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/appearance/themes">Themes</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/skins">Skins</a></li>
|
||||
<li><a href="{relative_path}/admin/appearance/customise">Custom HTML & CSS</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Extend</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/extend/plugins">Plugins</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/widgets">Widgets</a></li>
|
||||
<li><a href="{relative_path}/admin/extend/rewards">Rewards</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<!-- IF authentication.length -->
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Social Authentication</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<!-- BEGIN authentication -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{authentication.route}">{authentication.name}</a>
|
||||
</li>
|
||||
<!-- END authentication -->
|
||||
</ul>
|
||||
</li>
|
||||
<!-- ENDIF authentication.length -->
|
||||
<!-- IF plugins.length -->
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Plugins</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<!-- BEGIN plugins -->
|
||||
<li>
|
||||
<a href="{relative_path}/admin{plugins.route}">{plugins.name}</a>
|
||||
</li>
|
||||
<!-- END plugins -->
|
||||
<li class="divider"></li>
|
||||
<li data-link="1">
|
||||
<a href="{relative_path}/admin/extend/plugins">Install Plugins</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<!-- ENDIF plugins.length -->
|
||||
<li class="dropdown menu-item">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Advanced</a>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li><a href="{relative_path}/admin/advanced/database">Database</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/events">Events</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/logs">Logs</a></li>
|
||||
<li><a href="{relative_path}/admin/advanced/post-cache">Post Cache</a></li>
|
||||
<!-- IF env -->
|
||||
<li><a href="{relative_path}/admin/development/logger">Logger</a></li>
|
||||
<!-- ENDIF env -->
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
@@ -1,27 +1,24 @@
|
||||
<!-- BEGIN themes -->
|
||||
<li data-type="{themes.type}" data-theme="{themes.id}"<!-- IF themes.css --> data-css="{themes.css}"<!-- ENDIF themes.css -->>
|
||||
<img title="{themes.id}" src="{themes.screenshot_url}" />
|
||||
<div>
|
||||
<div class="pull-right">
|
||||
<button class="btn btn-primary" data-action="use">Use</button>
|
||||
</div>
|
||||
<h4>{themes.name}</h4>
|
||||
<p>
|
||||
{themes.description}
|
||||
<div class="col-xs-4" data-type="{themes.type}" data-theme="{themes.id}"<!-- IF themes.css --> data-css="{themes.css}"<!-- ENDIF themes.css -->>
|
||||
<div class="theme-card mdl-card mdl-shadow--2dp">
|
||||
<div class="mdl-card__title mdl-card--expand" style="background-image: url('{themes.screenshot_url}');"></div>
|
||||
<div class="mdl-card__supporting-text">
|
||||
<h2 class="mdl-card__title-text">{themes.name}</h2>
|
||||
<p>
|
||||
{themes.description}
|
||||
</p>
|
||||
|
||||
<!-- IF themes.url -->
|
||||
(<a href="{themes.url}" target="_blank">Homepage</a>)
|
||||
<p>
|
||||
<a href="{themes.url}" target="_blank">Homepage</a>
|
||||
</p>
|
||||
<!-- ENDIF themes.url -->
|
||||
</p>
|
||||
</div>
|
||||
<div class="mdl-card__actions mdl-card--border">
|
||||
<a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect" data-action="use">
|
||||
Select Theme
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</li>
|
||||
<!-- END themes -->
|
||||
<!-- IF showRevert -->
|
||||
<li data-type="bootswatch" data-theme="" data-css="">
|
||||
<div class="pull-right">
|
||||
<button class="btn btn-primary pull-right" data-action="use">Revert</button>
|
||||
</div>
|
||||
<h4>No Skin</h4>
|
||||
<p>Remove applied skin and revert back to the base colours</p>
|
||||
</li>
|
||||
<!-- ENDIF showRevert -->
|
||||
</div>
|
||||
<!-- END themes -->
|
||||
@@ -1,12 +1,13 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Maintenance Mode</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Maintenance Mode</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="maintenanceMode"> <strong>Maintenance Mode</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="maintenanceMode">
|
||||
<span class="mdl-switch__label"><strong>Maintenance Mode</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<p class="help-block">
|
||||
@@ -21,9 +22,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Domain Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Domain Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="allow-from-uri">Set ALLOW-FROM to Place NodeBB in an iFrame:</label>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Email Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Email Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<p>
|
||||
Please ensure that you have installed a third-party emailer (e.g. PostageApp, Mailgun, Mandrill, SendGrid, etc), otherwise emails will not be sent by NodeBB
|
||||
@@ -21,7 +21,7 @@
|
||||
</p>
|
||||
<input type="text" class="form-control input-lg" id="email:from_name" data-field="email:from_name" placeholder="NodeBB" /><br />
|
||||
</div>
|
||||
<button class="btn btn-block btn-default" type="button" data-action="email.test">Send Test Email</button>
|
||||
<button class="btn btn-primary" type="button" data-action="email.test">Send Test Email</button>
|
||||
<p class="help-block">
|
||||
The test email will be sent to the currently logged in user's email address.
|
||||
</p>
|
||||
@@ -29,13 +29,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Email Subscriptions</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Email Subscriptions</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label for="disableEmailSubscriptions">
|
||||
<input type="checkbox" id="disableEmailSubscriptions" data-field="disableEmailSubscriptions" name="disableEmailSubscriptions" /> Disable subscriber notification emails
|
||||
<label for="disableEmailSubscriptions" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" id="disableEmailSubscriptions" data-field="disableEmailSubscriptions" name="disableEmailSubscriptions" />
|
||||
<span class="mdl-switch__label">Disable subscriber notification emails</span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
</div>
|
||||
|
||||
<div class="col-lg-3 acp-sidebar">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Save Settings</div>
|
||||
<div class="panel-body">
|
||||
<button class="btn btn-primary btn-md" id="save">Save Changes</button>
|
||||
<button class="btn btn-warning btn-md" id="revert">Revert Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button id="save" class="floating-button mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored">
|
||||
<i class="material-icons">save</i>
|
||||
</button>
|
||||
|
||||
<script>
|
||||
require(['admin/settings'], function(Settings) {
|
||||
Settings.prepare();
|
||||
Settings.init();
|
||||
Settings.populateTOC();
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Site Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">
|
||||
Site Settings
|
||||
</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<label>Site Title</label>
|
||||
<input class="form-control" type="text" placeholder="Your Community Name" data-field="title" />
|
||||
|
||||
<div class="checkbox">
|
||||
<label for="showSiteTitle">
|
||||
<input type="checkbox" id="showSiteTitle" data-field="showSiteTitle" name="showSiteTitle" /> Show Site Title in Header
|
||||
<label for="showSiteTitle" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="showSiteTitle" name="showSiteTitle" />
|
||||
<span class="mdl-switch__label">Show Site Title in Header</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -28,9 +31,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Site Logo</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Site Logo</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<div class="form-group">
|
||||
<label for="logoUrl">Image</label>
|
||||
<div class="input-group">
|
||||
@@ -54,9 +57,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Favicon</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">
|
||||
Favicon
|
||||
</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<div class="form-group">
|
||||
<div class="input-group">
|
||||
<input id="faviconUrl" type="text" class="form-control" placeholder="favicon.ico" data-field="brand:favicon" data-action="upload" data-target="faviconUrl" data-route="{config.relative_path}/api/admin/uploadfavicon" readonly />
|
||||
@@ -68,23 +73,26 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Miscellaneous</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Miscellaneous</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="useOutgoingLinksPage"> <strong>Use Outgoing Links Warning Page</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="useOutgoingLinksPage">
|
||||
<span class="mdl-switch__label"><strong>Use Outgoing Links Warning Page</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="disableSocialButtons"> <strong>Disable social buttons</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="disableSocialButtons">
|
||||
<span class="mdl-switch__label"><strong>Disable social buttons</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="disableChat"> <strong>Disable chat</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" id="showSiteTitle" data-field="disableChat">
|
||||
<span class="mdl-switch__label"><strong>Disable chat</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">General</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">General</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form role="form">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowPrivateGroups" checked> <strong>Private Groups</strong>
|
||||
<p class="help-block">
|
||||
If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>
|
||||
</p>
|
||||
<p class="help-block">
|
||||
<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.
|
||||
</p>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowPrivateGroups" checked>
|
||||
<span class="mdl-switch__label"><strong>Private Groups</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p class="help-block">
|
||||
If enabled, joining of groups requires the approval of the group owner <em>(Default: enabled)</em>
|
||||
</p>
|
||||
<p class="help-block">
|
||||
<strong>Beware!</strong> If this option is disabled and you have private groups, they automatically become public.
|
||||
</p>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowGroupCreation"> <strong>Allow Group Creation</strong>
|
||||
<p class="help-block">
|
||||
If enabled, users can create groups <em>(Default: disabled)</em>
|
||||
</p>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowGroupCreation">
|
||||
<span class="mdl-switch__label"><strong>Allow Group Creation</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p class="help-block">
|
||||
If enabled, users can create groups <em>(Default: disabled)</em>
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,38 +1,42 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Guests</div>
|
||||
<div class="panel-body">
|
||||
<p class="alert alert-info">
|
||||
These options affect guest users as a whole. Control over which categories a guest can see or post to is handled in
|
||||
the categories themselves
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Guest Handles</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form role="form">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowGuestHandles"> <strong>Allow guest handles</strong>
|
||||
<p class="help-block">
|
||||
This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled,
|
||||
the will simply be called "Guest" (or the equivalent in the forum's selected language)
|
||||
</p>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestHandles">
|
||||
<span class="mdl-switch__label"><strong>Allow guest handles</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<p class="help-block">
|
||||
This option exposes a new field that allows guests to pick a name to associate with each post they make. If disabled,
|
||||
the will simply be called "Guest"
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Guest Privileges</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form role="form">
|
||||
<div class="checkbox">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestSearching">
|
||||
<span class="mdl-switch__label"><strong>Allow guests to search without logging in</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowGuestSearching"> <strong>Allow guests to search without logging in</strong>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowGuestUserSearching"> <strong>Allow guests to search users without logging in</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowGuestUserSearching">
|
||||
<span class="mdl-switch__label"><strong>Allow guests to search users without logging in</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1 +1,11 @@
|
||||
<div class="col-lg-9">
|
||||
<div class="settings">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 content-header">
|
||||
Contents
|
||||
</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<nav class="section-content">
|
||||
<ul></ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,8 +1,8 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Notifications</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Notifications</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Welcome Notification</strong><br /> <textarea class="form-control" data-field="welcomeNotification"></textarea><br />
|
||||
<strong>Welcome Notification Link</strong><br /> <input type="text" class="form-control" data-field="welcomeLink"><br />
|
||||
|
||||
@@ -1,30 +1,31 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Pagination Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Pagination Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="usePagination"> <strong>Paginate topics and posts instead of using infinite scroll.</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="usePagination">
|
||||
<span class="mdl-switch__label"><strong>Paginate topics and posts instead of using infinite scroll.</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Topic Pagination</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Topic Pagination</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Posts per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="postsPerPage">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Category Pagination</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Category Pagination</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Topics per Page</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerPage"><br />
|
||||
<strong>Initial Number of Topics to Load on Unread, Recent, and Popular</strong><br /> <input type="text" class="form-control" value="20" data-field="topicsPerList">
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Post Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Post Sorting</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label>Default Post Sorting</label>
|
||||
@@ -20,55 +20,57 @@
|
||||
<option value="most_posts">Most Posts</option>
|
||||
</select>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Posting Restrictions</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label>Seconds between Posts</label>
|
||||
<input type="number" class="form-control" value="10" data-field="postDelay">
|
||||
<input type="text" class="form-control" value="10" data-field="postDelay">
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Seconds between Posts for New Users</label>
|
||||
<input type="number" class="form-control" value="120" data-field="newbiePostDelay">
|
||||
<input type="text" class="form-control" value="120" data-field="newbiePostDelay">
|
||||
</div>
|
||||
<div class="form-group col-sm-6">
|
||||
<div class="form-group">
|
||||
<label>Reputation threshold before this restriction is lifted</label>
|
||||
<input type="number" class="form-control" value="3" data-field="newbiePostDelayThreshold">
|
||||
<input type="text" class="form-control" value="3" data-field="newbiePostDelayThreshold">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Seconds before new user can post</label>
|
||||
<input type="number" class="form-control" value="10" data-field="initialPostDelay">
|
||||
<input type="text" class="form-control" value="10" data-field="initialPostDelay">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Number of seconds users are allowed to edit posts after posting. (0 disabled)</label>
|
||||
<input type="number" class="form-control" value="0" data-field="postEditDuration">
|
||||
<input type="text" class="form-control" value="0" data-field="postEditDuration">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Minimum Title Length</label>
|
||||
<input type="number" class="form-control" value="3" data-field="minimumTitleLength">
|
||||
<input type="text" class="form-control" value="3" data-field="minimumTitleLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Maximum Title Length</label>
|
||||
<input type="number" class="form-control" value="255" data-field="maximumTitleLength">
|
||||
<input type="text" class="form-control" value="255" data-field="maximumTitleLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Minimum Post Length</label>
|
||||
<input type="number" class="form-control" value="8" data-field="minimumPostLength">
|
||||
<input type="text" class="form-control" value="8" data-field="minimumPostLength">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Maximum Post Length</label>
|
||||
<input type="number" class="form-control" value="32767" data-field="maximumPostLength">
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="trackIpPerPost"> <strong>Track IP Address for each post</strong>
|
||||
</label>
|
||||
<input type="text" class="form-control" value="32767" data-field="maximumPostLength">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Teaser Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Teaser Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label>Teaser Post</label>
|
||||
@@ -82,23 +84,26 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Signature Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Signature Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="disableSignatures"> <strong>Disable signatures</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="disableSignatures">
|
||||
<span class="mdl-switch__label"><strong>Disable signatures</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="signatures:disableLinks"> <strong>Disable links in signatures</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="signatures:disableLinks">
|
||||
<span class="mdl-switch__label"><strong>Disable links in signatures</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="signatures:disableImages"> <strong>Disable images in signatures</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="signatures:disableImages">
|
||||
<span class="mdl-switch__label"><strong>Disable images in signatures</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -109,34 +114,37 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Chat Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Chat Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Chat Message Inbox Size</strong><br /> <input type="text" class="form-control" value="250" data-field="chatMessageInboxSize">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Upload Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Upload Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowFileUploads"> <strong>Allow users to upload regular files</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowFileUploads">
|
||||
<span class="mdl-switch__label"><strong>Allow users to upload regular files</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="privateUploads"> <strong>Make uploaded files private</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="privateUploads">
|
||||
<span class="mdl-switch__label"><strong>Make uploaded files private</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<strong>Maximum File Size</strong><br /> <input type="text" class="form-control" value="2048" data-field="maximumFileSize"><br />
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowTopicsThumbnail"> <strong>Allow users to upload topic thumbnails</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowTopicsThumbnail">
|
||||
<span class="mdl-switch__label"><strong>Allow users to upload topic thumbnails</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<strong>Topic Thumb Size</strong><br /> <input type="text" class="form-control" value="120" data-field="topicThumbSize"> <br />
|
||||
@@ -147,24 +155,24 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Composer Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Composer Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<p>
|
||||
The following settings govern the functionality and/or appearance of the post composer shown
|
||||
to users when they create new topics, or reply to existing topics.
|
||||
</p>
|
||||
<div class="checkbox">
|
||||
<label for="composer:showHelpTab">
|
||||
<input type="checkbox" id="composer:showHelpTab" data-field="composer:showHelpTab" checked />
|
||||
Show "Help" tab
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="composer:showHelpTab">
|
||||
<input class="mdl-switch__input" type="checkbox" id="composer:showHelpTab" data-field="composer:showHelpTab" checked />
|
||||
<span class="mdl-switch__label">Show "Help" tab</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label for="composer:allowPluginHelp">
|
||||
<input type="checkbox" id="composer:allowPluginHelp" data-field="composer:allowPluginHelp" checked />
|
||||
Allow plugins to add content to the help tab
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="composer:allowPluginHelp">
|
||||
<input class="mdl-switch__input" type="checkbox" id="composer:allowPluginHelp" data-field="composer:allowPluginHelp" checked />
|
||||
<span class="mdl-switch__label">Allow plugins to add content to the help tab</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -175,4 +183,17 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">IP Tracking</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="trackIpPerPost">
|
||||
<span class="mdl-switch__label"><strong>Track IP Address for each post</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<!-- IMPORT admin/settings/footer.tpl -->
|
||||
@@ -1,17 +1,20 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Reputation Settings</div>
|
||||
<div class="panel-body">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Reputation Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="reputation:disabled"> <strong>Disable Reputation System</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" data-field="reputation:disabled">
|
||||
<span class="mdl-switch__label"><strong>Disable Reputation System</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="downvote:disabled"> <strong>Disable Down Voting</trong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" class="mdl-switch__input" data-field="downvote:disabled">
|
||||
<span class="mdl-switch__label"><strong>Disable Down Voting</trong></strong>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
@@ -19,12 +22,12 @@
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Activity Thresholds</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Activity Thresholds</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Minimum reputation to downvote posts</strong><br /> <input type="text" class="form-control" data-field="privileges:downvote"><br />
|
||||
<strong>Minimum reputation to flag posts</strong><br /> <input type="text" class="form-control" data-field="privileges:flag"><br />
|
||||
<strong>Minimum reputation to downvote posts</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:downvote"><br />
|
||||
<strong>Minimum reputation to flag posts</strong><br /> <input type="text" class="form-control" placeholder="0" data-field="privileges:flag"><br />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Web Socket Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Reconnection Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="maxReconnectionAttempts">Max Reconnection Attempts</label>
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Tag Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Tag Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="privateTagListing"> Make the tags list private
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="privateTagListing">
|
||||
<span class="mdl-switch__label">Make the tags list private</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -1,27 +1,20 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">User List</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Authentication</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form role="form">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowLocalLogin" checked> <strong>Allow local login</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowLocalLogin" checked>
|
||||
<span class="mdl-switch__label"><strong>Allow local login</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowAccountDelete" checked> <strong>Allow account deletion</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="privateUserInfo"> <strong>Make user info private</strong>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="requireEmailConfirmation"> <strong>Require Email Confirmation</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="requireEmailConfirmation">
|
||||
<span class="mdl-switch__label"><strong>Require Email Confirmation</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -47,19 +40,41 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Avatars</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Account Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="allowProfileImageUploads"> <strong>Allow users to upload profile images</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowAccountDelete" checked>
|
||||
<span class="mdl-switch__label"><strong>Allow account deletion</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="privateUserInfo">
|
||||
<span class="mdl-switch__label"><strong>Make user info private</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Avatars</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="allowProfileImageUploads">
|
||||
<span class="mdl-switch__label"><strong>Allow users to upload profile images</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="profile:convertProfileImageToPNG"> <strong>Convert profile image uploads to PNG</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="profile:convertProfileImageToPNG">
|
||||
<span class="mdl-switch__label"><strong>Convert profile image uploads to PNG</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -77,8 +92,12 @@
|
||||
|
||||
<div class="form-group">
|
||||
<label>Custom Gravatar Default Image</label>
|
||||
<input id="customGravatarDefaultImage" type="text" class="form-control" placeholder="A custom image to use instead of gravatar defaults" data-field="customGravatarDefaultImage" /><br />
|
||||
<input data-action="upload" data-target="customGravatarDefaultImage" data-route="{config.relative_path}/api/admin/uploadgravatardefault" type="button" class="btn btn-default" value="Upload"></input>
|
||||
<div class="input-group">
|
||||
<input id="customGravatarDefaultImage" type="text" class="form-control" placeholder="A custom image to use instead of gravatar defaults" data-field="customGravatarDefaultImage" />
|
||||
<span class="input-group-btn">
|
||||
<input data-action="upload" data-target="customGravatarDefaultImage" data-route="{config.relative_path}/api/admin/uploadgravatardefault" type="button" class="btn btn-default" value="Upload"></input>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
@@ -94,9 +113,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Account Protection</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Account Protection</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label for="loginAttempts">Login attempts per hour</label>
|
||||
@@ -121,9 +140,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">User Registration</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">User Registration</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label>Minimum Username Length</label>
|
||||
@@ -149,9 +168,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">User Search</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">User Search</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<label>Number of results to display</label>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<!-- IMPORT admin/settings/header.tpl -->
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Crawlability Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Crawlability Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<strong>Custom Robots.txt <small>Leave blank for default</small></strong><br />
|
||||
<textarea class="form-control" data-field="robots.txt"></textarea>
|
||||
@@ -10,19 +10,21 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Sitemap & Feed Settings</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-2 col-xs-12 settings-header">Sitemap & Feed Settings</div>
|
||||
<div class="col-sm-10 col-xs-12">
|
||||
<form>
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="feeds:disableRSS"> <strong>Disable RSS Feeds</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="feeds:disableRSS">
|
||||
<span class="mdl-switch__label"><strong>Disable RSS Feeds</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" data-field="feeds:disableSitemap"> <strong>Disable Sitemap.xml</strong>
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input class="mdl-switch__input" type="checkbox" data-field="feeds:disableSitemap">
|
||||
<span class="mdl-switch__label"><strong>Disable Sitemap.xml</strong></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -31,8 +33,11 @@
|
||||
<input class="form-control" type="text" data-field="sitemapTopics" />
|
||||
</div>
|
||||
|
||||
<button id="clear-sitemap-cache" class="btn btn-warning">Clear Sitemap Cache</button>
|
||||
<a href="/sitemap.xml" target="_blank" class="btn btn-info">View Sitemap</a>
|
||||
<br />
|
||||
<p>
|
||||
<button id="clear-sitemap-cache" class="btn btn-warning">Clear Sitemap Cache</button>
|
||||
<a href="/sitemap.xml" target="_blank" class="btn btn-link">View Sitemap</a>
|
||||
</p>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user