$this->checkOwnablePermission('page-view', $page);
$comments = $this->commentRepo->getPageComments($pageId);
- return response()->json(['success' => true, 'comments'=> $comments['comments'], 'total' => $comments['total']]);
+ return response()->json(['success' => true, 'comments'=> $comments['comments'],
+ 'total' => $comments['total'], 'permissions' => [
+ 'comment_create' => $this->currentUser->can('comment-create-all'),
+ 'comment_update_own' => $this->currentUser->can('comment-update-own'),
+ 'comment_update_all' => $this->currentUser->can('comment-update-all'),
+ 'comment_delete_all' => $this->currentUser->can('comment-delete-all'),
+ 'comment_delete_own' => $this->currentUser->can('comment-delete-own'),
+ ], 'user_id' => $this->currentUser->id]);
}
}
$pageContent = $this->entityRepo->renderPage($page);
$sidebarTree = $this->entityRepo->getBookChildren($page->book);
$pageNav = $this->entityRepo->getPageNav($pageContent);
-
+
Views::add($page);
$this->setPageTitle($page->getShortName());
return view('pages/show', [
$page->fill($revision->toArray());
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
-
+
return view('pages/revision', [
'page' => $page,
'book' => $page->book,
return redirect($page->getUrl());
}
- public function getLastXComments($pageId)
- {
- // $this->checkOwnablePermission('page-view', $page);
- }
-
}
$comments = $this->comment->getAllPageComments($pageId);
$index = [];
$totalComments = count($comments);
+ $finalCommentList = [];
+
// normalizing the response.
- foreach($comments as &$comment) {
- $comment = $this->normalizeComment($comment);
+ for ($i = 0; $i < count($comments); ++$i) {
+ $comment = $this->normalizeComment($comments[$i]);
$parentId = $comment->parent_id;
if (empty($parentId)) {
+ $finalCommentList[] = $comment;
$index[$comment->id] = $comment;
continue;
}
$index[$comment->id] = $comment;
}
return [
- 'comments' => $comments,
+ 'comments' => $finalCommentList,
'total' => $totalComments
];
}
// keep track of comment levels
$scope.level = 1;
vm.totalCommentsStr = 'Loading...';
+ vm.permissions = {};
$scope.$on('evt.new-comment', function (event, comment) {
// add the comment to the comment list.
event.preventDefault();
});
+ vm.canEdit = function (comment) {
+ if (vm.permissions.comment_update_all) {
+ return true;
+ }
+
+ if (vm.permissions.comment_update_own && comment.created_by.id === vm.current_user_id) {
+ return true;
+ }
+ return false;
+ }
+
+ vm.canComment = function () {
+ return vm.permissions.comment_create;
+ }
+
$timeout(function() {
$http.get(window.baseUrl(`/ajax/page/${$scope.pageId}/comments/`)).then(resp => {
if (!resp.data || resp.data.success !== true) {
}
vm.comments = resp.data.comments;
vm.totalComments = resp.data.total;
+ vm.permissions = resp.data.permissions;
+ vm.current_user_id = resp.data.user_id;
+
// TODO : Fetch message from translate.
if (vm.totalComments === 0) {
vm.totalCommentsStr = 'No comments found.';
}
function removeDupe() {
- let $existingElement = $document.find('.comments-list comment-reply');
+ let $existingElement = $document.find('.comments-list comment-reply, .comments-list comment-edit');
if (!$existingElement.length) {
return;
}
</div>
</div>
- @include('comments/comment-reply', ['pageId' => $pageId])
+ <div ng-if="::vm.canComment()">
+ @include('comments/comment-reply', ['pageId' => $pageId])
+ </div>
</div>
\ No newline at end of file
</div>
<div class="comment-actions">
<ul>
- <li ng-if="level < 3"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
- <li><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment">Edit</a></li>
+ <li ng-if="::(level < 3 && vm.canComment())"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" is-reply="true">Reply</a></li>
+ <li ng-if="::vm.canEdit(comment)"><a href="#" comment-reply-link no-comment-reply-dupe="true" comment="comment" >Edit</a></li>
<li>Created <a title="@{{::comment.created.day_time_str}}" href="#comment-@{{::comment.id}}-@{{::pageId}}">@{{::comment.created.diff}}</a></li>
<li ng-if="comment.updated"><span title="@{{comment.updated.day_time_str}}">Updated @{{comment.updated.diff}} by
<a href="@{{comment.updated_by.profile_url}}">@{{comment.updated_by.name}}</a></span></li>