- // Controller used to reply to and add new comments
- ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
- const MarkdownIt = require("markdown-it");
- const md = new MarkdownIt({html: true});
- let vm = this;
-
- vm.saveComment = function () {
- let pageId = $scope.comment.pageId || $scope.pageId;
- let comment = $scope.comment.text;
- if (!comment) {
- return events.emit('warning', trans('errors.empty_comment'));
- }
- let commentHTML = md.render($scope.comment.text);
- let serviceUrl = `/ajax/page/${pageId}/comment/`;
- let httpMethod = 'post';
- let reqObj = {
- text: comment,
- html: commentHTML
- };
-
- if ($scope.isEdit === true) {
- // this will be set when editing the comment.
- serviceUrl = `/ajax/page/${pageId}/comment/${$scope.comment.id}`;
- httpMethod = 'put';
- } else if ($scope.isReply === true) {
- // if its reply, get the parent comment id
- reqObj.parent_id = $scope.parentId;
- }
- $http[httpMethod](window.baseUrl(serviceUrl), reqObj).then(resp => {
- if (!isCommentOpSuccess(resp)) {
- return;
- }
- // hide the comments first, and then retrigger the refresh
- if ($scope.isEdit) {
- updateComment($scope.comment, resp.data);
- $scope.$emit('evt.comment-success', $scope.comment.id);
- } else {
- $scope.comment.text = '';
- if ($scope.isReply === true && $scope.parent.sub_comments) {
- $scope.parent.sub_comments.push(resp.data.comment);
- } else {
- $scope.$emit('evt.new-comment', resp.data.comment);
- }
- $scope.$emit('evt.comment-success', null, true);
- }
- $scope.comment.is_hidden = true;
- $timeout(function() {
- $scope.comment.is_hidden = false;
- });
-
- events.emit('success', trans(resp.data.message));
-
- }, checkError);
-
- };
-
- function checkError(response) {
- let msg = null;
- if (isCommentOpSuccess(response)) {
- // all good
- return;
- } else if (response.data) {
- msg = response.data.message;
- } else {
- msg = trans('errors.comment_add');
- }
- if (msg) {
- events.emit('success', msg);
- }
- }
- }]);
-
- // Controller used to delete comments
- ngApp.controller('CommentDeleteController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
- let vm = this;
-
- vm.delete = function(comment) {
- $http.delete(window.baseUrl(`/ajax/comment/${comment.id}`)).then(resp => {
- if (!isCommentOpSuccess(resp)) {
- return;
- }
- updateComment(comment, resp.data, $timeout, true);
- }, function (resp) {
- if (isCommentOpSuccess(resp)) {
- events.emit('success', trans('entities.comment_deleted'));
- } else {
- events.emit('error', trans('error.comment_delete'));
- }
- });
- };
- }]);
-