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 @@
+
-
@@ -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}}}
},