mirror of
https://github.com/discourse/discourse.git
synced 2024-12-14 17:03:45 +08:00
1446596089
This commit converts the Backups page in the admin interface to follow our new admin interface guidelines. As part of this work, I've also made `AdminPageHeader` and `AdminPageSubheader` components that can be reused on any admin page for consistency, that handle the title and action buttons and also breadcrumbs. Also renamed `AdminPluginFilteredSiteSettings` to `AdminFilteredSiteSettings` since it can be used generally to show a subset of filtered site settings, not only settings for a plugin. Not sure if it's ideal to have to define a new route for this for every config area, but not sure how else to do it right now.
101 lines
2.7 KiB
Plaintext
101 lines
2.7 KiB
Plaintext
import Component from "@glimmer/component";
|
|
import { action } from "@ember/object";
|
|
import { service } from "@ember/service";
|
|
import routeAction from "discourse/helpers/route-action";
|
|
import { ajax } from "discourse/lib/ajax";
|
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
|
import I18n from "discourse-i18n";
|
|
|
|
export default class AdminBackupsActions extends Component {
|
|
@service currentUser;
|
|
@service site;
|
|
@service dialog;
|
|
|
|
@action
|
|
toggleReadOnlyMode() {
|
|
if (!this.site.isReadOnly) {
|
|
this.dialog.yesNoConfirm({
|
|
message: I18n.t("admin.backups.read_only.enable.confirm"),
|
|
didConfirm: () => {
|
|
this.currentUser.set("hideReadOnlyAlert", true);
|
|
this.#toggleReadOnlyMode(true);
|
|
},
|
|
});
|
|
} else {
|
|
this.#toggleReadOnlyMode(false);
|
|
}
|
|
}
|
|
|
|
get rollbackDisabled() {
|
|
return !this.rollbackEnabled;
|
|
}
|
|
|
|
get rollbackEnabled() {
|
|
return (
|
|
this.args.backups.canRollback &&
|
|
this.args.backups.restoreEnabled &&
|
|
!this.args.backups.isOperationRunning
|
|
);
|
|
}
|
|
|
|
async #toggleReadOnlyMode(enable) {
|
|
try {
|
|
await ajax("/admin/backups/readonly", {
|
|
type: "PUT",
|
|
data: { enable },
|
|
});
|
|
this.site.set("isReadOnly", enable);
|
|
} catch (err) {
|
|
popupAjaxError(err);
|
|
}
|
|
}
|
|
|
|
<template>
|
|
{{#if @backups.isOperationRunning}}
|
|
<@actions.Danger
|
|
@action={{routeAction "cancelOperation"}}
|
|
@title="admin.backups.operations.cancel.title"
|
|
@label="admin.backups.operations.cancel.label"
|
|
@icon="times"
|
|
class="admin-backups__cancel"
|
|
/>
|
|
{{else}}
|
|
<@actions.Primary
|
|
@action={{routeAction "showStartBackupModal"}}
|
|
@title="admin.backups.operations.backup.title"
|
|
@label="admin.backups.operations.backup.label"
|
|
@icon="rocket"
|
|
class="admin-backups__start"
|
|
/>
|
|
{{/if}}
|
|
|
|
{{#if @backups.canRollback}}
|
|
<@actions.Default
|
|
@action={{routeAction "rollback"}}
|
|
@label="admin.backups.operations.rollback.label"
|
|
@title="admin.backups.operations.rollback.title"
|
|
@icon="ambulance"
|
|
@disabled={{this.rollbackDisabled}}
|
|
class="admin-backups__rollback"
|
|
/>
|
|
{{/if}}
|
|
|
|
<@actions.Default
|
|
@icon={{if this.site.isReadOnly "far-eye-slash" "far-eye"}}
|
|
@action={{this.toggleReadOnlyMode}}
|
|
@disabled={{@backups.isOperationRunning}}
|
|
@title={{if
|
|
this.site.isReadOnly
|
|
"admin.backups.read_only.disable.title"
|
|
"admin.backups.read_only.enable.title"
|
|
}}
|
|
@label={{if
|
|
this.site.isReadOnly
|
|
"admin.backups.read_only.disable.label"
|
|
"admin.backups.read_only.enable.label"
|
|
}}
|
|
class="admin-backups__toggle-read-only"
|
|
/>
|
|
</template>
|
|
}
|