1
0
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:
Dan Brown
2017-09-03 16:37:51 +01:00
parent e3f2bde26d
commit fea5630ea4
24 changed files with 478 additions and 731 deletions

View 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>
&nbsp;&nbsp;
<img width="50" src="{{ $comment->createdBy->getAvatar(50) }}" class="avatar" alt="{{ $comment->createdBy->name }}">
&nbsp;
<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 }}">
&bull;&nbsp;
{{ 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>

View File

@@ -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>

View File

@@ -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