0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-17 23:44:39 -05:00

Added confirmation dialog when archiving newsletter

closes https://github.com/TryGhost/Team/issues/1530

- added confirmation modal that uses passed in archive task when confirming to provide feedback on progress
- switched archive link from immediately triggering the archive task to an action that launches the confirm modal
This commit is contained in:
Kevin Ansfield 2022-04-20 11:08:48 +01:00
parent 1c34e41ea3
commit 58290a6134
5 changed files with 50 additions and 4 deletions

View file

@ -1,5 +1,5 @@
<div class="flex flex-column h-100" {{css-transition (unless @firstRender "gh-nav-main")}} data-test-nav-menu="main" ...attributes>
{{#unless this.session.user.isContributor}}
<header class="gh-nav-menu">
<div class="gh-nav-menu-details">

View file

@ -0,0 +1,32 @@
<div class="modal-content">
<header class="modal-header" data-test-modal="confirm-newsletter-archive">
<h1>Are you sure?</h1>
</header>
<button type="button" class="close" role="button" title="Close" {{on "click" (fn @close false)}}>{{svg-jar "close"}}<span class="hidden">Close</span></button>
<div class="modal-body">
<p>
Your newsletter <strong>{{@data.newsletter.name}}</strong> will be
immediately archived and no longer be visible to your members.
</p>
</div>
<div class="modal-footer" {{on-key "Enter" (perform @data.archiveNewsletterTask @data.newsletter)}}>
<button
type="button"
class="gh-btn"
{{on "click" (fn @close false)}}
>
<span>Cancel</span>
</button>
<GhTaskButton
@buttonText="Archive"
@runningText="Archiving"
@successText="Archived"
@task={{@data.archiveNewsletterTask}}
@taskArgs={{@data.newsletter}}
@class="gh-btn gh-btn-black gh-btn-icon"
/>
</div>
</div>

View file

@ -1,5 +1,5 @@
<div class="modal-content">
<header class="modal-header" data-test-modal="confirm-newsletter-email">
<header class="modal-header" data-test-modal="confirm-newsletter-create">
<h1>All set? Here's what happens next</h1>
</header>
<button type="button" class="close" role="button" title="Close" {{on "click" (fn @close false)}}>{{svg-jar "close"}}<span class="hidden">Close</span></button>

View file

@ -97,7 +97,7 @@
</li>
{{#if (eq newsletter.status "active")}}
<li>
<button class="mr2" type="button" {{on "click" (perform this.archiveNewsletterTask newsletter)}}>
<button class="mr2" type="button" {{on "click" (fn this.archiveNewsletter newsletter)}}>
<span>Archive</span>
</button>
</li>

View file

@ -1,12 +1,14 @@
import Component from '@glimmer/component';
import ConfirmArchiveModal from '../../modals/edit-newsletter/confirm-archive';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
import {task} from 'ember-concurrency';
import {tracked} from '@glimmer/tracking';
export default class NewsletterManagementComponent extends Component {
@service store;
@service modals;
@service router;
@service store;
@tracked statusFilter = 'active';
@tracked filteredNewsletters = [];
@ -24,6 +26,8 @@ export default class NewsletterManagementComponent extends Component {
willDestroy() {
super.willDestroy(...arguments);
this.router.off('routeDidChange', this.handleNewRouteChange);
this.confirmArchiveModal?.close();
}
get activeNewsletters() {
@ -64,6 +68,14 @@ export default class NewsletterManagementComponent extends Component {
}
}
@action
archiveNewsletter(newsletter) {
this.confirmArchiveModal = this.modals.open(ConfirmArchiveModal, {
newsletter,
archiveNewsletterTask: this.archiveNewsletterTask
});
}
@task
*archiveNewsletterTask(newsletter) {
newsletter.status = 'archived';
@ -71,6 +83,8 @@ export default class NewsletterManagementComponent extends Component {
this.updateFilteredNewsletters();
this.confirmArchiveModal?.close();
return result;
}