diff --git a/app/Http/Controllers/Admin/RepliesController.php b/app/Http/Controllers/Admin/RepliesController.php new file mode 100644 index 000000000..50f431a96 --- /dev/null +++ b/app/Http/Controllers/Admin/RepliesController.php @@ -0,0 +1,21 @@ +appends(['admin_search' => $adminSearch]); + } else { + $replies = Reply::with('replyAbleRelation')->orderByDesc('updated_at')->paginate(); + } + + return view('admin.replies', compact('replies', 'adminSearch')); + } +} diff --git a/app/Http/Livewire/EditReply.php b/app/Http/Livewire/EditReply.php index 6a946e700..e045cc719 100644 --- a/app/Http/Livewire/EditReply.php +++ b/app/Http/Livewire/EditReply.php @@ -3,13 +3,17 @@ namespace App\Http\Livewire; use App\Http\Requests\UpdateReplyRequest; +use App\Jobs\UpdateReply; use App\Policies\ReplyPolicy; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Foundation\Bus\DispatchesJobs; +use Illuminate\Support\Facades\Auth; use Livewire\Component; class EditReply extends Component { use AuthorizesRequests; + use DispatchesJobs; public $reply; @@ -29,9 +33,7 @@ public function updateReply($body) $this->validate((new UpdateReplyRequest())->rules()); - $this->reply->update([ - 'body' => $this->body, - ]); + $this->dispatchSync(new UpdateReply($this->reply, Auth::user(), $this->body)); $this->emit('replyEdited'); } diff --git a/app/Queries/SearchReplies.php b/app/Queries/SearchReplies.php new file mode 100644 index 000000000..cffad1da3 --- /dev/null +++ b/app/Queries/SearchReplies.php @@ -0,0 +1,20 @@ +where('body', 'like', "%$keyword%") + ->orderByDesc('updated_at') + ->paginate($perPage); + } +} diff --git a/resources/views/admin/partials/_navigation.blade.php b/resources/views/admin/partials/_navigation.blade.php index e0451e96a..2ca7b145e 100644 --- a/resources/views/admin/partials/_navigation.blade.php +++ b/resources/views/admin/partials/_navigation.blade.php @@ -11,6 +11,10 @@ Articles + + Replies + + Users diff --git a/resources/views/admin/replies.blade.php b/resources/views/admin/replies.blade.php new file mode 100644 index 000000000..73db2c4ff --- /dev/null +++ b/resources/views/admin/replies.blade.php @@ -0,0 +1,93 @@ +@title('Replies') + +@extends('layouts.default') + +@section('content') +
+ @include('admin.partials._navigation', [ + 'query' => route('admin.replies'), + 'search' => $adminSearch, + 'placeholder' => 'Search for replies...', + ]) +
+ +
+
+ @if($replies->isNotEmpty()) +
+
+
+ + + + Author + Thread + Content + Updated + View + + + + @foreach ($replies as $reply) + + + + + + + {{ $reply->replyAble()->subject() }} + + + + {{ $reply->excerpt() }} + + + + @if ($reply->updatedBy()) + YES + @else + NO + @endif + + + + + + + + + @endforeach + +
+
+
+
+ @else + + @endif +
+ +
+ {{ $replies->render() }} +
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 1c34f50ea..00a686b17 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ name('admin')->group(function () { Route::get('/', [AdminArticlesController::class, 'index']); + Route::get('replies', [AdminRepliesController::class, 'index'])->name('.replies'); // Users Route::get('users', [UsersController::class, 'index'])->name('.users');