diff --git a/resources/assets/js/vues/components/comments/comment-reply.js b/resources/assets/js/vues/components/comments/comment-reply.js
index 83cbdf467..0f65fc237 100644
--- a/resources/assets/js/vues/components/comments/comment-reply.js
+++ b/resources/assets/js/vues/components/comments/comment-reply.js
@@ -1,5 +1,5 @@
const MarkdownIt = require("markdown-it");
-const md = new MarkdownIt({html: true});
+const md = new MarkdownIt({ html: true });
var template = `
-
+
{
- if (!isCommentOpSuccess(resp)) {
- return;
- }
- updateComment(this.comment, resp.data, true);
- }, function (resp) {
- if (isCommentOpSuccess(resp)) {
- this.$events.emit('success', trans('entities.comment_deleted'));
- } else {
- this.$events.emit('error', trans('error.comment_delete'));
- }
- });
- },
- replyComment: function () {
- this.toggleEditor(false);
- },
- editComment: function () {
- this.toggleEditor(true);
- },
- hideComment: function () {
- this.showEditor = false;
- },
- toggleEditor: function (isEdit) {
- this.showEditor = false;
- this.isEdit = isEdit;
- this.isReply = !isEdit;
- this.showEditor = true;
- },
- commentReplied: function (event, comment) {
- this.comments.push(comment);
- this.showEditor = false;
- },
- commentEdited: function (event, comment) {
- this.comment = comment;
- this.showEditor = false;
- },
- commentAdded: function (event, comment) {
- // this is to handle non-parent child relationship
- // we want to make it go up.
- this.$emit('comment-added', event);
- },
- canEditOrDelete: function (prop) {
- if (!this.comment.active) {
- return false;
- }
+ deleteComment: function () {
+ var resp = window.confirm(trans('entities.comment_delete_confirm'));
+ if (!resp) {
+ return;
+ }
+ this.$http.delete(window.baseUrl(`/ajax/comment/${this.comment.id}`)).then(resp => {
+ if (!isCommentOpSuccess(resp)) {
+ this.$events.emit('error', trans('error.comment_delete'));
+ return;
+ }
+ this.$events.emit('success', trans('entities.comment_deleted'));
+ this.comment = resp.data.comment;
+ }).catch(err => {
+ this.$events.emit('error', trans('error.comment_delete'));
+ });
+ },
+ replyComment: function () {
+ this.toggleEditor(false);
+ },
+ editComment: function () {
+ this.toggleEditor(true);
+ },
+ hideComment: function () {
+ this.showEditor = false;
+ },
+ toggleEditor: function (isEdit) {
+ this.showEditor = false;
+ this.isEdit = isEdit;
+ this.isReply = !isEdit;
+ this.showEditor = true;
+ },
+ commentReplied: function (event, comment) {
+ this.comments.push(comment);
+ this.showEditor = false;
+ },
+ commentEdited: function (event, comment) {
+ this.comment = comment;
+ this.showEditor = false;
+ },
+ commentAdded: function (event, comment) {
+ // this is to handle non-parent child relationship
+ // we want to make it go up.
+ this.$emit('comment-added', event);
+ },
+ canEditOrDelete: function (prop) {
+ if (!this.comment.active) {
+ return false;
+ }
- if (!this.permissions) {
- return false;
- }
+ if (!this.permissions) {
+ return false;
+ }
- let propAll = 'comment_' + prop + '_all';
- let propOwn = 'comment_' + prop + '_own';
+ let propAll = 'comment_' + prop + '_all';
+ let propOwn = 'comment_' + prop + '_own';
- if (this.permissions[propAll]) {
- return true;
- }
+ if (this.permissions[propAll]) {
+ return true;
+ }
- if (this.permissions[propOwn] && this.comment.created_by.id === this.currentUserId) {
- return true;
- }
+ if (this.permissions[propOwn] && this.comment.created_by.id === this.currentUserId) {
+ return true;
+ }
- return false;
- },
- canComment: function () {
- if (!this.permissions) {
- return false;
+ return false;
+ },
+ canComment: function () {
+ if (!this.permissions) {
+ return false;
+ }
+ return this.permissions.comment_create === true;
}
- return this.permissions.comment_create === true;
- }
};
const computed = {
- commentId: {
- get: function () {
- return `comment-${this.comment.page_id}-${this.comment.id}`;
- },
- set: function () {
- this.commentHref = `#?cm=${this.commentId}`
+ commentId: {
+ get: function () {
+ return `comment-${this.comment.page_id}-${this.comment.id}`;
+ },
+ set: function () {
+ this.commentHref = `#?cm=${this.commentId}`
+ }
}
- }
};
-function mounted () {
- if (this.comment.sub_comments && this.comment.sub_comments.length) {
- // set this so that we can render the next set of sub comments.
- this.comments = this.comment.sub_comments;
- }
+function mounted() {
+ if (this.comment.sub_comments && this.comment.sub_comments.length) {
+ // set this so that we can render the next set of sub comments.
+ this.comments = this.comment.sub_comments;
+ }
}
function isCommentOpSuccess(resp) {
- if (resp && resp.data && resp.data.status === 'success') {
- return true;
- }
- return false;
-}
-
-function updateComment(comment, resp, isDelete) {
- comment.text = resp.comment.text;
- comment.updated = resp.comment.updated;
- comment.updated_by = resp.comment.updated_by;
- comment.active = resp.comment.active;
- if (isDelete && !resp.comment.active) {
- comment.html = trans('entities.comment_deleted');
- } else {
- comment.html = resp.comment.html;
- }
+ if (resp && resp.data && resp.data.status === 'success') {
+ return true;
+ }
+ return false;
}
module.exports = {
- name: 'comment',
- template, data, props, methods, computed, mounted, components: {
- commentReply
-}};
+ name: 'comment',
+ template, data, props, methods, computed, mounted, components: {
+ commentReply
+ }
+};
diff --git a/resources/assets/js/vues/page-comments.js b/resources/assets/js/vues/page-comments.js
index d3ce3006d..76d11ac6c 100644
--- a/resources/assets/js/vues/page-comments.js
+++ b/resources/assets/js/vues/page-comments.js
@@ -2,107 +2,98 @@ const comment = require('./components/comments/comment');
const commentReply = require('./components/comments/comment-reply');
let data = {
- totalCommentsStr: trans('entities.comments_loading'),
- comments: [],
- permissions: null,
- currentUserId: null,
- trans: trans,
- commentCount: 0
+ totalCommentsStr: trans('entities.comments_loading'),
+ comments: [],
+ permissions: null,
+ currentUserId: null,
+ trans: trans,
+ commentCount: 0
};
let methods = {
- commentAdded: function () {
- ++this.totalComments;
- }
+ commentAdded: function () {
+ ++this.totalComments;
+ }
}
let computed = {
- totalComments: {
- get: function () {
- return this.commentCount;
+ totalComments: {
+ get: function () {
+ return this.commentCount;
+ },
+ set: function (value) {
+ this.commentCount = value;
+ if (value === 0) {
+ this.totalCommentsStr = trans('entities.no_comments');
+ } else if (value === 1) {
+ this.totalCommentsStr = trans('entities.one_comment');
+ } else {
+ this.totalCommentsStr = trans('entities.x_comments', {
+ numComments: value
+ });
+ }
+ }
},
- set: function (value) {
- this.commentCount = value;
- if (value === 0) {
- this.totalCommentsStr = trans('entities.no_comments');
- } else if (value === 1) {
- this.totalCommentsStr = trans('entities.one_comment');
- } else {
- this.totalCommentsStr = trans('entities.x_comments', {
- numComments: value
- });
- }
+ canComment: function () {
+ if (!this.permissions) {
+ return false;
+ }
+ return this.permissions.comment_create === true;
}
- },
- canComment: function () {
- if (!this.permissions) {
- return false;
- }
- return this.permissions.comment_create === true;
- }
}
function mounted() {
- this.pageId = Number(this.$el.getAttribute('page-id'));
- // let linkedCommentId = this.$route.query.cm;
- let linkedCommentId = null;
- this.$http.get(window.baseUrl(`/ajax/page/${this.pageId}/comments/`)).then(resp => {
- if (!isCommentOpSuccess(resp)) {
- // just show that no comments are available.
- vm.totalComments = 0;
- return;
- }
- this.comments = resp.data.comments;
- this.totalComments = +resp.data.total;
- this.permissions = resp.data.permissions;
- this.currentUserId = resp.data.user_id;
- if (!linkedCommentId) {
- return;
- }
- $timeout(function() {
- // wait for the UI to render.
+ this.pageId = Number(this.$el.getAttribute('page-id'));
+ // let linkedCommentId = this.$route.query.cm;
+ let linkedCommentId = null;
+ this.$http.get(window.baseUrl(`/ajax/page/${this.pageId}/comments/`)).then(resp => {
+ if (!isCommentOpSuccess(resp)) {
+ // just show that no comments are available.
+ vm.totalComments = 0;
+ this.$events.emit('error', getErrorMsg(resp));
+ return;
+ }
+ this.comments = resp.data.comments;
+ this.totalComments = +resp.data.total;
+ this.permissions = resp.data.permissions;
+ this.currentUserId = resp.data.user_id;
+ if (!linkedCommentId) {
+ return;
+ }
focusLinkedComment(linkedCommentId);
+ }).catch(err => {
+ this.$events.emit('error', 'errors.comment_list');
});
- }, checkError('errors.comment_list'));
}
function isCommentOpSuccess(resp) {
- if (resp && resp.data && resp.data.status === 'success') {
- return true;
- }
- return false;
+ if (resp && resp.data && resp.data.status === 'success') {
+ return true;
+ }
+ return false;
}
-function checkError(msgKey) {
- return function(response) {
- let msg = null;
- if (isCommentOpSuccess(response)) {
- // all good
- return;
- } else if (response.data) {
- msg = response.data.message;
+function getErrorMsg(response) {
+ if (response.data) {
+ return response.data.message;
} else {
- msg = trans(msgKey);
+ return trans('errors.comment_add');
}
- if (msg) {
- events.emit('success', msg);
- }
- }
}
-function created () {
- this.$on('new-comment', function (event, comment) {
- this.comments.push(comment);
- })
+function created() {
+ this.$on('new-comment', function (event, comment) {
+ this.comments.push(comment);
+ })
}
function beforeDestroy() {
- this.$off('new-comment');
+ this.$off('new-comment');
}
module.exports = {
- data, methods, mounted, computed, components : {
- comment, commentReply
- },
- created, beforeDestroy
+ data, methods, mounted, computed, components: {
+ comment, commentReply
+ },
+ created, beforeDestroy
};
\ No newline at end of file
diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php
index 71bcd1f9a..09158caac 100644
--- a/resources/lang/en/errors.php
+++ b/resources/lang/en/errors.php
@@ -63,7 +63,7 @@ return [
// Comments
'comment_list' => 'An error occurred while fetching the comments.',
'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
- 'comment_add' => 'An error occurred while adding the comment.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
'comment_delete' => 'An error occurred while deleting the comment.',
'empty_comment' => 'Cannot add an empty comment.',