mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-08-07 23:03:00 +03:00
Made some changes to the comment system
Changed to be rendered server side along with page content. Changed deletion to fully delete comments from the database. Added 'local_id' to comments for referencing. Updated reply system to be non-nested (Incomplete) Made database comment format entity-agnostic to be more future proof. Updated designs of comment sections.
This commit is contained in:
50
resources/views/comments/comment.blade.php
Normal file
50
resources/views/comments/comment.blade.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<div class="comment-box" comment="{{ $comment->id }}" id="comment{{$comment->local_id}}">
|
||||
<div class="header">
|
||||
|
||||
<div class="float right actions">
|
||||
@if(userCan('comment-update', $comment))
|
||||
<button type="button" class="text-button" action="edit" title="{{ trans('common.edit') }}"><i class="zmdi zmdi-edit"></i></button>
|
||||
@endif
|
||||
@if(userCan('comment-create-all'))
|
||||
<button type="button" class="text-button" action="reply" title="{{ trans('common.reply') }}"><i class="zmdi zmdi-mail-reply-all"></i></button>
|
||||
@endif
|
||||
@if(userCan('comment-delete', $comment))
|
||||
<button type="button" class="text-button" action="delete" title="{{ trans('common.delete') }}"><i class="zmdi zmdi-delete"></i></button>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<a href="#comment{{$comment->local_id}}" class="text-muted">#{{$comment->local_id}}</a>
|
||||
|
||||
<img width="50" src="{{ $comment->createdBy->getAvatar(50) }}" class="avatar" alt="{{ $comment->createdBy->name }}">
|
||||
|
||||
<a href="{{ $comment->createdBy->getProfileUrl() }}">{{ $comment->createdBy->name }}</a>
|
||||
{{--TODO - Account for deleted user--}}
|
||||
<span title="{{ $comment->created_at }}">
|
||||
{{ trans('entities.comment_created', ['createDiff' => $comment->created]) }}
|
||||
</span>
|
||||
@if($comment->isUpdated())
|
||||
<span title="{{ $comment->updated_at }}">
|
||||
•
|
||||
{{ trans('entities.comment_updated', ['updateDiff' => $comment->updated, 'username' => $comment->updatedBy->name]) }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<div comment-content class="content">
|
||||
{!! $comment->html !!}
|
||||
</div>
|
||||
|
||||
@if(userCan('comment-update', $comment))
|
||||
<div comment-edit-container style="display: none;" class="content">
|
||||
<form novalidate>
|
||||
<div class="form-group">
|
||||
<textarea name="markdown" rows="3" v-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}">{{ $comment->text }}</textarea>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="button" class="button outline" action="closeUpdateForm">{{ trans('common.cancel') }}</button>
|
||||
<button type="submit" class="button pos">{{ trans('entities.comment_save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
@@ -1,11 +1,33 @@
|
||||
<div id="page-comments" page-id="<?= $page->id ?>" class="comments-list" v-cloak>
|
||||
<h3>@{{totalCommentsStr}}</h3>
|
||||
<hr>
|
||||
<comment v-for="(comment, index) in comments" :initial-comment="comment" :index="index" :level=1
|
||||
v-on:comment-added.stop="commentAdded"
|
||||
:current-user-id="currentUserId" :key="comment.id" :permissions="permissions"></comment>
|
||||
<div v-if="canComment">
|
||||
<comment-reply v-on:comment-added.stop="commentAdded" :page-id="<?= $page->id ?>">
|
||||
</comment-reply>
|
||||
</div>
|
||||
<div page-comments page-id="{{ $page->id }}" ng-non-bindable class="comments-list">
|
||||
<h3 comments-title>{{ trans_choice('entities.comment_count', count($page->comments), ['count' => count($page->comments)]) }}</h3>
|
||||
|
||||
<div class="comment-container" comment-container>
|
||||
@foreach($page->comments as $comment)
|
||||
@include('comments.comment', ['comment' => $comment])
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
|
||||
@if(userCan('comment-create-all'))
|
||||
|
||||
<div class="comment-box" comment-box style="display:none;">
|
||||
<div class="header"><i class="zmdi zmdi-comment"></i> {{ trans('entities.comment_new') }}</div>
|
||||
<div class="content" comment-form-container>
|
||||
<form novalidate>
|
||||
<div class="form-group">
|
||||
<textarea name="markdown" rows="3" v-model="comment.text" placeholder="{{ trans('entities.comment_placeholder') }}"></textarea>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
<button type="button" class="button outline" action="hideForm">{{ trans('common.cancel') }}</button>
|
||||
<button type="submit" class="button pos">{{ trans('entities.comment_save') }}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" comment-add-button>
|
||||
<button type="button" action="addComment" class="button outline">Add Comment</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
@@ -147,8 +147,9 @@
|
||||
@include('pages/page-display')
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container small">
|
||||
@include('comments/comments', ['pageId' => $page->id])
|
||||
@include('comments/comments', ['page' => $page])
|
||||
</div>
|
||||
@stop
|
||||
|
||||
|
Reference in New Issue
Block a user