diff --git a/public/language/en-GB/admin/appearance/customise.json b/public/language/en-GB/admin/appearance/customise.json
index 767d443e29..5095f7a937 100644
--- a/public/language/en-GB/admin/appearance/customise.json
+++ b/public/language/en-GB/admin/appearance/customise.json
@@ -5,5 +5,8 @@
"custom-header": "Custom Header",
"custom-header.description": "Enter custom HTML here (ex. JavaScript, Meta Tags, etc.), which will be appended to the <head> section of your forum's markup.",
- "custom-header.enable": "Enable Custom Header"
+ "custom-header.enable": "Enable Custom Header",
+
+ "custom-css.livereload": "Enable Live Reload",
+ "custom-css.livereload.description": "Enable this to force all sessions on every device under your account to refresh whenever you click save"
}
\ No newline at end of file
diff --git a/public/src/admin/appearance/customise.js b/public/src/admin/appearance/customise.js
index 268d8480af..e95ea5ba30 100644
--- a/public/src/admin/appearance/customise.js
+++ b/public/src/admin/appearance/customise.js
@@ -28,6 +28,12 @@ define('admin/appearance/customise', ['admin/settings', 'ace/ace'], function (Se
app.flags._unsaved = true;
$('#customHTML-holder').val(customHTML.getValue());
});
+
+ $('#save').on('click', function () {
+ if ($('#enableLiveReload').is(':checked')) {
+ socket.emit('admin.reloadAllSessions');
+ }
+ });
});
};
diff --git a/public/src/app.js b/public/src/app.js
index 81ebe4f891..0308a4b73c 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -72,6 +72,11 @@ app.cacheBuster = null;
});
}
});
+ socket.on('event:livereload', function (data) {
+ if (app.user.isAdmin && !ajaxify.currentPage.match(/admin/)) {
+ window.location.reload();
+ }
+ });
require(['taskbar', 'helpers', 'forum/pagination'], function (taskbar, helpers, pagination) {
taskbar.init();
diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js
index f1bc4f2871..b63b099815 100644
--- a/src/socket.io/admin.js
+++ b/src/socket.io/admin.js
@@ -13,6 +13,7 @@ var events = require('../events');
var emailer = require('../emailer');
var db = require('../database');
var analytics = require('../analytics');
+var websockets = require('../socket.io/index');
var index = require('./index');
var getAdminSearchDict = require('../admin/search').getDictionary;
@@ -278,5 +279,9 @@ SocketAdmin.deleteAllSessions = function (socket, data, callback) {
user.auth.deleteAllSessions(callback);
};
+SocketAdmin.reloadAllSessions = function (socket, data, callback) {
+ websockets.in('uid_' + socket.uid).emit('event:livereload');
+ callback();
+};
module.exports = SocketAdmin;
diff --git a/src/views/admin/appearance/customise.tpl b/src/views/admin/appearance/customise.tpl
index f2fdbcea60..b2d1307b80 100644
--- a/src/views/admin/appearance/customise.tpl
+++ b/src/views/admin/appearance/customise.tpl
@@ -22,6 +22,7 @@
+
[[admin/appearance/customise:custom-header.description]] @@ -40,6 +41,18 @@