2013-02-06 03:16:51 +08:00
|
|
|
// these are the styles associated with the Discourse admin section
|
2013-08-29 01:58:44 +08:00
|
|
|
@import "common/foundation/variables";
|
|
|
|
@import "common/foundation/mixins";
|
|
|
|
@import "common/foundation/helpers";
|
2013-02-06 03:16:51 +08:00
|
|
|
|
2013-10-29 01:46:59 +08:00
|
|
|
.admin-contents table {
|
2014-02-13 12:36:10 +08:00
|
|
|
width: 100%;
|
|
|
|
tr {text-align: left;}
|
|
|
|
td, th {padding: 8px;}
|
2014-05-19 13:17:59 +08:00
|
|
|
th {border-top: 1px solid scale-color-diff();}
|
|
|
|
td {border-bottom: 1px solid scale-color-diff(); border-top: 1px solid scale-color-diff();}
|
2014-05-06 13:50:51 +08:00
|
|
|
tr:hover { background-color: darken($secondary, 2.5%); }
|
2014-12-03 04:30:57 +08:00
|
|
|
tr.selected { background-color: lighten($primary, 80%); }
|
2014-03-06 14:14:51 +08:00
|
|
|
.filters input { margin-bottom: 0; }
|
2013-10-29 01:46:59 +08:00
|
|
|
}
|
|
|
|
|
2014-06-23 15:09:18 +08:00
|
|
|
td.flaggers td {
|
|
|
|
border-bottom: none;
|
|
|
|
border-top: none;
|
|
|
|
}
|
|
|
|
|
2013-05-08 13:20:38 +08:00
|
|
|
.content-list li a span.count {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.857em;
|
2013-05-08 13:20:38 +08:00
|
|
|
float: right;
|
|
|
|
margin-right: 10px;
|
2014-05-19 13:17:59 +08:00
|
|
|
background-color: scale-color-diff();
|
2013-05-08 13:20:38 +08:00
|
|
|
padding: 2px 5px;
|
|
|
|
border-radius: 5px;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2013-05-08 13:20:38 +08:00
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
.admin-content {
|
|
|
|
margin-bottom: 50px;
|
|
|
|
.admin-contents {
|
|
|
|
padding: 8px;
|
2013-08-09 22:06:02 +08:00
|
|
|
|
2014-01-02 23:22:04 +08:00
|
|
|
.ace-wrapper {
|
|
|
|
height: 400px;
|
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
2013-03-18 03:02:36 +08:00
|
|
|
|
2014-11-06 03:46:27 +08:00
|
|
|
.view-options {
|
|
|
|
float: right;
|
|
|
|
}
|
2013-03-18 03:02:36 +08:00
|
|
|
table.report {
|
2014-03-27 00:03:58 +08:00
|
|
|
margin-top: 20px;
|
2013-03-18 03:02:36 +08:00
|
|
|
tr {
|
|
|
|
th:nth-of-type(1) {
|
|
|
|
width: 20%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.bar-container {
|
|
|
|
float: left;
|
|
|
|
width: 300px;
|
|
|
|
margin-right: 15px;
|
|
|
|
margin-bottom: 5px;
|
|
|
|
display: inline-block;
|
|
|
|
|
|
|
|
.bar {
|
|
|
|
margin-top: 5px;
|
2014-05-06 13:50:51 +08:00
|
|
|
background-color: $tertiary;
|
2013-03-18 03:02:36 +08:00
|
|
|
display: inline-block;
|
|
|
|
text-align: right;
|
|
|
|
padding-right: 8px;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $secondary;
|
2013-03-18 03:02:36 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
|
2014-07-08 04:18:18 +08:00
|
|
|
.ip-lookup {
|
2014-06-16 00:14:19 +08:00
|
|
|
position: relative;
|
|
|
|
display: inline-block;
|
|
|
|
|
|
|
|
.location-box {
|
|
|
|
position: absolute;
|
|
|
|
width: 460px;
|
|
|
|
right: 0px;
|
|
|
|
z-index: 990;
|
2014-08-06 21:31:13 +08:00
|
|
|
box-shadow: 0 2px 6px rgba(0,0,0, .8);
|
2014-06-16 00:14:19 +08:00
|
|
|
margin-top: -2px;
|
|
|
|
background-color: $secondary;
|
|
|
|
padding: 12px 12px 5px;
|
2014-11-17 21:51:28 +08:00
|
|
|
|
|
|
|
.other-accounts {
|
2014-11-21 02:59:20 +08:00
|
|
|
margin: 5px 0 0;
|
2014-11-17 21:51:28 +08:00
|
|
|
max-height: 200px;
|
|
|
|
overflow: auto;
|
2014-11-21 02:59:20 +08:00
|
|
|
width: 455px;
|
2014-11-17 21:51:28 +08:00
|
|
|
ul { margin: 0; }
|
|
|
|
li { list-style: none; }
|
2014-11-21 02:59:20 +08:00
|
|
|
tr td:first-of-type { width: 130px; }
|
2014-11-17 21:51:28 +08:00
|
|
|
}
|
2014-06-16 00:14:19 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-17 03:14:34 +08:00
|
|
|
.admin-container {
|
|
|
|
margin-top: 20px;
|
|
|
|
}
|
|
|
|
|
2014-11-03 19:46:08 +08:00
|
|
|
.admin-title {
|
|
|
|
height: 45px;
|
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
.admin-controls {
|
2014-09-08 10:46:04 +08:00
|
|
|
background-color: dark-light-diff($primary, $secondary, 90%, -75%);
|
2014-03-06 14:14:51 +08:00
|
|
|
padding: 10px 10px 3px 0;
|
2013-02-06 03:16:51 +08:00
|
|
|
height: 35px;
|
|
|
|
.nav.nav-pills {
|
|
|
|
li.active {
|
|
|
|
a {
|
2014-05-19 13:17:59 +08:00
|
|
|
border-color: scale-color-diff();
|
2014-05-06 13:50:51 +08:00
|
|
|
background-color: lighten($primary, 40%);
|
2013-02-06 03:16:51 +08:00
|
|
|
&:hover {
|
2014-05-06 13:50:51 +08:00
|
|
|
background-color: lighten($primary, 40%);
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
h1 {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.429em;
|
2013-02-06 03:16:51 +08:00
|
|
|
line-height: 25px;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
.controls {
|
2013-10-30 05:03:28 +08:00
|
|
|
margin-left: 10px;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
button {
|
|
|
|
margin-right: 5px;
|
2014-03-03 14:16:30 +08:00
|
|
|
|
2013-10-30 05:03:28 +08:00
|
|
|
}
|
|
|
|
input[type=text] {
|
|
|
|
display: inline-block;
|
|
|
|
float: left;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
.result-message {
|
|
|
|
display: inline-block;
|
|
|
|
padding-left: 10px;
|
|
|
|
padding-top: 5px;
|
|
|
|
}
|
|
|
|
.username {
|
|
|
|
input[type=text] {
|
|
|
|
width: 240px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.search {
|
2013-03-07 01:07:09 +08:00
|
|
|
float: right;
|
|
|
|
margin-left: 10px;
|
2013-02-06 03:16:51 +08:00
|
|
|
label {
|
|
|
|
margin-top: 5px;
|
|
|
|
}
|
|
|
|
}
|
2013-06-04 04:12:24 +08:00
|
|
|
.toggle {
|
|
|
|
margin-top: 8px;
|
|
|
|
float: right;
|
|
|
|
|
|
|
|
span {
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
label {
|
|
|
|
display: inline-block;
|
|
|
|
margin-right: 5px;
|
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
|
2013-11-15 04:26:48 +08:00
|
|
|
.site-settings-nav {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 18.018%;
|
2014-02-24 09:47:44 +08:00
|
|
|
margin-top: 30px;
|
2013-11-17 03:14:34 +08:00
|
|
|
.nav-stacked {
|
|
|
|
border-right: none;
|
|
|
|
}
|
2013-11-16 04:22:42 +08:00
|
|
|
li a.active {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $secondary;
|
2014-05-14 02:50:42 +08:00
|
|
|
background-color: $quaternary;
|
2013-11-15 04:26:48 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-16 04:22:42 +08:00
|
|
|
.site-settings-detail {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 76.5765%;
|
2013-11-18 22:53:06 +08:00
|
|
|
min-height: 800px;
|
2013-11-17 03:14:34 +08:00
|
|
|
margin-left: 0;
|
2014-05-19 13:17:59 +08:00
|
|
|
border-left: solid 1px scale-color-diff();
|
2013-11-17 03:14:34 +08:00
|
|
|
padding: 30px 0 30px 30px;
|
2013-11-16 04:22:42 +08:00
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
.settings {
|
|
|
|
.setting {
|
|
|
|
padding-bottom: 20px;
|
2013-11-16 04:22:42 +08:00
|
|
|
|
|
|
|
.setting-label {
|
|
|
|
float: left;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 17.6576%;
|
2013-11-16 04:22:42 +08:00
|
|
|
margin-right: 12px;
|
|
|
|
}
|
|
|
|
.setting-value {
|
|
|
|
float: left;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 53%;
|
2014-06-21 05:46:25 +08:00
|
|
|
.select2-container {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.select2-container-multi .select2-choices {
|
|
|
|
border: none;
|
|
|
|
}
|
2013-11-16 04:22:42 +08:00
|
|
|
}
|
|
|
|
.setting-controls {
|
|
|
|
float: left;
|
|
|
|
}
|
2013-11-17 03:14:34 +08:00
|
|
|
.input-setting-string {
|
|
|
|
width: 404px;
|
|
|
|
@include medium-width { width: 314px; }
|
|
|
|
@include small-width { width: 284px; }
|
|
|
|
}
|
2014-03-30 13:32:33 +08:00
|
|
|
.input-setting-list {
|
|
|
|
width: 408px;
|
|
|
|
padding: 1px;
|
2014-05-07 11:53:04 +08:00
|
|
|
background-color: $secondary;
|
2014-05-19 13:17:59 +08:00
|
|
|
border: 1px solid scale-color-diff();
|
2014-03-30 13:32:33 +08:00
|
|
|
border-radius: 3px;
|
|
|
|
box-shadow: inset 0 1px 1px rgba(51, 51, 51, 0.3);
|
|
|
|
transition: border linear 0.2s, box-shadow linear 0.2s;
|
|
|
|
|
2014-06-01 22:36:26 +08:00
|
|
|
li.select2-search-choice {
|
|
|
|
cursor: pointer;
|
|
|
|
.select2-search-choice-close {
|
|
|
|
content: "x"
|
2014-03-30 13:32:33 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-06-01 22:36:26 +08:00
|
|
|
li.sortable-placeholder {
|
|
|
|
padding: 3px 5px 3px 18px;
|
|
|
|
margin: 3px 0px 3px 5px;
|
|
|
|
position: relative;
|
|
|
|
line-height: 13px;
|
|
|
|
cursor: default;
|
|
|
|
border: 1px dashed #AAA;
|
|
|
|
border-radius: 3px;
|
|
|
|
background-clip: padding-box;
|
|
|
|
-moz-user-select: none;
|
|
|
|
background-color: none;
|
|
|
|
width: 3em;
|
|
|
|
height: 1em;
|
2014-03-30 13:32:33 +08:00
|
|
|
}
|
|
|
|
|
2014-06-01 22:36:26 +08:00
|
|
|
}
|
2013-11-16 04:22:42 +08:00
|
|
|
|
2014-06-10 03:17:36 +08:00
|
|
|
.desc, .validation-error {
|
2013-02-06 03:16:51 +08:00
|
|
|
padding-top: 3px;
|
2014-03-22 14:06:53 +08:00
|
|
|
font-size: 80%;
|
|
|
|
line-height: 1.4em;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
2013-03-02 01:45:25 +08:00
|
|
|
|
2014-06-10 03:17:36 +08:00
|
|
|
.validation-error {
|
|
|
|
color: $danger;
|
|
|
|
}
|
|
|
|
|
|
|
|
.desc {
|
|
|
|
color: scale-color($primary, $lightness: 50%);
|
|
|
|
}
|
|
|
|
|
2013-03-02 01:45:25 +08:00
|
|
|
h3 {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.929em;
|
2013-03-02 01:45:25 +08:00
|
|
|
font-weight: normal;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.setting.overridden {
|
|
|
|
input[type=text] {
|
2014-09-08 10:46:04 +08:00
|
|
|
background-color: dark-light-diff($highlight, $secondary, 50%, -60%);
|
2014-08-06 21:31:13 +08:00
|
|
|
|
2013-03-02 01:45:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
h3 {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: scale-color($highlight, $lightness: -50%);
|
2013-03-02 01:45:25 +08:00
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
section.details {
|
|
|
|
h1 {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.286em;
|
2014-08-28 01:52:01 +08:00
|
|
|
color: $primary;
|
|
|
|
padding: 5px 10px;
|
|
|
|
margin: 30px 0 5px 0;
|
|
|
|
border-bottom: 5px solid scale-color-diff();
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#selected-controls {
|
2014-05-07 11:53:04 +08:00
|
|
|
background-color: scale-color($tertiary, $lightness: 75%);
|
2013-02-06 03:16:51 +08:00
|
|
|
padding: 8px;
|
|
|
|
min-height: 27px;
|
|
|
|
position: fixed;
|
|
|
|
bottom: 0;
|
|
|
|
width: 1075px;
|
|
|
|
}
|
|
|
|
|
2014-08-28 01:52:01 +08:00
|
|
|
.user-controls {
|
|
|
|
padding: 5px;
|
|
|
|
clear: both;
|
|
|
|
text-align: right;
|
|
|
|
}
|
|
|
|
|
2014-09-25 14:38:44 +08:00
|
|
|
.display-row.associations .value {
|
2014-09-30 04:31:05 +08:00
|
|
|
width: 750px;
|
2014-09-25 14:38:44 +08:00
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
.display-row {
|
2013-06-06 22:51:33 +08:00
|
|
|
line-height: 30px;
|
2013-02-06 03:16:51 +08:00
|
|
|
padding: 5px;
|
|
|
|
&:nth-of-type(1) {
|
|
|
|
border-top: 0;
|
|
|
|
}
|
2013-11-06 03:41:04 +08:00
|
|
|
&.highlight-danger {
|
2014-05-07 01:29:13 +08:00
|
|
|
background-color: scale-color($danger, $lightness: 50%);
|
2013-11-06 03:41:04 +08:00
|
|
|
}
|
2014-05-19 13:17:59 +08:00
|
|
|
border-top: 1px solid scale-color-diff();
|
2013-02-06 03:16:51 +08:00
|
|
|
&:before, &:after {
|
|
|
|
display: table;
|
|
|
|
content: "";
|
|
|
|
}
|
|
|
|
&:after {
|
|
|
|
clear: both;
|
|
|
|
}
|
|
|
|
.field {
|
|
|
|
font-weight: bold;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 17.65765%;
|
2013-02-06 03:16:51 +08:00
|
|
|
float: left;
|
|
|
|
margin-left: 12px;
|
|
|
|
}
|
|
|
|
.value {
|
|
|
|
width: 250px;
|
|
|
|
float: left;
|
|
|
|
margin-left: 12px;
|
|
|
|
}
|
2013-10-23 03:53:08 +08:00
|
|
|
.long-value {
|
|
|
|
width: 800px;
|
|
|
|
float: left;
|
|
|
|
margin-left: 12px;
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.929em;
|
2013-10-23 03:53:08 +08:00
|
|
|
|
|
|
|
button {
|
|
|
|
margin-left: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
.controls {
|
2014-03-15 17:16:29 +08:00
|
|
|
width: 480px;
|
2013-11-12 04:03:17 +08:00
|
|
|
float: left;
|
|
|
|
margin-left: 12px;
|
2013-02-06 03:16:51 +08:00
|
|
|
.btn {
|
|
|
|
margin-right: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-05 20:52:20 +08:00
|
|
|
// Badges area
|
|
|
|
.badges {
|
|
|
|
.content-list ul {
|
|
|
|
margin-bottom: 10px;
|
2014-05-19 13:20:57 +08:00
|
|
|
|
|
|
|
.list-badge {
|
|
|
|
float: right;
|
|
|
|
font-size: 11px;
|
|
|
|
font-weight: normal;
|
|
|
|
padding: 0 6px;
|
|
|
|
color: $secondary;
|
|
|
|
background-color: scale-color($tertiary, $lightness: 50%);
|
|
|
|
border-radius: 3px;
|
|
|
|
}
|
2014-03-05 20:52:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.current-badge {
|
|
|
|
margin: 20px;
|
2014-10-17 04:43:10 +08:00
|
|
|
|
|
|
|
p.help {
|
|
|
|
margin: 0;
|
|
|
|
color: scale-color($primary, $lightness: 40%);
|
|
|
|
font-size: 0.9em;
|
|
|
|
}
|
2014-03-05 20:52:20 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.form-horizontal {
|
|
|
|
label {
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
& > div {
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
.delete-link {
|
|
|
|
margin-left: 15px;
|
|
|
|
margin-top: 5px;
|
|
|
|
}
|
2014-03-19 13:13:38 +08:00
|
|
|
|
|
|
|
input, textarea, select {
|
|
|
|
width: 350px;
|
|
|
|
}
|
|
|
|
|
2014-04-26 02:25:29 +08:00
|
|
|
input[type="checkbox"] {
|
|
|
|
width: 20px;
|
|
|
|
}
|
|
|
|
|
2014-03-19 13:13:38 +08:00
|
|
|
textarea {
|
|
|
|
height: 200px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-06-28 03:51:41 +08:00
|
|
|
.current-badge-actions {
|
|
|
|
margin: 10px;
|
|
|
|
padding: 10px;
|
|
|
|
border-top: 1px solid scale-color($primary, $lightness: 80%);
|
|
|
|
}
|
|
|
|
|
2014-03-19 13:13:38 +08:00
|
|
|
.buttons {
|
|
|
|
float: left;
|
|
|
|
width: 200px;
|
|
|
|
.saving {
|
|
|
|
padding: 5px 0 0 0;
|
|
|
|
margin-left: 10px;
|
|
|
|
width: 80px;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2014-03-19 13:13:38 +08:00
|
|
|
}
|
2014-03-05 20:52:20 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
FEATURE: Badge query validation, preview results, and EXPLAIN
Upon saving a badge or requesting a badge result preview,
BadgeGranter.contract_checks! will examine the provided badge SQL for
some contractual obligations - namely, the returned columns and use of
trigger parameters.
Saving the badge is wrapped in a transaction to make this easier, by
raising ActiveRecord::Rollback on a detected violation.
On the client, a modal view is added for the badge query sample run
results, named admin-badge-preview.
The preview action is moved up to the route.
The save action, on failure, triggers a 'saveError' action (also in the
route).
The preview action gains a new parameter, 'explain', which will give the
output of an EXPLAIN query for the badge sql, which can be used by forum
admins to estimate the cost of their badge queries.
The preview link is replaced by two links, one which omits (false) and
includes (true) the EXPLAIN query.
The Badge.save() method is amended to propogate errors.
Badge::Trigger gets some utility methods for use in the
BadgeGranter.contract_checks! method.
Additionally, extra checks outside of BadgeGranter.contract_checks! are
added in the preview() method, to cover cases of null granted_at
columns.
An uninitialized variable path is removed in the backfill() method.
TODO - it would be nice to be able to get the actual names of all
columns the provided query returns, so we could give more errors
2014-08-26 06:17:29 +08:00
|
|
|
.badge-query-preview {
|
|
|
|
.grant-count, .sample, .error-header {
|
|
|
|
margin-left: 10px;
|
|
|
|
}
|
|
|
|
|
2014-09-03 04:29:28 +08:00
|
|
|
.badge-errors {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1em;
|
2014-09-03 04:29:28 +08:00
|
|
|
line-height: 16px;
|
FEATURE: Badge query validation, preview results, and EXPLAIN
Upon saving a badge or requesting a badge result preview,
BadgeGranter.contract_checks! will examine the provided badge SQL for
some contractual obligations - namely, the returned columns and use of
trigger parameters.
Saving the badge is wrapped in a transaction to make this easier, by
raising ActiveRecord::Rollback on a detected violation.
On the client, a modal view is added for the badge query sample run
results, named admin-badge-preview.
The preview action is moved up to the route.
The save action, on failure, triggers a 'saveError' action (also in the
route).
The preview action gains a new parameter, 'explain', which will give the
output of an EXPLAIN query for the badge sql, which can be used by forum
admins to estimate the cost of their badge queries.
The preview link is replaced by two links, one which omits (false) and
includes (true) the EXPLAIN query.
The Badge.save() method is amended to propogate errors.
Badge::Trigger gets some utility methods for use in the
BadgeGranter.contract_checks! method.
Additionally, extra checks outside of BadgeGranter.contract_checks! are
added in the preview() method, to cover cases of null granted_at
columns.
An uninitialized variable path is removed in the backfill() method.
TODO - it would be nice to be able to get the actual names of all
columns the provided query returns, so we could give more errors
2014-08-26 06:17:29 +08:00
|
|
|
padding: 4px;
|
|
|
|
background-color: scale-color-diff();
|
|
|
|
}
|
|
|
|
|
|
|
|
.badge-query-plan {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.857em;
|
2014-09-03 04:29:28 +08:00
|
|
|
line-height: 13px;
|
|
|
|
padding: 4px;
|
|
|
|
background-color: scale-color-diff();
|
FEATURE: Badge query validation, preview results, and EXPLAIN
Upon saving a badge or requesting a badge result preview,
BadgeGranter.contract_checks! will examine the provided badge SQL for
some contractual obligations - namely, the returned columns and use of
trigger parameters.
Saving the badge is wrapped in a transaction to make this easier, by
raising ActiveRecord::Rollback on a detected violation.
On the client, a modal view is added for the badge query sample run
results, named admin-badge-preview.
The preview action is moved up to the route.
The save action, on failure, triggers a 'saveError' action (also in the
route).
The preview action gains a new parameter, 'explain', which will give the
output of an EXPLAIN query for the badge sql, which can be used by forum
admins to estimate the cost of their badge queries.
The preview link is replaced by two links, one which omits (false) and
includes (true) the EXPLAIN query.
The Badge.save() method is amended to propogate errors.
Badge::Trigger gets some utility methods for use in the
BadgeGranter.contract_checks! method.
Additionally, extra checks outside of BadgeGranter.contract_checks! are
added in the preview() method, to cover cases of null granted_at
columns.
An uninitialized variable path is removed in the backfill() method.
TODO - it would be nice to be able to get the actual names of all
columns the provided query returns, so we could give more errors
2014-08-26 06:17:29 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.count-warning {
|
|
|
|
background-color: dark-light-diff(rgba($danger,.7), $secondary, 50%, -60%);
|
|
|
|
margin: 0 0 7px 0;
|
|
|
|
padding: 10px 20px;
|
|
|
|
|
|
|
|
p {
|
|
|
|
margin: 0;
|
|
|
|
}
|
|
|
|
.heading {
|
|
|
|
color: $danger;
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-02-06 03:16:51 +08:00
|
|
|
// Customise area
|
|
|
|
.customize {
|
|
|
|
.nav.nav-pills {
|
|
|
|
margin-left: 10px;
|
|
|
|
}
|
2013-04-10 13:55:20 +08:00
|
|
|
.content-list, .current-style {
|
|
|
|
float: left;
|
|
|
|
}
|
|
|
|
.content-list ul {
|
2013-06-19 13:18:22 +08:00
|
|
|
margin-bottom: 10px;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
.current-style {
|
|
|
|
.delete-link {
|
|
|
|
margin-left: 15px;
|
|
|
|
margin-top: 5px;
|
|
|
|
}
|
|
|
|
.preview-link {
|
2014-02-24 09:47:44 +08:00
|
|
|
margin-left: 15px;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
2013-04-10 13:55:20 +08:00
|
|
|
padding-left: 10px;
|
|
|
|
width: 65%;
|
2013-02-06 03:16:51 +08:00
|
|
|
.style-name {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 54.0540%;
|
2013-02-06 03:16:51 +08:00
|
|
|
height: 25px;
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.429em;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
.ace-wrapper {
|
|
|
|
position: relative;
|
2013-06-19 13:18:22 +08:00
|
|
|
height: 400px;
|
2013-02-06 03:16:51 +08:00
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.ace_editor {
|
|
|
|
position: absolute;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
|
|
|
}
|
|
|
|
.status-actions {
|
|
|
|
float: right;
|
2013-06-19 13:18:22 +08:00
|
|
|
margin-top: 7px;
|
2013-02-06 03:16:51 +08:00
|
|
|
span {
|
2014-02-24 09:47:44 +08:00
|
|
|
margin-right: 10px;
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
.buttons {
|
|
|
|
float: left;
|
2013-04-10 13:55:20 +08:00
|
|
|
width: 200px;
|
|
|
|
.saving {
|
|
|
|
padding: 5px 0 0 0;
|
|
|
|
margin-left: 10px;
|
|
|
|
width: 80px;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2013-04-10 13:55:20 +08:00
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
}
|
2014-04-16 21:49:06 +08:00
|
|
|
.color-scheme {
|
|
|
|
.controls {
|
|
|
|
span, button, a {
|
|
|
|
margin-right: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.colors {
|
|
|
|
thead th { border: none; }
|
|
|
|
td.hex { width: 100px; }
|
2014-05-14 02:50:42 +08:00
|
|
|
td.actions { width: 200px; }
|
|
|
|
.hex-input { width: 80px; margin-bottom: 0; }
|
2014-05-03 05:46:03 +08:00
|
|
|
.hex { text-align: center; }
|
2014-05-14 02:50:42 +08:00
|
|
|
.description { color: scale-color($primary, $lightness: 50%); }
|
2014-04-16 21:49:06 +08:00
|
|
|
|
2014-05-03 05:46:03 +08:00
|
|
|
.invalid .hex input {
|
|
|
|
background-color: white;
|
|
|
|
color: black;
|
|
|
|
border-color: $danger;
|
|
|
|
}
|
2014-04-16 21:49:06 +08:00
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.admin-flags {
|
2014-10-10 04:12:02 +08:00
|
|
|
table-layout: fixed;
|
2013-06-17 15:15:56 +08:00
|
|
|
|
2014-08-13 14:52:43 +08:00
|
|
|
.hidden-post td.excerpt, .hidden-post td.user { opacity: 0.5; }
|
|
|
|
.deleted td.excerpt, .deleted td.user { background-color: scale-color($danger, $lightness: 70%); }
|
2014-09-12 02:07:39 +08:00
|
|
|
.message { background-color: dark-light-diff($highlight, $secondary, 50%, -70%); }
|
|
|
|
.message:hover { background-color: dark-light-diff($highlight, $secondary, 60%, -60%); }
|
2013-06-27 03:10:07 +08:00
|
|
|
td { vertical-align: top; }
|
2013-02-06 03:16:51 +08:00
|
|
|
th { text-align: left; }
|
2014-07-29 01:17:37 +08:00
|
|
|
.user {
|
2014-10-07 16:29:44 +08:00
|
|
|
width: 25px;
|
2014-08-12 18:49:19 +08:00
|
|
|
padding: 8px 0 0 0;
|
2014-08-19 00:56:39 +08:00
|
|
|
text-align: center;
|
2014-07-29 01:17:37 +08:00
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
.excerpt {
|
2014-08-12 18:49:19 +08:00
|
|
|
max-width: 700px;
|
2014-10-07 16:29:44 +08:00
|
|
|
width: 75%;
|
2014-02-06 06:54:16 +08:00
|
|
|
padding: 8px;
|
2013-06-26 15:01:39 +08:00
|
|
|
word-wrap: break-word;
|
2014-07-29 01:17:37 +08:00
|
|
|
.fa { display: inline-block; }
|
|
|
|
h3 {
|
|
|
|
max-height: 1.2em;
|
|
|
|
overflow: hidden;
|
2014-10-07 16:29:44 +08:00
|
|
|
margin-top: 0;
|
|
|
|
margin-bottom: 5px;
|
2014-07-29 01:17:37 +08:00
|
|
|
}
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
2013-06-26 15:01:39 +08:00
|
|
|
.flaggers {
|
|
|
|
font-size: 11px;
|
2014-07-29 01:17:37 +08:00
|
|
|
padding: 8px 0 0 5px;
|
2014-08-13 14:52:43 +08:00
|
|
|
.avatar {
|
|
|
|
width: 25px;
|
|
|
|
}
|
2014-08-12 04:28:11 +08:00
|
|
|
table {
|
|
|
|
max-width: 145px;
|
|
|
|
}
|
|
|
|
tr {
|
|
|
|
height: 44px;
|
|
|
|
}
|
2013-06-26 15:01:39 +08:00
|
|
|
td {
|
2013-06-27 03:10:07 +08:00
|
|
|
vertical-align: middle;
|
|
|
|
padding: 3px;
|
2014-08-13 14:52:43 +08:00
|
|
|
line-height: 1.4;
|
2013-06-26 15:01:39 +08:00
|
|
|
}
|
|
|
|
}
|
2013-06-20 15:42:15 +08:00
|
|
|
.action {
|
2013-06-21 15:29:54 +08:00
|
|
|
button { margin: 4px; }
|
|
|
|
text-align: right;
|
2013-06-20 15:42:15 +08:00
|
|
|
padding-bottom: 20px;
|
|
|
|
}
|
2014-07-29 01:17:37 +08:00
|
|
|
td p {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.929em;
|
2014-07-29 01:17:37 +08:00
|
|
|
margin: 0 0 5px 0;
|
|
|
|
}
|
2014-09-08 23:53:29 +08:00
|
|
|
.flagged-posts { background: $danger; }
|
2013-02-06 03:16:51 +08:00
|
|
|
}
|
2013-03-08 00:07:59 +08:00
|
|
|
|
2013-03-15 00:28:35 +08:00
|
|
|
/* Dashboard */
|
|
|
|
|
|
|
|
.dashboard-left {
|
|
|
|
float: left;
|
2014-09-12 02:45:35 +08:00
|
|
|
margin-top: 10px;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 60%;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
.dashboard-right {
|
|
|
|
float: right;
|
2013-04-17 22:25:28 +08:00
|
|
|
margin-top: 10px;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 40%;
|
2013-03-19 01:44:28 +08:00
|
|
|
|
2013-05-02 06:12:02 +08:00
|
|
|
|
|
|
|
.dashboard-stats {
|
|
|
|
width: 100%;
|
|
|
|
margin-left: 0;
|
|
|
|
}
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.version-check {
|
2014-09-12 02:45:35 +08:00
|
|
|
margin-top: 10px;
|
|
|
|
|
2013-03-15 00:28:35 +08:00
|
|
|
.version-number {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.286em;
|
2013-03-20 01:51:09 +08:00
|
|
|
font-weight: bold;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.face {
|
|
|
|
width: 20px;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
|
2013-12-10 05:27:49 +08:00
|
|
|
.version-notes .fa {
|
2013-03-15 00:28:35 +08:00
|
|
|
vertical-align: bottom;
|
|
|
|
}
|
|
|
|
|
|
|
|
&.critical .version-notes .normal-note {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
&.normal .version-notes .critical-note {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
2013-12-10 05:27:49 +08:00
|
|
|
.fa {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.857em;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
|
2013-11-05 01:51:01 +08:00
|
|
|
.up-to-date {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $success;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
.updates-available {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $danger;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
.critical-updates-available {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $danger;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.update-nag {
|
2013-12-10 05:27:49 +08:00
|
|
|
i.fa {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.429em;
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-23 03:53:08 +08:00
|
|
|
table.api-keys {
|
|
|
|
margin-top: 10px;
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
th {
|
|
|
|
text-align: left;
|
|
|
|
padding: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
td {
|
|
|
|
padding: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
td.key {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.857em;
|
2013-10-23 03:53:08 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-03-08 00:07:59 +08:00
|
|
|
.dashboard-stats {
|
2013-04-17 22:25:28 +08:00
|
|
|
margin-bottom: 30px;
|
2014-07-10 07:56:35 +08:00
|
|
|
margin-right: 40px;
|
2013-04-17 06:37:35 +08:00
|
|
|
h4 {
|
|
|
|
font-weight: normal;
|
|
|
|
margin-bottom: 8px;
|
|
|
|
}
|
|
|
|
|
2013-03-08 00:07:59 +08:00
|
|
|
table {
|
2013-03-12 23:57:33 +08:00
|
|
|
width: 100%;
|
2013-03-08 00:07:59 +08:00
|
|
|
|
2013-04-17 22:46:27 +08:00
|
|
|
.title {
|
2013-12-10 05:27:49 +08:00
|
|
|
i.fa {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-04-17 22:46:27 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-03-08 00:07:59 +08:00
|
|
|
th {
|
|
|
|
font-weight: normal;
|
|
|
|
text-align: center;
|
2014-09-08 10:46:04 +08:00
|
|
|
background: dark-light-diff($primary, $secondary, 80%, -65%);
|
2013-03-08 00:07:59 +08:00
|
|
|
}
|
2013-04-17 06:37:35 +08:00
|
|
|
th.title {
|
|
|
|
text-align: left;
|
|
|
|
}
|
2013-03-20 02:17:32 +08:00
|
|
|
thead {
|
2013-04-23 23:48:26 +08:00
|
|
|
tr:hover > td {
|
2014-05-06 13:50:51 +08:00
|
|
|
background-color: $secondary;
|
2013-03-20 02:17:32 +08:00
|
|
|
}
|
|
|
|
}
|
2013-03-08 00:07:59 +08:00
|
|
|
|
|
|
|
td.value {
|
|
|
|
font-weight: bold;
|
|
|
|
text-align: center;
|
2013-03-31 02:07:25 +08:00
|
|
|
|
|
|
|
i {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
&.trending-up {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $success;
|
2013-03-31 02:07:25 +08:00
|
|
|
i.up {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&.trending-down {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $danger;
|
2013-03-31 02:07:25 +08:00
|
|
|
i.down {
|
|
|
|
display: inline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&.no-change {
|
|
|
|
i.down {
|
|
|
|
display: inline;
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
|
|
|
}
|
2013-03-08 00:07:59 +08:00
|
|
|
}
|
|
|
|
}
|
2013-03-16 04:17:19 +08:00
|
|
|
|
2013-03-20 11:18:00 +08:00
|
|
|
&.detected-problems {
|
2014-09-08 10:46:04 +08:00
|
|
|
background: dark-light-diff($primary, $secondary, 90%, -75%);
|
2013-03-20 11:18:00 +08:00
|
|
|
margin-bottom: 20px;
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
|
|
.look-here {
|
|
|
|
float: left;
|
2014-03-22 15:37:18 +08:00
|
|
|
margin: 20px 10px 0 10px;
|
2013-03-20 11:18:00 +08:00
|
|
|
|
2013-12-10 05:27:49 +08:00
|
|
|
.fa {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 2.286em
|
|
|
|
;
|
2013-03-20 11:18:00 +08:00
|
|
|
vertical-align: middle;
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary
|
2013-03-20 11:18:00 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.problem-messages {
|
|
|
|
float: left;
|
2014-09-08 10:46:04 +08:00
|
|
|
width: 80%;
|
|
|
|
margin-left: 1%;
|
2013-04-05 04:16:58 +08:00
|
|
|
a {
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
2013-04-17 00:09:37 +08:00
|
|
|
.actions {
|
|
|
|
text-align: right;
|
|
|
|
}
|
2013-11-19 02:44:55 +08:00
|
|
|
.btn {
|
2014-09-08 10:46:04 +08:00
|
|
|
background: dark-light-diff($primary, $secondary, 80%, -85%);
|
2014-03-22 15:37:18 +08:00
|
|
|
}
|
|
|
|
ul {
|
|
|
|
margin-left: 0;
|
2014-09-08 10:46:04 +08:00
|
|
|
padding-left: 20px;
|
|
|
|
li {
|
|
|
|
margin-bottom: 10px;
|
|
|
|
}
|
2014-03-22 15:37:18 +08:00
|
|
|
}
|
2013-03-20 11:18:00 +08:00
|
|
|
}
|
2014-02-24 09:47:44 +08:00
|
|
|
}
|
2013-03-20 11:18:00 +08:00
|
|
|
|
2013-03-16 04:17:19 +08:00
|
|
|
&.totals {
|
2013-07-09 00:21:08 +08:00
|
|
|
table {
|
|
|
|
width: auto;
|
|
|
|
}
|
2013-04-23 23:48:26 +08:00
|
|
|
margin-top: 12px;
|
|
|
|
padding-left: 5px;
|
|
|
|
.value {
|
2013-07-09 00:21:08 +08:00
|
|
|
text-align: left;
|
2013-04-23 23:48:26 +08:00
|
|
|
font-weight: bold;
|
2013-07-09 00:21:08 +08:00
|
|
|
padding-left: 8px;
|
|
|
|
padding-right: 30px;
|
2013-03-16 04:17:19 +08:00
|
|
|
}
|
|
|
|
}
|
2013-03-16 06:08:46 +08:00
|
|
|
|
|
|
|
&.trust-levels {
|
2014-03-06 14:14:51 +08:00
|
|
|
margin-bottom: 0;
|
2013-03-23 05:50:22 +08:00
|
|
|
table {
|
2014-03-06 14:14:51 +08:00
|
|
|
margin-bottom: 0;
|
2013-03-19 01:25:40 +08:00
|
|
|
}
|
2013-03-23 05:50:22 +08:00
|
|
|
td.value {
|
|
|
|
width: 45px;
|
|
|
|
}
|
2013-03-20 01:51:09 +08:00
|
|
|
}
|
2013-07-31 02:45:03 +08:00
|
|
|
|
|
|
|
.referred-topic-title {
|
2014-09-12 02:45:35 +08:00
|
|
|
width: 355px;
|
|
|
|
@include medium-width { width: 305px; }
|
|
|
|
@include small-width { width: 265px; }
|
2013-07-31 02:45:03 +08:00
|
|
|
}
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.commits-widget {
|
2014-05-19 13:17:59 +08:00
|
|
|
border: solid 1px scale-color-diff();
|
2013-05-02 23:52:37 +08:00
|
|
|
height: 180px;
|
2013-05-02 06:12:02 +08:00
|
|
|
margin-bottom: 36px;
|
2013-03-12 03:26:14 +08:00
|
|
|
|
|
|
|
ul, li {
|
|
|
|
margin: 0;
|
|
|
|
padding: 0;
|
|
|
|
}
|
|
|
|
ul {
|
|
|
|
list-style: none;
|
|
|
|
}
|
|
|
|
a {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-03-15 00:28:35 +08:00
|
|
|
text-decoration: none;
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
a:hover {
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
|
|
|
|
|
|
|
.header {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-03-12 03:26:14 +08:00
|
|
|
font-weight: bold;
|
|
|
|
height: 30px;
|
2014-09-08 10:46:04 +08:00
|
|
|
background: dark-light-diff($primary, $secondary, 80%, -75%);
|
2013-03-12 03:26:14 +08:00
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
h1 {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.286em;
|
2013-03-12 03:26:14 +08:00
|
|
|
margin: 5px 0 0 8px;
|
|
|
|
display: inline-block;
|
|
|
|
line-height: 1.0em;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.header:hover h1 {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $tertiary;
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.commits-list {
|
2013-05-02 23:52:37 +08:00
|
|
|
height: 149px;
|
2013-03-12 03:26:14 +08:00
|
|
|
overflow-y:auto;
|
|
|
|
|
|
|
|
li {
|
|
|
|
@extend .clearfix;
|
|
|
|
line-height: 1.0em;
|
|
|
|
padding: 6px 8px;
|
2014-05-19 13:17:59 +08:00
|
|
|
background-color: scale-color-diff();
|
2013-03-12 03:26:14 +08:00
|
|
|
.left {
|
|
|
|
float: left;
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
margin-left: 52px;
|
|
|
|
}
|
|
|
|
|
|
|
|
img {
|
|
|
|
margin-top: 2px;
|
2014-05-19 13:17:59 +08:00
|
|
|
border: solid 1px scale-color-diff();
|
2013-03-12 03:26:14 +08:00
|
|
|
padding: 2px;
|
2014-05-06 13:50:51 +08:00
|
|
|
background-color: $secondary;
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.commit-message {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.857em;
|
2013-03-12 03:26:14 +08:00
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
|
|
|
|
.commit-meta {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.857em;
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.committer-name {
|
|
|
|
font-weight: bold;
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-03-12 03:26:14 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
li:last-child {
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
}
|
2013-03-15 00:28:35 +08:00
|
|
|
|
|
|
|
// Always show the scrollbar:
|
|
|
|
::-webkit-scrollbar {
|
|
|
|
width: 6px;
|
|
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
2014-09-08 10:46:04 +08:00
|
|
|
background: dark-light-diff($primary, $secondary, 90%, -75%);
|
2013-03-15 00:28:35 +08:00
|
|
|
-webkit-border-radius: 3px;
|
|
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
2014-05-19 13:17:59 +08:00
|
|
|
border-left: solid 1px scale-color-diff();
|
2013-03-15 00:28:35 +08:00
|
|
|
}
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.content-list {
|
|
|
|
|
|
|
|
h3 {
|
2014-09-08 10:46:04 +08:00
|
|
|
color: dark-light-diff($primary, $secondary, 50%, -60%);
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.071em;
|
2013-04-05 00:59:44 +08:00
|
|
|
padding-left: 5px;
|
2014-04-16 21:49:06 +08:00
|
|
|
margin-bottom: 10px;
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
ul {
|
|
|
|
list-style: none;
|
|
|
|
margin: 0;
|
|
|
|
|
2014-04-16 21:49:06 +08:00
|
|
|
li:first-of-type {
|
2014-05-19 13:17:59 +08:00
|
|
|
border-top: 1px solid scale-color-diff();
|
2014-04-16 21:49:06 +08:00
|
|
|
}
|
2013-04-05 00:59:44 +08:00
|
|
|
li {
|
2014-05-19 13:17:59 +08:00
|
|
|
border-bottom: 1px solid scale-color-diff();
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
li a {
|
|
|
|
display: block;
|
|
|
|
padding: 10px;
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-04-05 00:59:44 +08:00
|
|
|
|
|
|
|
&:hover {
|
2014-05-19 13:17:59 +08:00
|
|
|
background-color: scale-color-diff();
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
font-weight: bold;
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.content-editor {
|
|
|
|
min-height: 500px;
|
|
|
|
|
2013-04-09 23:28:28 +08:00
|
|
|
float: left;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 54.0540%;
|
|
|
|
margin-left: 1.8018%;
|
2013-04-09 23:28:28 +08:00
|
|
|
|
2013-04-05 00:59:44 +08:00
|
|
|
p.description {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $primary;
|
2013-04-05 00:59:44 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.controls {
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
#pagedown-editor {
|
|
|
|
width: 98%;
|
|
|
|
}
|
|
|
|
|
|
|
|
textarea.plain {
|
|
|
|
width: 98%;
|
|
|
|
height: 200px;
|
|
|
|
}
|
|
|
|
|
|
|
|
#wmd-input {
|
|
|
|
width: 98%;
|
|
|
|
height: 200px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.ace-wrapper {
|
|
|
|
position: relative;
|
|
|
|
height: 600px;
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.ace_editor {
|
|
|
|
position: absolute;
|
|
|
|
left: 0;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2013-05-09 15:37:34 +08:00
|
|
|
|
|
|
|
.row.groups {
|
|
|
|
input[type='text'] {
|
|
|
|
width: 500px;
|
|
|
|
}
|
|
|
|
input#group-users {
|
|
|
|
width: 600px;
|
|
|
|
}
|
|
|
|
}
|
2013-08-02 09:30:13 +08:00
|
|
|
|
2013-08-09 05:16:07 +08:00
|
|
|
// Logs
|
2013-08-02 09:30:13 +08:00
|
|
|
|
2013-10-23 04:30:30 +08:00
|
|
|
.admin-logs-table {
|
|
|
|
input.ember-text-field {
|
|
|
|
padding: 1px 4px;
|
|
|
|
}
|
2013-10-24 00:55:06 +08:00
|
|
|
.btn {
|
|
|
|
padding: 2px 8px;
|
2013-12-10 05:27:49 +08:00
|
|
|
.fa {
|
2013-10-24 00:55:06 +08:00
|
|
|
margin-right: 2px;
|
|
|
|
}
|
|
|
|
}
|
2013-10-23 04:30:30 +08:00
|
|
|
}
|
|
|
|
|
2013-10-22 02:49:51 +08:00
|
|
|
.screened-emails, .screened-urls, .screened-ip-addresses {
|
2013-11-05 05:24:32 +08:00
|
|
|
.email, .url, .domain {
|
2013-08-23 07:04:17 +08:00
|
|
|
width: 300px;
|
2013-08-09 05:16:07 +08:00
|
|
|
}
|
2013-10-23 04:30:30 +08:00
|
|
|
.action, .match_count, .last_match_at, .created_at {
|
|
|
|
text-align: center;
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 9.9099%;
|
2013-10-23 04:30:30 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-25 05:18:10 +08:00
|
|
|
.screened-ip-address-form {
|
|
|
|
margin-left: 6px;
|
|
|
|
.combobox {
|
|
|
|
width: 130px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-23 04:30:30 +08:00
|
|
|
.screened-emails, .screened-urls {
|
|
|
|
.ip_address {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 9.9099%;
|
2013-08-02 09:30:13 +08:00
|
|
|
text-align: center;
|
|
|
|
}
|
2013-08-08 04:04:12 +08:00
|
|
|
}
|
2013-10-23 04:30:30 +08:00
|
|
|
.screened-ip-addresses {
|
|
|
|
.ip_address {
|
|
|
|
width: 150px;
|
|
|
|
text-align: left;
|
|
|
|
input {
|
|
|
|
width: 130px;
|
|
|
|
}
|
|
|
|
}
|
2013-10-24 00:55:06 +08:00
|
|
|
.col.actions {
|
2013-10-23 04:30:30 +08:00
|
|
|
width: 275px;
|
2013-10-24 00:55:06 +08:00
|
|
|
padding-top: 4px;
|
2013-10-23 04:30:30 +08:00
|
|
|
a {
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2013-08-08 04:04:12 +08:00
|
|
|
|
|
|
|
.staff-actions {
|
2013-08-09 06:35:14 +08:00
|
|
|
width: 100%;
|
2013-08-08 04:04:12 +08:00
|
|
|
.action {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 10.810%;
|
2013-08-08 04:04:12 +08:00
|
|
|
}
|
2013-08-20 04:58:38 +08:00
|
|
|
.staff_user {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 9.009%;
|
2013-08-09 06:35:14 +08:00
|
|
|
}
|
2013-08-20 04:58:38 +08:00
|
|
|
.subject {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 18.018%;
|
2013-08-20 04:58:38 +08:00
|
|
|
}
|
2013-08-09 06:35:14 +08:00
|
|
|
.created_at {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 4.5045%;
|
2013-08-09 06:35:14 +08:00
|
|
|
}
|
|
|
|
.context {
|
2014-07-10 07:56:35 +08:00
|
|
|
width: 18.018%;
|
2013-08-08 04:04:12 +08:00
|
|
|
}
|
|
|
|
.created_at {
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
.details {
|
2013-08-20 04:58:38 +08:00
|
|
|
width: 300px;
|
2013-08-08 04:04:12 +08:00
|
|
|
a {
|
|
|
|
text-decoration: underline;
|
|
|
|
}
|
2013-08-09 06:35:14 +08:00
|
|
|
&.value {
|
|
|
|
height: 70px;
|
|
|
|
}
|
2013-08-08 04:04:12 +08:00
|
|
|
}
|
|
|
|
}
|
2013-08-09 05:16:07 +08:00
|
|
|
|
2013-08-10 04:58:57 +08:00
|
|
|
.staff-action-logs-controls {
|
|
|
|
margin: 0 0 20px 6px;
|
|
|
|
a.filter {
|
|
|
|
display: inline-block;
|
2014-05-07 11:53:04 +08:00
|
|
|
background-color: scale-color($primary, $lightness: 75%);
|
2013-08-10 04:58:57 +08:00
|
|
|
padding: 3px 10px;
|
|
|
|
border-radius: 3px;
|
2014-03-03 14:16:30 +08:00
|
|
|
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2013-08-10 04:58:57 +08:00
|
|
|
&:hover {
|
2014-05-07 11:53:04 +08:00
|
|
|
color: $primary;
|
2014-05-19 13:17:59 +08:00
|
|
|
background-color: scale-color-diff();
|
2014-02-24 09:47:44 +08:00
|
|
|
|
|
|
|
|
2013-08-10 04:58:57 +08:00
|
|
|
}
|
|
|
|
.label {
|
|
|
|
font-weight: bold;
|
|
|
|
}
|
|
|
|
i {
|
|
|
|
margin-left: 6px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.staff-action-logs-instructions {
|
2013-11-01 00:17:06 +08:00
|
|
|
margin: 0 0 10px 10px;
|
2013-08-10 04:58:57 +08:00
|
|
|
}
|
|
|
|
|
2013-08-09 05:16:07 +08:00
|
|
|
// Ember.ListView
|
|
|
|
|
|
|
|
.ember-list-view {
|
|
|
|
overflow-y: auto;
|
|
|
|
overflow-x: hidden;
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
.ember-list-item-view {
|
|
|
|
position: absolute;
|
|
|
|
}
|
2013-08-09 06:35:14 +08:00
|
|
|
|
2013-10-22 02:49:51 +08:00
|
|
|
.staff-actions, .screened-emails, .screened-urls, .screened-ip-addresses {
|
2014-03-03 14:16:30 +08:00
|
|
|
|
2014-05-07 11:53:04 +08:00
|
|
|
border-bottom: dotted 1px scale-color($primary, $lightness: 75%);
|
2013-08-09 06:35:14 +08:00
|
|
|
|
|
|
|
.heading-container {
|
|
|
|
width: 100%;
|
2014-05-19 13:17:59 +08:00
|
|
|
background-color: scale-color-diff();
|
2013-08-09 06:35:14 +08:00
|
|
|
}
|
|
|
|
.col.heading {
|
|
|
|
font-weight: bold;
|
|
|
|
padding: 4px 0;
|
|
|
|
}
|
|
|
|
.col {
|
|
|
|
display: inline-block;
|
|
|
|
padding-top: 6px;
|
|
|
|
vertical-align: top;
|
|
|
|
overflow-y: auto;
|
|
|
|
overflow-x: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
.ember-list-item-view {
|
|
|
|
width: 100%;
|
2014-05-19 13:17:59 +08:00
|
|
|
border-top: solid 1px scale-color-diff();
|
2013-08-09 06:35:14 +08:00
|
|
|
}
|
|
|
|
}
|
2013-08-21 22:49:35 +08:00
|
|
|
|
|
|
|
.log-details-modal {
|
|
|
|
.modal-tab {
|
|
|
|
width: 95%;
|
|
|
|
}
|
2014-01-02 23:22:04 +08:00
|
|
|
}
|
2014-01-24 05:40:10 +08:00
|
|
|
|
2014-09-25 08:19:26 +08:00
|
|
|
.tl3-requirements {
|
2014-01-24 05:40:10 +08:00
|
|
|
.fa-check {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $success;
|
2014-01-24 05:40:10 +08:00
|
|
|
}
|
|
|
|
.fa-times {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $danger;
|
2014-01-24 05:40:10 +08:00
|
|
|
}
|
2014-02-13 12:36:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Backups
|
|
|
|
// --------------------------------------------------
|
|
|
|
|
|
|
|
$rollback: #3D9970;
|
|
|
|
$rollback-dark: darken($rollback, 10%) !default;
|
|
|
|
$rollback-darker: darken($rollback, 20%) !default;
|
|
|
|
|
|
|
|
.btn-rollback {
|
2014-05-06 13:50:51 +08:00
|
|
|
color: $secondary;
|
2014-02-13 12:36:10 +08:00
|
|
|
background: $rollback;
|
|
|
|
&:hover {
|
|
|
|
background: $rollback-dark;
|
|
|
|
}
|
|
|
|
&:active {
|
|
|
|
@include linear-gradient($rollback-darker, $rollback-dark);
|
|
|
|
}
|
|
|
|
&[disabled] {
|
|
|
|
background: $rollback;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.admin-backups-logs {
|
|
|
|
max-height: 500px;
|
|
|
|
overflow: auto;
|
|
|
|
}
|
2014-02-22 08:41:01 +08:00
|
|
|
|
|
|
|
|
|
|
|
button.ru {
|
|
|
|
position: relative;
|
|
|
|
min-width: 110px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.ru-progress {
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
height: 100%;
|
|
|
|
background: rgba(0, 175, 0, 0.3);
|
|
|
|
}
|
|
|
|
|
|
|
|
.is-uploading:hover .ru-progress {
|
|
|
|
background: rgba(200, 0, 0, 0.3);
|
|
|
|
}
|
2014-03-19 07:36:02 +08:00
|
|
|
|
|
|
|
.invisible {
|
|
|
|
visibility: hidden;
|
|
|
|
}
|
2014-07-10 07:56:35 +08:00
|
|
|
|
2014-08-05 04:48:04 +08:00
|
|
|
.delete-flag-modal, .agree-flag-modal {
|
2014-07-29 01:17:37 +08:00
|
|
|
button {
|
|
|
|
display: block;
|
|
|
|
margin: 10px 0 10px 10px;
|
|
|
|
padding: 10px 15px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-08-21 00:48:56 +08:00
|
|
|
.start-backup-modal {
|
|
|
|
.btn {
|
|
|
|
margin: 10px 0 10px 5px;
|
|
|
|
}
|
|
|
|
.btn:first-of-type {
|
|
|
|
margin-left: 10px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-07-25 00:21:22 +08:00
|
|
|
@media all
|
2014-07-10 07:56:35 +08:00
|
|
|
and (max-width : 850px) {
|
|
|
|
.nav-stacked {
|
|
|
|
.glyph {width: auto; position: relative;}
|
|
|
|
> li > a {padding: 13px}
|
|
|
|
}
|
|
|
|
}
|
2014-07-23 04:30:32 +08:00
|
|
|
|
2014-07-25 00:21:22 +08:00
|
|
|
@media all
|
2014-07-23 04:30:32 +08:00
|
|
|
and (min-width : 320px)
|
|
|
|
and (max-width : 500px) {
|
|
|
|
|
|
|
|
.full-width { margin: 0; }
|
|
|
|
.site-settings-nav { width: 100%; }
|
|
|
|
.site-settings-detail {
|
|
|
|
width: 100%;
|
|
|
|
padding: 0;
|
|
|
|
border: none;
|
|
|
|
|
|
|
|
.settings .setting {
|
|
|
|
.setting-label {
|
|
|
|
float: left;
|
|
|
|
width: 100%;
|
|
|
|
h3 {
|
|
|
|
margin-bottom: 5px;
|
|
|
|
font-weight: bold;
|
|
|
|
margin-top: 25px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.setting-value {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
label {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 0.929em;
|
2014-07-23 04:30:32 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.content-editor {
|
|
|
|
width: 100%;
|
|
|
|
#pagedown-editor {
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
div.ac-wrap {
|
|
|
|
width: 100% !important;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.admin-container {
|
|
|
|
h2 {
|
|
|
|
float: left;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.dashboard-left, .dashboard-right { width: 100%; }
|
|
|
|
.dashboard-stats { margin: 0; }
|
|
|
|
|
|
|
|
.badges {
|
|
|
|
.current-badge {margin: 70px 0 0 0;}
|
|
|
|
.current-badge-actions {padding: 0;}
|
|
|
|
}
|
|
|
|
|
|
|
|
.customize .content-list, .customize .current-style {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
2014-07-27 16:22:01 +08:00
|
|
|
|
|
|
|
.badge-groupings {
|
|
|
|
list-style: none;
|
|
|
|
margin: 0;
|
|
|
|
padding: 10px 3px;
|
|
|
|
li {
|
|
|
|
padding: 6px 0;
|
|
|
|
width: 600px;
|
|
|
|
border-bottom: 1px solid #dfdfdf;
|
|
|
|
}
|
|
|
|
.actions {
|
2014-12-16 11:12:56 +08:00
|
|
|
font-size: 1.214em;
|
2014-07-27 16:22:01 +08:00
|
|
|
float: right;
|
|
|
|
a {
|
|
|
|
margin-left: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-09-03 22:09:30 +08:00
|
|
|
|
|
|
|
tr.not-activated {
|
|
|
|
td, td a, td a:visited {
|
|
|
|
color: #bbb;
|
|
|
|
}
|
2014-09-03 22:41:13 +08:00
|
|
|
}
|
|
|
|
.details.not-activated {
|
|
|
|
.username .value, .email .value a, .email .value a:visited {
|
|
|
|
color: #bbb;
|
|
|
|
}
|
2014-09-08 10:46:04 +08:00
|
|
|
}
|
2014-09-25 23:32:08 +08:00
|
|
|
|
|
|
|
.user-fields {
|
|
|
|
h2 {
|
|
|
|
margin-bottom: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.user-field {
|
|
|
|
padding: 10px;
|
|
|
|
margin-bottom: 10px;
|
|
|
|
border-bottom: 1px solid scale-color-diff();
|
|
|
|
|
|
|
|
.form-display {
|
2014-09-27 02:48:34 +08:00
|
|
|
width: 25%;
|
2014-09-25 23:32:08 +08:00
|
|
|
display: inline-block;
|
|
|
|
float: left;
|
|
|
|
}
|
|
|
|
|
|
|
|
.form-element {
|
|
|
|
float: left;
|
2014-09-27 02:48:34 +08:00
|
|
|
width: 25%;
|
2014-09-25 23:32:08 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
.controls {
|
|
|
|
float: right;
|
|
|
|
text-align: right;
|
|
|
|
width: 20%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.clearfix {
|
|
|
|
clear: both;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|