mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 23:14:20 +08:00
151 lines
4.2 KiB
JavaScript
151 lines
4.2 KiB
JavaScript
|
Discourse.AdminBackupsRoute = Discourse.Route.extend({
|
||
|
|
||
|
LOG_CHANNEL: "/admin/backups/logs",
|
||
|
|
||
|
activate: function() {
|
||
|
Discourse.MessageBus.subscribe(this.LOG_CHANNEL, this._processLogMessage.bind(this));
|
||
|
},
|
||
|
|
||
|
_processLogMessage: function(log) {
|
||
|
if (log.message === "[STARTED]") {
|
||
|
this.controllerFor("adminBackups").set("isOperationRunning", true);
|
||
|
this.controllerFor("adminBackupsLogs").clear();
|
||
|
} else if (log.message === "[FAILED]") {
|
||
|
this.controllerFor("adminBackups").set("isOperationRunning", false);
|
||
|
bootbox.alert(I18n.t("admin.backups.operations.failed", { operation: log.operation }));
|
||
|
} else if (log.message === "[SUCCESS]") {
|
||
|
this.controllerFor("adminBackups").set("isOperationRunning", false);
|
||
|
if (log.operation === "restore") {
|
||
|
// redirect to homepage when the restore is done (session might be lost)
|
||
|
window.location.pathname = Discourse.getURL("/");
|
||
|
}
|
||
|
} else {
|
||
|
this.controllerFor("adminBackupsLogs").pushObject(Em.Object.create(log));
|
||
|
}
|
||
|
},
|
||
|
|
||
|
model: function() {
|
||
|
return PreloadStore.getAndRemove("operations_status", function() {
|
||
|
return Discourse.ajax("/admin/backups/status.json");
|
||
|
}).then(function (status) {
|
||
|
return Em.Object.create({
|
||
|
isOperationRunning: status.is_operation_running,
|
||
|
canRollback: status.can_rollback,
|
||
|
});
|
||
|
});
|
||
|
},
|
||
|
|
||
|
deactivate: function() {
|
||
|
Discourse.MessageBus.unsubscribe(this.LOG_CHANNEL);
|
||
|
},
|
||
|
|
||
|
actions: {
|
||
|
/**
|
||
|
Starts a backup and redirect the user to the logs tab
|
||
|
|
||
|
@method startBackup
|
||
|
**/
|
||
|
startBackup: function() {
|
||
|
var self = this;
|
||
|
bootbox.confirm(
|
||
|
I18n.t("admin.backups.operations.backup.confirm"),
|
||
|
I18n.t("no_value"),
|
||
|
I18n.t("yes_value"),
|
||
|
function(confirmed) {
|
||
|
if (confirmed) {
|
||
|
Discourse.Backup.start().then(function() {
|
||
|
self.controllerFor("adminBackupsLogs").clear();
|
||
|
self.controllerFor("adminBackups").set("isOperationRunning", true);
|
||
|
self.transitionTo("admin.backups.logs");
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
Destroys a backup
|
||
|
|
||
|
@method destroyBackup
|
||
|
@param {Discourse.Backup} the backup to destroy
|
||
|
**/
|
||
|
destroyBackup: function(backup) {
|
||
|
var self = this;
|
||
|
bootbox.confirm(
|
||
|
I18n.t("admin.backups.operations.destroy.confirm"),
|
||
|
I18n.t("no_value"),
|
||
|
I18n.t("yes_value"),
|
||
|
function(confirmed) {
|
||
|
if (confirmed) {
|
||
|
backup.destroy().then(function() {
|
||
|
self.controllerFor("adminBackupsIndex").removeObject(backup);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
Start a restore and redirect the user to the logs tab
|
||
|
|
||
|
@method startRestore
|
||
|
@param {Discourse.Backup} the backup to restore
|
||
|
**/
|
||
|
startRestore: function(backup) {
|
||
|
var self = this;
|
||
|
bootbox.confirm(
|
||
|
I18n.t("admin.backups.operations.restore.confirm"),
|
||
|
I18n.t("no_value"),
|
||
|
I18n.t("yes_value"),
|
||
|
function(confirmed) {
|
||
|
if (confirmed) {
|
||
|
backup.restore().then(function() {
|
||
|
self.controllerFor("adminBackupsLogs").clear();
|
||
|
self.controllerFor("adminBackups").set("isOperationRunning", true);
|
||
|
self.transitionTo("admin.backups.logs");
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
Cancels the current operation
|
||
|
|
||
|
@method cancelOperation
|
||
|
**/
|
||
|
cancelOperation: function() {
|
||
|
var self = this;
|
||
|
bootbox.confirm(
|
||
|
I18n.t("admin.backups.operations.cancel.confirm"),
|
||
|
I18n.t("no_value"),
|
||
|
I18n.t("yes_value"),
|
||
|
function(confirmed) {
|
||
|
if (confirmed) {
|
||
|
Discourse.Backup.cancel().then(function() {
|
||
|
self.controllerFor("adminBackups").set("isOperationRunning", false);
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
Rollback to previous working state
|
||
|
|
||
|
@method rollback
|
||
|
**/
|
||
|
rollback: function() {
|
||
|
bootbox.confirm(
|
||
|
I18n.t("admin.backups.operations.rollback.confirm"),
|
||
|
I18n.t("no_value"),
|
||
|
I18n.t("yes_value"),
|
||
|
function(confirmed) {
|
||
|
if (confirmed) { Discourse.Backup.rollback(); }
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
}
|
||
|
|
||
|
});
|