From 8f66a96ec0ba77338b328279be7977b54f33a325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 5 Sep 2016 16:05:14 +0200 Subject: [PATCH] FEATURE: add comments management --- app/Providers/GlobalViewDataProvider.php | 8 +++ modules/Blog/Article/Entities/Comment.php | 4 +- .../Blog/Article/Events/ApprovedComment.php | 0 .../Blog/Article/Events/DeletedComment.php | 0 .../Controllers/Admin/CommentsOverview.php | 8 ++- .../Http/Controllers/Admin/EditComment.php | 33 +++++++++ modules/Blog/Article/Http/routes.php | 10 ++- .../Article/Listeners/CommentEditLogger.php | 0 .../Providers/ArticleEventServiceProvider.php | 0 .../Article/Resources/lang/en/comments.php | 8 +++ .../views/admin/comments/overview.blade.php | 68 +++++++++++++++++++ resources/assets/admin/css/vendor.css | 4 ++ 12 files changed, 137 insertions(+), 6 deletions(-) create mode 100644 modules/Blog/Article/Events/ApprovedComment.php create mode 100644 modules/Blog/Article/Events/DeletedComment.php create mode 100644 modules/Blog/Article/Http/Controllers/Admin/EditComment.php create mode 100644 modules/Blog/Article/Listeners/CommentEditLogger.php create mode 100644 modules/Blog/Article/Providers/ArticleEventServiceProvider.php create mode 100644 modules/Blog/Article/Resources/lang/en/comments.php create mode 100644 modules/Blog/Article/Resources/views/admin/comments/overview.blade.php diff --git a/app/Providers/GlobalViewDataProvider.php b/app/Providers/GlobalViewDataProvider.php index c0c92845..3b7193b2 100644 --- a/app/Providers/GlobalViewDataProvider.php +++ b/app/Providers/GlobalViewDataProvider.php @@ -73,6 +73,14 @@ class GlobalViewDataProvider extends ServiceProvider return preg_replace($pattern, $code, $view); }); + // shortcut for displaying Gravatar + Blade::extend(function ($view) { + $pattern = $this->createPattern('gravatar'); + $code = ''; + + return preg_replace($pattern, $code, $view); + }); + // shortcut for assets (placed in /public/assets/ Blade::extend(function ($view) { $pattern = $this->createPattern('asset'); diff --git a/modules/Blog/Article/Entities/Comment.php b/modules/Blog/Article/Entities/Comment.php index 2c10a3ab..4b42d711 100644 --- a/modules/Blog/Article/Entities/Comment.php +++ b/modules/Blog/Article/Entities/Comment.php @@ -16,11 +16,11 @@ class Comment extends Model public function author() { - return $this->belongsTo(User::class); + return $this->belongsTo(User::class, 'user_id'); } public function article() { - return $this->belongsTo(Content::class); + return $this->belongsTo(Content::class, 'content_id'); } } \ No newline at end of file diff --git a/modules/Blog/Article/Events/ApprovedComment.php b/modules/Blog/Article/Events/ApprovedComment.php new file mode 100644 index 00000000..e69de29b diff --git a/modules/Blog/Article/Events/DeletedComment.php b/modules/Blog/Article/Events/DeletedComment.php new file mode 100644 index 00000000..e69de29b diff --git a/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php b/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php index 750ba0ea..8e55b3b9 100644 --- a/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php +++ b/modules/Blog/Article/Http/Controllers/Admin/CommentsOverview.php @@ -8,8 +8,12 @@ class CommentsOverview extends Controller { public function getOverview() { - $comments = Comment::paginate(20); + $comments = Comment::with('article') + ->with('author') + ->orderBy('approved') + ->orderBy('created_at', 'DESC') + ->paginate(20); - dd($comments); + return view('article::admin/comments.overview', ['comments' => $comments]); } } \ No newline at end of file diff --git a/modules/Blog/Article/Http/Controllers/Admin/EditComment.php b/modules/Blog/Article/Http/Controllers/Admin/EditComment.php new file mode 100644 index 00000000..ed4de413 --- /dev/null +++ b/modules/Blog/Article/Http/Controllers/Admin/EditComment.php @@ -0,0 +1,33 @@ +approved = 1; + $comment->save(); + + // Event::fire(ApprovedComment); + + return redirect() + ->back() + ->with('success', trans('article::comments.approved')); + } + + public function delete($id) + { + $comment = Comment::findOrFail($id); + $comment->delete(); + + // Event::fire(DeletedComment); + + return redirect() + ->back() + ->with('success', trans('article::comments.deleted')); + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Http/routes.php b/modules/Blog/Article/Http/routes.php index 0cb5d5c0..de6f6be4 100644 --- a/modules/Blog/Article/Http/routes.php +++ b/modules/Blog/Article/Http/routes.php @@ -2,13 +2,19 @@ // routes for comments Route::group([ - 'middleware' => ['web', 'auth'], - 'prefix' => 'comments', + 'middleware' => ['web', 'auth', 'adminMenu'], + 'prefix' => 'admin/comments', 'namespace' => 'Modules\Blog\Article\Http\Controllers\Admin' ], function () { Route::get('/', 'CommentsOverview@getOverview') ->name('comments.overview'); + + Route::get('/delete/{id}', 'EditComment@delete') + ->name('comments.delete'); + + Route::get('/approve/{id}', 'EditComment@approve') + ->name('comments.approve'); }); Route::group([ diff --git a/modules/Blog/Article/Listeners/CommentEditLogger.php b/modules/Blog/Article/Listeners/CommentEditLogger.php new file mode 100644 index 00000000..e69de29b diff --git a/modules/Blog/Article/Providers/ArticleEventServiceProvider.php b/modules/Blog/Article/Providers/ArticleEventServiceProvider.php new file mode 100644 index 00000000..e69de29b diff --git a/modules/Blog/Article/Resources/lang/en/comments.php b/modules/Blog/Article/Resources/lang/en/comments.php new file mode 100644 index 00000000..8eb1d04c --- /dev/null +++ b/modules/Blog/Article/Resources/lang/en/comments.php @@ -0,0 +1,8 @@ + 'Created at :date', + 'commentedArticle' => 'Article', + 'approve' => 'Approve comment', + 'approved' => 'Comment successfully approved', + 'deleted' => 'Comment deleted' +]; \ No newline at end of file diff --git a/modules/Blog/Article/Resources/views/admin/comments/overview.blade.php b/modules/Blog/Article/Resources/views/admin/comments/overview.blade.php new file mode 100644 index 00000000..c7177e63 --- /dev/null +++ b/modules/Blog/Article/Resources/views/admin/comments/overview.blade.php @@ -0,0 +1,68 @@ +@extends('admin.layoutWithNavigation') + +@section('pageHeading', trans('article::module.comments')) + +@section('content') + @if (count($comments)) + @foreach($comments as $comment) + +
+
+
+

+ + {{$comment->author->name}} ({{$comment->author->email}}) +

+
+
+
+

+ {{$comment->content}} +

+
+ +
+ + + + {{--
--}} + {{--
--}} + {{----}} + + {{--{{$comment->author->name}}--}} + + {{--@date($comment->created_at)--}} + + {{--
--}} + {{--
{{$comment->content}}
--}} + {{--
--}} + + + + {{--
--}} + {{--
--}} + @endforeach + @else +
+ @lang('article::comments.noComments') +
+ @endif +@endsection \ No newline at end of file diff --git a/resources/assets/admin/css/vendor.css b/resources/assets/admin/css/vendor.css index a1a072a0..25e2efd5 100644 --- a/resources/assets/admin/css/vendor.css +++ b/resources/assets/admin/css/vendor.css @@ -14363,4 +14363,8 @@ img { .pagination li { display: inline; padding: .5em; +} + +.header-block img { + margin-right: 10px; } \ No newline at end of file