From d8270a110c3ef0eefe5af7bc5cb0e9f9d2a817aa Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Fri, 19 Jun 2020 14:14:39 +0100 Subject: [PATCH] Moved members bulk delete confirmation into a modal --- .../app/components/modal-delete-members.hbs | 16 ++++++++++ .../app/components/modal-delete-members.js | 21 +++++++++++++ ghost/admin/app/controllers/members.js | 30 ++++++++++++++++--- ghost/admin/app/templates/members.hbs | 12 +++++++- 4 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 ghost/admin/app/components/modal-delete-members.hbs create mode 100644 ghost/admin/app/components/modal-delete-members.js diff --git a/ghost/admin/app/components/modal-delete-members.hbs b/ghost/admin/app/components/modal-delete-members.hbs new file mode 100644 index 0000000000..fa81b39b07 --- /dev/null +++ b/ghost/admin/app/components/modal-delete-members.hbs @@ -0,0 +1,16 @@ + +{{svg-jar "close"}} + + + + \ No newline at end of file diff --git a/ghost/admin/app/components/modal-delete-members.js b/ghost/admin/app/components/modal-delete-members.js new file mode 100644 index 0000000000..9cbf67f501 --- /dev/null +++ b/ghost/admin/app/components/modal-delete-members.js @@ -0,0 +1,21 @@ +import ModalComponent from 'ghost-admin/components/modal-base'; +import {task} from 'ember-concurrency'; + +export default ModalComponent.extend({ + // Allowed actions + confirm: () => {}, + + actions: { + confirm() { + this.deleteMembersTask.perform(); + } + }, + + deleteMembersTask: task(function* () { + try { + yield this.confirm(); + } finally { + this.send('closeModal'); + } + }).drop() +}); diff --git a/ghost/admin/app/controllers/members.js b/ghost/admin/app/controllers/members.js index d73ae3f05d..3397c839a4 100644 --- a/ghost/admin/app/controllers/members.js +++ b/ghost/admin/app/controllers/members.js @@ -43,6 +43,7 @@ export default class MembersController extends Controller { @tracked modalLabel = null; @tracked isEditing = false; @tracked showLabelModal = false; + @tracked showDeleteMembersModal = false; @tracked _availableLabels = A([]); @@ -210,10 +211,13 @@ export default class MembersController extends Controller { } @action - confirmDeleteMembers() { - let {members} = this; - let count = `${formatNumber(members.length)} ${pluralize(members.length, 'member', {withoutCount: true})}`; - alert(`Once deletion is implemented, you'll see a confirmation for deleting ${count} here`); + toggleDeleteMembersModal() { + this.showDeleteMembersModal = !this.showDeleteMembersModal; + } + + @action + deleteMembers() { + return this.deleteMembersTask.perform(); } // Tasks ------------------------------------------------------------------- @@ -283,6 +287,18 @@ export default class MembersController extends Controller { }); } + @task({drop: true}) + *deleteMembersTask() { + yield timeout(1000); + alert('Bulk deletion is not implemented yet, nothing has been deleted'); + + // reset and reload + this.resetSelection(); + this.reload(); + + return true; + } + // Internal ---------------------------------------------------------------- resetSearch() { @@ -293,4 +309,10 @@ export default class MembersController extends Controller { this.isEditing = false; this.allSelected = false; } + + reload() { + this.membersStats.invalidate(); + this.membersStats.fetch(); + this.fetchMembersTask.perform(); + } } diff --git a/ghost/admin/app/templates/members.hbs b/ghost/admin/app/templates/members.hbs index 979f6034b6..e00c43fd86 100644 --- a/ghost/admin/app/templates/members.hbs +++ b/ghost/admin/app/templates/members.hbs @@ -65,7 +65,7 @@ - @@ -128,6 +128,16 @@ {{outlet}} +{{#if this.showDeleteMembersModal}} + +{{/if}} + {{#if this.showLabelModal}}