diff --git a/customize.dist/src/less2/include/colortheme-dark.less b/customize.dist/src/less2/include/colortheme-dark.less
index dbf130f2b..0882fbd41 100644
--- a/customize.dist/src/less2/include/colortheme-dark.less
+++ b/customize.dist/src/less2/include/colortheme-dark.less
@@ -142,6 +142,7 @@
@cp_buttons-default-color: @cryptpad_text_col;
@cp_buttons-default-border: @cryptpad_text_col;
@cp_buttons-red: #E55236;
+@cp_buttons-red-text: @cryptpad_color_light_red;
@cp_buttons-red-color: #FFF;
@cp_buttons-red-border: transparent;
@cp_buttons-primary: @cryptpad_color_brand;
@@ -159,7 +160,7 @@
@cp_sidebar-right-bg: @cryptpad_color_grey_900;
@cp_sidebar-right-fg: @cryptpad_text_col; // XXX was black
@cp_sidebar-left-active: @cp_sidebar-right-bg;
-@cp_sidebar-hint: @cryptpad_color_hint_grey;
+@cp_sidebar-hint: fade(@cryptpad_text_col, 80%);
// Drive
@cp_drive-bg: @cp_sidebar-right-bg;
@@ -327,6 +328,7 @@
// Code
@cp_preview-bg: @cryptpad_color_grey_900;
@cp_preview-fg: @cryptpad_text_col;
+@cp_preview-link: @cryptpad_color_brand_300;
// Debug
@cp_debug-hover: fade(@cryptpad_color_black, 10%);
diff --git a/customize.dist/src/less2/include/colortheme.less b/customize.dist/src/less2/include/colortheme.less
index 92f0ab85c..2869703b2 100644
--- a/customize.dist/src/less2/include/colortheme.less
+++ b/customize.dist/src/less2/include/colortheme.less
@@ -142,6 +142,7 @@
@cp_buttons-default-color: @cryptpad_text_col;
@cp_buttons-default-border: @cryptpad_text_col;
@cp_buttons-red: #E55236;
+@cp_buttons-red-text: @cp_buttons-red;
@cp_buttons-red-color: #FFF;
@cp_buttons-red-border: transparent;
@cp_buttons-primary: @cryptpad_color_brand;
@@ -327,6 +328,7 @@
// Code
@cp_preview-bg: @cryptpad_color_white;
@cp_preview-fg: @cryptpad_text_col;
+@cp_preview-link: @cryptpad_color_brand;
// Debug
@cp_debug-hover: fade(@cryptpad_color_black, 10%);
diff --git a/customize.dist/src/less2/include/forms.less b/customize.dist/src/less2/include/forms.less
index 0f5a6193b..4962f3891 100644
--- a/customize.dist/src/less2/include/forms.less
+++ b/customize.dist/src/less2/include/forms.less
@@ -142,7 +142,7 @@
&.danger-alt, &.btn-danger-alt, &.btn-danger-outline {
border-color: @cp_buttons-red;
- color: @cp_buttons-red;
+ color: @cp_buttons-red-text;
&:hover, &:not(:disabled):active, &:focus {
border-color: @cp_buttons-red;
color: @cp_buttons-red-color;
diff --git a/www/admin/inner.js b/www/admin/inner.js
index 35fbe404f..8b6bed1d9 100644
--- a/www/admin/inner.js
+++ b/www/admin/inner.js
@@ -53,6 +53,7 @@ define([
'cp-admin-getlimits',
],
'stats': [
+ 'cp-admin-refresh-stats',
'cp-admin-active-sessions',
'cp-admin-active-pads',
'cp-admin-open-files',
@@ -466,49 +467,86 @@ define([
return $div;
};
+ var onRefreshStats = Util.mkEvent();
+
+ create['refresh-stats'] = function () {
+ var key = 'refresh-stats';
+ var $div = $('
', {'class': 'cp-admin-' + key + ' cp-sidebarlayout-element'});
+ var $btn = $(h('button.btn.btn-primary', Messages.oo_refresh));
+ $btn.click(function () {
+ onRefreshStats.fire();
+ });
+ $div.append($btn);
+ return $div;
+ };
+
create['active-sessions'] = function () {
var key = 'active-sessions';
var $div = makeBlock(key);
- sFrameChan.query('Q_ADMIN_RPC', {
- cmd: 'ACTIVE_SESSIONS',
- }, function (e, data) {
- var total = data[0];
- var ips = data[1];
- $div.append(h('pre', total + ' (' + ips + ')'));
- });
+ var onRefresh = function () {
+ $div.find('pre').remove();
+ sFrameChan.query('Q_ADMIN_RPC', {
+ cmd: 'ACTIVE_SESSIONS',
+ }, function (e, data) {
+ var total = data[0];
+ var ips = data[1];
+ $div.find('pre').remove();
+ $div.append(h('pre', total + ' (' + ips + ')'));
+ });
+ };
+ onRefresh();
+ onRefreshStats.reg(onRefresh);
return $div;
};
create['active-pads'] = function () {
var key = 'active-pads';
var $div = makeBlock(key);
- sFrameChan.query('Q_ADMIN_RPC', {
- cmd: 'ACTIVE_PADS',
- }, function (e, data) {
- console.log(e, data);
- $div.append(h('pre', String(data)));
- });
+ var onRefresh = function () {
+ $div.find('pre').remove();
+ sFrameChan.query('Q_ADMIN_RPC', {
+ cmd: 'ACTIVE_PADS',
+ }, function (e, data) {
+ console.log(e, data);
+ $div.find('pre').remove();
+ $div.append(h('pre', String(data)));
+ });
+ };
+ onRefresh();
+ onRefreshStats.reg(onRefresh);
return $div;
};
create['open-files'] = function () {
var key = 'open-files';
var $div = makeBlock(key);
- sFrameChan.query('Q_ADMIN_RPC', {
- cmd: 'GET_FILE_DESCRIPTOR_COUNT',
- }, function (e, data) {
- console.log(e, data);
- $div.append(h('pre', String(data)));
- });
+ var onRefresh = function () {
+ $div.find('pre').remove();
+ sFrameChan.query('Q_ADMIN_RPC', {
+ cmd: 'GET_FILE_DESCRIPTOR_COUNT',
+ }, function (e, data) {
+ console.log(e, data);
+ $div.find('pre').remove();
+ $div.append(h('pre', String(data)));
+ });
+ };
+ onRefresh();
+ onRefreshStats.reg(onRefresh);
return $div;
};
create['registered'] = function () {
var key = 'registered';
var $div = makeBlock(key);
- sFrameChan.query('Q_ADMIN_RPC', {
- cmd: 'REGISTERED_USERS',
- }, function (e, data) {
- console.log(e, data);
- $div.append(h('pre', String(data)));
- });
+ var onRefresh = function () {
+ $div.find('pre').remove();
+ sFrameChan.query('Q_ADMIN_RPC', {
+ cmd: 'REGISTERED_USERS',
+ }, function (e, data) {
+ console.log(e, data);
+ $div.find('pre').remove();
+ $div.append(h('pre', String(data)));
+ });
+ };
+ onRefresh();
+ onRefreshStats.reg(onRefresh);
return $div;
};
create['disk-usage'] = function () {
diff --git a/www/code/app-code.less b/www/code/app-code.less
index 138741919..a6ccd864d 100644
--- a/www/code/app-code.less
+++ b/www/code/app-code.less
@@ -112,6 +112,10 @@
media-tag > * {
margin-bottom: 1rem;
}
+ a {
+ color: @cp_preview-link;
+ text-decoration: underline;
+ }
}
.cp-splitter {