ACP quick actions (#6374)

* ACP quick actions

- Moved restart, build & restart, and logout into separate buttons
- Moved buttons on mobile into the side menu
- Added version and upgrade alert to header / mobile menu
- Moved version checking to server-side with a cache for rate limiting
- Changed "reload" translations to "rebuild and restart"

* Change info alert to black-on-white to match focused search bar

* Fix tests

* Fallback for failed fetch of latest version
This commit is contained in:
Peter Jaszkowiak
2018-03-20 06:32:17 -06:00
committed by Julian Lam
parent 81e085bb9d
commit eaae5b52cd
14 changed files with 229 additions and 103 deletions

View File

@@ -8,7 +8,6 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress'
graphs: false,
};
var isMobile = false;
var isPrerelease = /^v?\d+\.\d+\.\d+-.+$/;
var graphData = {
rooms: {},
traffic: {},
@@ -42,42 +41,6 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator', 'benchpress'
isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
$.get('https://api.github.com/repos/NodeBB/NodeBB/tags', function (releases) {
// Re-sort the releases, as they do not follow Semver (wrt pre-releases)
releases = releases.sort(function (a, b) {
a = a.name.replace(/^v/, '');
b = b.name.replace(/^v/, '');
return semver.lt(a, b) ? 1 : -1;
}).filter(function (version) {
return !isPrerelease.test(version.name); // filter out automated prerelease versions
});
var version = $('#version').html();
var latestVersion = releases[0].name.slice(1);
var checkEl = $('.version-check');
var text;
// Alter box colour accordingly
if (semver.eq(latestVersion, version)) {
checkEl.removeClass('alert-info').addClass('alert-success');
text = '[[admin/general/dashboard:up-to-date]]';
} else if (semver.gt(latestVersion, version)) {
checkEl.removeClass('alert-info').addClass('alert-warning');
if (!isPrerelease.test(version)) {
text = '[[admin/general/dashboard:upgrade-available, ' + latestVersion + ']]';
} else {
text = '[[admin/general/dashboard:prerelease-upgrade-available, ' + latestVersion + ']]';
}
} else if (isPrerelease.test(version)) {
checkEl.removeClass('alert-info').addClass('alert-info');
text = '[[admin/general/dashboard:prerelease-warning]]';
}
translator.translate(text, function (text) {
checkEl.append(text);
});
});
$('[data-toggle="tooltip"]').tooltip();
setupRealtimeButton();