const commentReply = require('./comment-reply'); const template = `
user avatar
{{ trans('entities.comment_deleted') }}
`; const props = ['initialComment', 'index', 'level', 'permissions', 'currentUserId']; function data() { return { commentHref: null, trans: trans, comments: [], showEditor: false, comment: this.initialComment, nextLevel: this.level + 1 }; } const methods = { 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; } let propAll = 'comment_' + prop + '_all'; let propOwn = 'comment_' + prop + '_own'; if (this.permissions[propAll]) { 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 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}` } } }; 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; } module.exports = { name: 'comment', template, data, props, methods, computed, mounted, components: { commentReply } };