From 9ca2f73714e418a5ccf8ce444121d6c861e4a2ca Mon Sep 17 00:00:00 2001 From: w33b Date: Wed, 29 Oct 2025 15:59:43 +0100 Subject: [PATCH] Admin: Add comments overview for moderation --- .../Controllers/Admin/CommentsController.php | 16 ++++++ app/Livewire/AdminCommentSearch.php | 40 +++++++++++++ .../views/admin/comments/index.blade.php | 5 ++ .../views/admin/partials/sidenav.blade.php | 6 ++ .../livewire/admin-comment-search.blade.php | 57 +++++++++++++++++++ routes/web.php | 3 + 6 files changed, 127 insertions(+) create mode 100644 app/Http/Controllers/Admin/CommentsController.php create mode 100644 app/Livewire/AdminCommentSearch.php create mode 100644 resources/views/admin/comments/index.blade.php create mode 100644 resources/views/livewire/admin-comment-search.blade.php diff --git a/app/Http/Controllers/Admin/CommentsController.php b/app/Http/Controllers/Admin/CommentsController.php new file mode 100644 index 0000000..7bb9889 --- /dev/null +++ b/app/Http/Controllers/Admin/CommentsController.php @@ -0,0 +1,16 @@ +resetPage(); + } + + public function updatingUserSearch(): void + { + $this->resetPage(); + } + + public function render() + { + $comments = DB::table('comments') + ->join('users', 'comments.commenter_id', '=', 'users.id') + ->select('comments.*', 'users.username') + ->when($this->search !== '', fn ($query) => $query->where('comment', 'LIKE', "%$this->search%")) + ->when($this->userSearch !== '', fn ($query) => $query->where('username', 'LIKE', "%$this->userSearch%")) + ->paginate(12); + + return view('livewire.admin-comment-search', [ + 'comments' => $comments + ]); + } +} diff --git a/resources/views/admin/comments/index.blade.php b/resources/views/admin/comments/index.blade.php new file mode 100644 index 0000000..2d0c626 --- /dev/null +++ b/resources/views/admin/comments/index.blade.php @@ -0,0 +1,5 @@ +@extends('admin.layout') + +@section('content') + @livewire('admin-comment-search') +@endsection \ No newline at end of file diff --git a/resources/views/admin/partials/sidenav.blade.php b/resources/views/admin/partials/sidenav.blade.php index 7f3b776..dcfe0c5 100644 --- a/resources/views/admin/partials/sidenav.blade.php +++ b/resources/views/admin/partials/sidenav.blade.php @@ -19,6 +19,12 @@ Users +
  • + + + Comments + +
  • diff --git a/resources/views/livewire/admin-comment-search.blade.php b/resources/views/livewire/admin-comment-search.blade.php new file mode 100644 index 0000000..571090e --- /dev/null +++ b/resources/views/livewire/admin-comment-search.blade.php @@ -0,0 +1,57 @@ +
    +
    +
    +
    + + + + + + + + + + @foreach($comments as $comment) + + + + + + @endforeach + +
    + User + + + Comment + + + Actions +
    + {{ $comment->username }} + + {{ $comment->comment }} + + @lang('comments::comments.delete') + +
    +
    +
    + {{ $comments->links('pagination::tailwind') }} +
    +
    diff --git a/routes/web.php b/routes/web.php index 8d25adf..6e06847 100644 --- a/routes/web.php +++ b/routes/web.php @@ -102,6 +102,9 @@ Route::group(['middleware' => ['auth', 'auth.admin']], function () { Route::get('/admin/users', [App\Http\Controllers\Admin\UserController::class, 'index'])->name('admin.user.index'); Route::post('/admin/users', [App\Http\Controllers\Admin\UserController::class, 'update'])->name('admin.user.update'); + // Comments + Route::get('/admin/comments', [App\Http\Controllers\Admin\CommentsController::class, 'index'])->name('admin.comments.index'); + // Contact page overview Route::get('/admin/contact', [App\Http\Controllers\Admin\ContactController::class, 'index'])->name('admin.contact.index'); Route::delete('/admin/contact/{contact_id}', [App\Http\Controllers\Admin\ContactController::class, 'delete'])->name('admin.contact.delete');