diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue index fa2145823..32dcea4cc 100644 --- a/front/src/components/manage/moderation/ReportCard.vue +++ b/front/src/components/manage/moderation/ReportCard.vue @@ -131,7 +131,7 @@ {{ configs[target.type].label }} - + Owner @@ -164,10 +164,6 @@ -

- Actions - -

@@ -178,31 +174,44 @@
+
+

+ Actions +

+
+ + + +
+
-
- - - - Delete -

Delete this report?

-
-

The report will be completely removed, this action is irreversible.

-
-

Delete

-
@@ -296,21 +305,37 @@ export default { return this.obj.target_state._target } }, + actions () { + if (!this.target) { + return [] + } + let self = this + let actions = [] + let typeConfig = this.configs[this.target.type] + if (typeConfig.getDeleteUrl) { + let deleteUrl = typeConfig.getDeleteUrl(this.target) + actions.push({ + label: this.$pgettext('Content/Moderation/Button/Verb', 'Delete reported object'), + modalHeader: this.$pgettext('Content/Moderation/Popup/Header', 'Delete reported object?'), + modalContent: this.$pgettext('Content/Moderation/Popup,Paragraph', 'This will delete the object associated with this report. This action is irreversible.'), + modalConfirmLabel: this.$pgettext('*/*/*/Verb', 'Delete'), + icon: 'x', + iconColor: 'red', + dangerous: true, + handler: () => { + axios.delete(deleteUrl).then((response) => { + console.log('Target deleted') + self.obj.target = null + }, error => { + console.log('Error while deleting target') + }) + } + }) + } + return actions + } }, methods: { - remove () { - let self = this - this.isLoading = true - axios.delete(`manage/moderation/reports/${this.obj.uuid}/`).then((response) => { - self.$emit('deleted') - self.isLoading = false - if (!self.obj.is_handled) { - self.$store.commit('ui/incrementNotifications', {count: -1, type: 'pendingReviewReports'}) - } - }, error => { - self.isLoading = false - }) - }, update (payload) { let url = `manage/moderation/reports/${this.obj.uuid}/` let self = this @@ -344,7 +369,7 @@ export default { this.obj.notes = this.obj.notes.filter((note) => { return note.uuid != uuid }) - } + }, } } diff --git a/front/src/entities.js b/front/src/entities.js index 48d39df77..18c05b248 100644 --- a/front/src/entities.js +++ b/front/src/entities.js @@ -11,6 +11,9 @@ export default { artist: { label: this.$pgettext('*/*/*', 'Artist'), icon: 'users', + getDeleteUrl: (obj) => { + return `manage/library/artists/${obj.id}/` + }, urls: { getAdminDetail: (obj) => { return {name: 'manage.library.artists.detail', params: {id: obj.id}}} }, @@ -42,6 +45,9 @@ export default { album: { label: this.$pgettext('*/*/*', 'Album'), icon: 'play', + getDeleteUrl: (obj) => { + return `manage/library/albums/${obj.id}/` + }, urls: { getAdminDetail: (obj) => { return {name: 'manage.library.albums.detail', params: {id: obj.id}}} }, @@ -79,6 +85,9 @@ export default { track: { label: this.$pgettext('*/*/*', 'Track'), icon: 'music', + getDeleteUrl: (obj) => { + return `manage/library/tracks/${obj.id}/` + }, urls: { getAdminDetail: (obj) => { return {name: 'manage.library.tracks.detail', params: {id: obj.id}}} }, @@ -119,6 +128,9 @@ export default { library: { label: this.$pgettext('*/*/*', 'Library'), icon: 'book', + getDeleteUrl: (obj) => { + return `manage/library/libraries/${obj.uuid}/` + }, urls: { getAdminDetail: (obj) => { return {name: 'manage.library.libraries.detail', params: {id: obj.uuid}}} },