diff --git a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6 b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6
index c2f9df52059..9c92228b8cb 100644
--- a/app/assets/javascripts/admin/components/admin-backups-logs.js.es6
+++ b/app/assets/javascripts/admin/components/admin-backups-logs.js.es6
@@ -2,6 +2,7 @@ import debounce from "discourse/lib/debounce";
import { renderSpinner } from "discourse/helpers/loading-spinner";
import { escapeExpression } from "discourse/lib/utilities";
import { bufferedRender } from "discourse-common/lib/buffered-render";
+import { observes, on } from "ember-addons/ember-computed-decorators";
export default Ember.Component.extend(
bufferedRender({
@@ -21,30 +22,38 @@ export default Ember.Component.extend(
$div.scrollTop = $div.scrollHeight;
},
- _updateFormattedLogs: debounce(function() {
- const logs = this.get("logs");
- if (logs.length === 0) {
+ @on("init")
+ @observes("logs.[]")
+ _resetFormattedLogs() {
+ if (this.get("logs").length === 0) {
this._reset(); // reset the cached logs whenever the model is reset
- } else {
- // do the log formatting only once for HELLish performance
- let formattedLogs = this.get("formattedLogs");
- for (let i = this.get("index"), length = logs.length; i < length; i++) {
- const date = logs[i].get("timestamp"),
- message = escapeExpression(logs[i].get("message"));
- formattedLogs += "[" + date + "] " + message + "\n";
- }
- // update the formatted logs & cache index
- this.setProperties({
- formattedLogs: formattedLogs,
- index: logs.length
- });
- // force rerender
this.rerenderBuffer();
}
+ },
+
+ @on("init")
+ @observes("logs.[]")
+ _updateFormattedLogs: debounce(function() {
+ const logs = this.get("logs");
+ if (logs.length === 0) return;
+
+ // do the log formatting only once for HELLish performance
+ let formattedLogs = this.get("formattedLogs");
+ for (let i = this.get("index"), length = logs.length; i < length; i++) {
+ const date = logs[i].get("timestamp"),
+ message = escapeExpression(logs[i].get("message"));
+ formattedLogs += "[" + date + "] " + message + "\n";
+ }
+ // update the formatted logs & cache index
+ this.setProperties({
+ formattedLogs: formattedLogs,
+ index: logs.length
+ });
+ // force rerender
+ this.rerenderBuffer();
+
Ember.run.scheduleOnce("afterRender", this, this._scrollDown);
- }, 150)
- .observes("logs.[]")
- .on("init"),
+ }, 150),
buildBuffer(buffer) {
const formattedLogs = this.get("formattedLogs");
diff --git a/app/assets/javascripts/admin/controllers/modals/admin-start-backup.js.es6 b/app/assets/javascripts/admin/controllers/modals/admin-start-backup.js.es6
index 18237198ba2..7bd96b326a4 100644
--- a/app/assets/javascripts/admin/controllers/modals/admin-start-backup.js.es6
+++ b/app/assets/javascripts/admin/controllers/modals/admin-start-backup.js.es6
@@ -1,24 +1,17 @@
import ModalFunctionality from "discourse/mixins/modal-functionality";
-import Backup from "admin/models/backup";
export default Ember.Controller.extend(ModalFunctionality, {
adminBackupsLogs: Ember.inject.controller(),
- _startBackup(withUploads) {
- this.currentUser.set("hideReadOnlyAlert", true);
- Backup.start(withUploads).then(() => {
- this.get("adminBackupsLogs.logs").clear();
- this.send("backupStarted");
- });
- },
-
actions: {
- startBackup() {
- this._startBackup();
+ startBackupWithUploads() {
+ this.send("closeModal");
+ this.send("startBackup", true);
},
- startBackupWithoutUpload() {
- this._startBackup(false);
+ startBackupWithoutUploads() {
+ this.send("closeModal");
+ this.send("startBackup", false);
},
cancel() {
diff --git a/app/assets/javascripts/admin/routes/admin-backups.js.es6 b/app/assets/javascripts/admin/routes/admin-backups.js.es6
index 2d9f185cca5..a0b9342c619 100644
--- a/app/assets/javascripts/admin/routes/admin-backups.js.es6
+++ b/app/assets/javascripts/admin/routes/admin-backups.js.es6
@@ -10,6 +10,7 @@ export default Discourse.Route.extend({
activate() {
this.messageBus.subscribe(LOG_CHANNEL, log => {
if (log.message === "[STARTED]") {
+ Discourse.User.currentProp("hideReadOnlyAlert", true);
this.controllerFor("adminBackups").set(
"model.isOperationRunning",
true
@@ -62,15 +63,14 @@ export default Discourse.Route.extend({
},
actions: {
- startBackup() {
+ showStartBackupModal() {
showModal("admin-start-backup", { admin: true });
this.controllerFor("modal").set("modalClass", "start-backup-modal");
},
- backupStarted() {
- this.controllerFor("adminBackups").set("isOperationRunning", true);
+ startBackup(withUploads) {
this.transitionTo("admin.backups.logs");
- this.send("closeModal");
+ Backup.start(withUploads);
},
destroyBackup(backup) {
@@ -100,17 +100,8 @@ export default Discourse.Route.extend({
I18n.t("yes_value"),
function(confirmed) {
if (confirmed) {
- Discourse.User.currentProp("hideReadOnlyAlert", true);
- backup.restore().then(function() {
- self
- .controllerFor("adminBackupsLogs")
- .get("logs")
- .clear();
- self
- .controllerFor("adminBackups")
- .set("model.isOperationRunning", true);
- self.transitionTo("admin.backups.logs");
- });
+ self.transitionTo("admin.backups.logs");
+ backup.restore();
}
}
);
diff --git a/app/assets/javascripts/admin/templates/backups.hbs b/app/assets/javascripts/admin/templates/backups.hbs
index 2dcd6e02ba1..fe7861839f1 100644
--- a/app/assets/javascripts/admin/templates/backups.hbs
+++ b/app/assets/javascripts/admin/templates/backups.hbs
@@ -21,7 +21,7 @@
label="admin.backups.operations.cancel.label"
icon="times"}}
{{else}}
- {{d-button action="startBackup"
+ {{d-button action="showStartBackupModal"
class="btn-primary"
title="admin.backups.operations.backup.title"
label="admin.backups.operations.backup.label"
diff --git a/app/assets/javascripts/admin/templates/modal/admin-start-backup.hbs b/app/assets/javascripts/admin/templates/modal/admin-start-backup.hbs
index 250931599b9..0990760888a 100644
--- a/app/assets/javascripts/admin/templates/modal/admin-start-backup.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin-start-backup.hbs
@@ -1,5 +1,5 @@
{{#d-modal-body title="admin.backups.operations.backup.confirm"}}
-
-
+
+
{{/d-modal-body}}