diff --git a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php index b05da5626..c527010ca 100644 --- a/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php +++ b/src/Bundle/ChillPersonBundle/DependencyInjection/ChillPersonExtension.php @@ -415,6 +415,22 @@ class ChillPersonExtension extends Extension implements PrependExtensionInterfac ], ], ], + [ + 'class' => \Chill\PersonBundle\Entity\AccompanyingPeriod\Comment::class, + 'name' => 'accompanying_period_comment', + 'base_path' => '/api/1.0/person/accompanying-period/comment', + 'base_role' => 'ROLE_USER', + 'actions' => [ + '_entity' => [ + 'methods' => [ + Request::METHOD_GET => false, + Request::METHOD_PATCH => true, + Request::METHOD_HEAD => false, + Request::METHOD_DELETE => false, + ], + ], + ], + ], [ 'class' => \Chill\PersonBundle\Entity\AccompanyingPeriod\Resource::class, 'name' => 'accompanying_period_resource', diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue index a852d71a0..8b3dee5c3 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue @@ -17,6 +17,7 @@ v-bind:placeholder="$t('comment.content')" :editor="editor" v-model="content" + @input="onContentChange" tag-name="textarea"> @@ -82,8 +83,34 @@ export default { } }, methods: { - submitform() { - this.$store.dispatch('postFirstComment', this.formdata) + onContentChange() { + console.log('content changed'); + console.log(this.pinnedComment) + if (this.pinnedComment) { + let body = this.formdata; + Object.assign(body, {id: this.pinnedComment.id}) + this.$store.dispatch('updatePinnedComment', body) + .catch(({name, violations}) => { + if (name === 'ValidationException' || name === 'AccessException') { + violations.forEach((violation) => this.$toast.open({message: violation})); + } else { + this.$toast.open({message: 'An error occurred'}) + } + }); + } else { + this.$store.dispatch('addPinnedComment', this.formdata) + .catch(({name, violations}) => { + if (name === 'ValidationException' || name === 'AccessException') { + violations.forEach((violation) => this.$toast.open({message: violation})); + } else { + this.$toast.open({message: 'An error occurred'}) + } + }); + } + }, + submitform() { //TODO deprecated, to remove + console.log(this.formdata) + this.$store.dispatch('addPinnedComment', this.formdata) .catch(({name, violations}) => { if (name === 'ValidationException' || name === 'AccessException') { violations.forEach((violation) => this.$toast.open({message: violation})); @@ -91,6 +118,14 @@ export default { this.$toast.open({message: 'An error occurred'}) } }); + // this.$store.dispatch('postFirstComment', this.formdata) + // .catch(({name, violations}) => { + // if (name === 'ValidationException' || name === 'AccessException') { + // violations.forEach((violation) => this.$toast.open({message: violation})); + // } else { + // this.$toast.open({message: 'An error occurred'}) + // } + // }); }, removeComment() { this.$store.dispatch('postFirstComment', {}) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js index 849a77289..f27fcfb7f 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/store/index.js @@ -348,7 +348,7 @@ let initPromise = (root) => Promise.all([getScopesPromise(root), accompanyingCou return makeFetch('DELETE', url, body) .then((response) => { - commit('removePinnedComment'); + commit('removePinnedComment'); }) .catch((error) => { commit('catchError', error); @@ -368,6 +368,21 @@ let initPromise = (root) => Promise.all([getScopesPromise(root), accompanyingCou throw error; }) }, + updatePinnedComment({ commit }, payload) { + console.log(payload) + const url = `/api/1.0/person/accompanying-period/comment/${payload.id}.json`; + + return makeFetch('PATCH', url, payload) + .then((response) => { + console.log(response) + commit('addPinnedComment', response); + }) + .catch((error) => { + commit('catchError', error); + throw error; + }) + + }, /** * Add/remove/display anonymous requestor */