diff --git a/webapp/components/Comment.vue b/webapp/components/Comment.vue
index 4796dd783..a20d49cf7 100644
--- a/webapp/components/Comment.vue
+++ b/webapp/components/Comment.vue
@@ -9,12 +9,14 @@
+
@@ -47,6 +49,31 @@ export default {
},
dateTime: { type: [Date, String], default: null },
},
+ data() {
+ return {
+ menuModalsData: {
+ delete: {
+ titleIdent: 'delete.comment.title',
+ messageIdent: 'delete.comment.message',
+ messageParams: {
+ name: this.$filters.truncate(this.comment.contentExcerpt, 30),
+ },
+ buttons: {
+ confirm: {
+ icon: 'trash',
+ textIdent: 'delete.submit',
+ callback: this.deleteCommentCallback,
+ },
+ cancel: {
+ icon: 'close',
+ textIdent: 'delete.cancel',
+ callback: () => {},
+ },
+ },
+ },
+ },
+ }
+ },
computed: {
...mapGetters({
user: 'auth/user',
diff --git a/webapp/components/ContentMenu.vue b/webapp/components/ContentMenu.vue
index 6b83b0bb9..935526867 100644
--- a/webapp/components/ContentMenu.vue
+++ b/webapp/components/ContentMenu.vue
@@ -43,7 +43,13 @@ export default {
return value.match(/(contribution|comment|organization|user)/)
},
},
- callbacks: { type: Object, required: true },
+ modalsData: {
+ type: Object,
+ required: false,
+ // default: () => {
+ // return {}
+ // },
+ },
},
computed: {
routes() {
@@ -145,7 +151,7 @@ export default {
data: {
type: this.resourceType,
resource: this.resource,
- callbacks: this.callbacks,
+ modalsData: this.modalsData,
},
})
},
diff --git a/webapp/components/Modal.vue b/webapp/components/Modal.vue
index 317b5007a..946e4de0e 100644
--- a/webapp/components/Modal.vue
+++ b/webapp/components/Modal.vue
@@ -6,7 +6,6 @@
:id="data.resource.id"
:type="data.type"
:name="name"
- :callbacks="data.callbacks"
@close="close"
/>
@@ -63,7 +61,7 @@ export default {
switch (this.data.type) {
case 'user':
return name
- case 'contribution':
+ case 'contribution': // REFACTORING: In DeleteModal – Already replaced "title" by "this.menuModalsData.delete.messageParams".
return title
case 'comment':
return author && author.name
diff --git a/webapp/components/Modal/DeleteModal.vue b/webapp/components/Modal/DeleteModal.vue
index 63703b8c6..280407f5d 100644
--- a/webapp/components/Modal/DeleteModal.vue
+++ b/webapp/components/Modal/DeleteModal.vue
@@ -10,10 +10,18 @@
- {{ $t('delete.cancel') }}
+
+ {{ $t(modalData.buttons.cancel.textIdent) }}
+
-
- {{ $t('delete.submit') }}
+
+ {{ $t(modalData.buttons.confirm.textIdent) }}
@@ -30,7 +38,7 @@ export default {
props: {
name: { type: String, default: '' },
type: { type: String, required: true },
- callbacks: { type: Object, required: true },
+ modalData: { type: Object, required: true },
id: { type: String, required: true },
},
data() {
@@ -42,18 +50,15 @@ export default {
},
computed: {
title() {
- return this.$t(`delete.${this.type}.title`)
+ return this.$t(this.modalData.titleIdent)
},
message() {
- const name = this.$filters.truncate(this.name, 30)
- return this.$t(`delete.${this.type}.message`, { name })
+ return this.$t(this.modalData.messageIdent, this.modalData.messageParams)
},
},
methods: {
async cancel() {
- if (this.callbacks.cancel) {
- await this.callbacks.cancel()
- }
+ await this.modalData.buttons.cancel.callback()
this.isOpen = false
setTimeout(() => {
this.$emit('close')
@@ -62,9 +67,7 @@ export default {
async confirm() {
this.loading = true
try {
- if (this.callbacks.confirm) {
- await this.callbacks.confirm()
- }
+ await this.modalData.buttons.confirm.callback()
this.success = true
setTimeout(() => {
this.isOpen = false
diff --git a/webapp/components/Modal/DisableModal.vue b/webapp/components/Modal/DisableModal.vue
index 988ecc8af..df07ca924 100644
--- a/webapp/components/Modal/DisableModal.vue
+++ b/webapp/components/Modal/DisableModal.vue
@@ -21,7 +21,6 @@ export default {
props: {
name: { type: String, default: '' },
type: { type: String, required: true },
- callbacks: { type: Object, required: true },
id: { type: String, required: true },
},
data() {
@@ -42,9 +41,8 @@ export default {
},
methods: {
async cancel() {
- if (this.callbacks.cancel) {
- await this.callbacks.cancel()
- }
+ // TODO: Use the "modalData" structure introduced in "DeleteModal" and refactor this here. Be aware that all the Jest tests have to be refactored as well !!!
+ // await this.modalData.buttons.cancel.callback()
this.isOpen = false
setTimeout(() => {
this.$emit('close')
@@ -52,9 +50,8 @@ export default {
},
async confirm() {
try {
- if (this.callbacks.confirm) {
- await this.callbacks.confirm()
- }
+ // TODO: Use the "modalData" structure introduced in "DeleteModal" and refactor this here. Be aware that all the Jest tests have to be refactored as well !!!
+ // await this.modalData.buttons.confirm.callback()
await this.$apollo.mutate({
mutation: gql`
mutation($id: ID!) {
diff --git a/webapp/components/Modal/ReportModal.vue b/webapp/components/Modal/ReportModal.vue
index f556c9e6e..882ed024a 100644
--- a/webapp/components/Modal/ReportModal.vue
+++ b/webapp/components/Modal/ReportModal.vue
@@ -10,9 +10,7 @@
-
- {{ $t('report.cancel') }}
-
+ {{ $t('report.cancel') }}
{
this.$emit('close')
@@ -70,10 +66,9 @@ export default {
},
async confirm() {
this.loading = true
+ // TODO: Use the "modalData" structure introduced in "DeleteModal" and refactor this here. Be aware that all the Jest tests have to be refactored as well !!!
+ // await this.modalData.buttons.confirm.callback()
try {
- if (this.callbacks.confirm) {
- await this.callbacks.confirm()
- }
await this.$apollo.mutate({
mutation: gql`
mutation($id: ID!) {
diff --git a/webapp/components/PostCard/index.vue b/webapp/components/PostCard/index.vue
index d8172cb77..46093c08a 100644
--- a/webapp/components/PostCard/index.vue
+++ b/webapp/components/PostCard/index.vue
@@ -18,9 +18,7 @@
-
- {{ post.title }}
-
+ {{ post.title }}
@@ -55,7 +53,7 @@
diff --git a/webapp/components/ReleaseModal/ReleaseModal.vue b/webapp/components/ReleaseModal/ReleaseModal.vue
index f414d4328..c796ef1c7 100644
--- a/webapp/components/ReleaseModal/ReleaseModal.vue
+++ b/webapp/components/ReleaseModal/ReleaseModal.vue
@@ -40,6 +40,8 @@ export default {
},
methods: {
cancel() {
+ // TODO: Use the "modalData" structure introduced in "DeleteModal" and refactor this here. Be aware that all the Jest tests have to be refactored as well !!!
+ // await this.modalData.buttons.cancel.callback()
this.isOpen = false
setTimeout(() => {
this.$emit('close')
@@ -47,6 +49,8 @@ export default {
},
async confirm() {
try {
+ // TODO: Use the "modalData" structure introduced in "DeleteModal" and refactor this here. Be aware that all the Jest tests have to be refactored as well !!!
+ // await this.modalData.buttons.confirm.callback()
await this.$apollo.mutate({
mutation: gql`
mutation($id: ID!) {
diff --git a/webapp/locales/de.json b/webapp/locales/de.json
index a790e6461..3915387d5 100644
--- a/webapp/locales/de.json
+++ b/webapp/locales/de.json
@@ -235,7 +235,7 @@
"comment": {
"title": "Lösche Kommentar",
"type": "Comment",
- "message": "Bist du sicher, dass du den Kommentar von \"{name}\" löschen möchtest?",
+ "message": "Bist du sicher, dass du den Kommentar \"{name}\" löschen möchtest?",
"success": "Kommentar erfolgreich gelöscht!"
}
},
diff --git a/webapp/locales/en.json b/webapp/locales/en.json
index 289928f92..1a47045d1 100644
--- a/webapp/locales/en.json
+++ b/webapp/locales/en.json
@@ -235,7 +235,7 @@
"comment": {
"title": "Delete Comment",
"type": "Comment",
- "message": "Do you really want to delete the comment from \"{name}\"?",
+ "message": "Do you really want to delete the comment \"{name}\"?",
"success": "Comment successfully deleted!"
}
},
diff --git a/webapp/mixins/PostMutationHelpers.js b/webapp/mixins/PostMutationHelpers.js
index 2e7a91e4d..68e4c73b8 100644
--- a/webapp/mixins/PostMutationHelpers.js
+++ b/webapp/mixins/PostMutationHelpers.js
@@ -1,9 +1,34 @@
import gql from 'graphql-tag'
export default {
+ data() {
+ return {
+ menuModalsData: {
+ delete: {
+ titleIdent: 'delete.contribution.title',
+ messageIdent: 'delete.contribution.message',
+ messageParams: {
+ // "this.post" is not defined at the beginning …
+ name: this.post ? this.$filters.truncate(this.post.title, 30) : '',
+ },
+ buttons: {
+ confirm: {
+ icon: 'trash',
+ textIdent: 'delete.submit',
+ callback: this.deletePostCallback,
+ },
+ cancel: {
+ icon: 'close',
+ textIdent: 'delete.cancel',
+ callback: () => {},
+ },
+ },
+ },
+ },
+ }
+ },
methods: {
async deletePostCallback(postDisplayType = 'list') {
- // console.log('inside "deletePostCallback" !!! ', this.post)
try {
var gqlMutation = gql`
mutation($id: ID!) {
@@ -19,15 +44,12 @@ export default {
},
})
this.$toast.success(this.$t('delete.contribution.success'))
- // console.log('called "this.$t" !!!')
switch (postDisplayType) {
case 'list':
this.$emit('deletePost')
- // console.log('emitted "deletePost" !!!')
break
default:
- // case 'page'
- // console.log('called "this.$router.history.push" !!!')
+ // case 'page':
this.$router.history.push('/') // Single page type: Redirect to index (main) page
break
}
diff --git a/webapp/pages/post/_id/_slug/index.vue b/webapp/pages/post/_id/_slug/index.vue
index 81f05c36c..4d703ff7e 100644
--- a/webapp/pages/post/_id/_slug/index.vue
+++ b/webapp/pages/post/_id/_slug/index.vue
@@ -7,19 +7,18 @@
>
+
-
- {{ post.title }}
-
+ {{ post.title }}
@@ -215,6 +214,11 @@ export default {
isAuthor(id) {
return this.$store.getters['auth/user'].id === id
},
+ menuModalsDataPage() {
+ const locMenuModalsData = this.menuModalsData
+ locMenuModalsData.delete.buttons.confirm.callback = () => this.deletePostCallback('page')
+ return locMenuModalsData
+ },
},
}
diff --git a/webapp/pages/profile/_id/_slug.vue b/webapp/pages/profile/_id/_slug.vue
index c92cdae52..49d76f252 100644
--- a/webapp/pages/profile/_id/_slug.vue
+++ b/webapp/pages/profile/_id/_slug.vue
@@ -12,13 +12,12 @@
>
-
+
@@ -241,7 +240,6 @@ import HcEmpty from '~/components/Empty.vue'
import ContentMenu from '~/components/ContentMenu'
import HcUpload from '~/components/Upload'
import HcAvatar from '~/components/Avatar/Avatar.vue'
-import PostMutationHelpers from '~/mixins/PostMutationHelpers'
export default {
components: {
@@ -256,7 +254,6 @@ export default {
ContentMenu,
HcUpload,
},
- mixins: [PostMutationHelpers],
transition: {
name: 'slide-up',
mode: 'out-in',
@@ -267,35 +264,6 @@ export default {
voted: false,
page: 1,
pageSize: 6,
- modalsData: {
- delete: {
- titel: () => {
- this.$t('delete.contribution.title')
- },
- message: () => {
- const name = this.$filters.truncate(this.name, 30)
- return this.$t(`delete.contribution.message`, { name })
- },
- buttons: {
- confirm: {
- icon: 'trash',
- text: () => {
- this.$t('delete.submit')
- },
- callback: this.deletePostCallback,
- },
- cancel: {
- icon: 'close',
- text: () => {
- this.$t('delete.cancel')
- },
- callback: () => {},
- },
- },
- },
- disableCallbacks: { confirmCallback: () => {}, cancelCallback: () => {} },
- reportCallbacks: { confirmCallback: () => {}, cancelCallback: () => {} },
- },
}
},
computed: {