From 0bfc2aa9836b8a29921113d9a4efa51bb3874f55 Mon Sep 17 00:00:00 2001 From: faissaloux Date: Thu, 6 Apr 2023 15:25:00 +0000 Subject: [PATCH 1/4] posts admin tab --- .../Controllers/Admin/ThreadsController.php | 21 +++++ app/Queries/SearchThreads.php | 21 +++++ .../admin/partials/_navigation.blade.php | 4 + resources/views/admin/threads.blade.php | 93 +++++++++++++++++++ routes/web.php | 2 + 5 files changed, 141 insertions(+) create mode 100644 app/Http/Controllers/Admin/ThreadsController.php create mode 100644 app/Queries/SearchThreads.php create mode 100644 resources/views/admin/threads.blade.php diff --git a/app/Http/Controllers/Admin/ThreadsController.php b/app/Http/Controllers/Admin/ThreadsController.php new file mode 100644 index 000000000..70a8a0315 --- /dev/null +++ b/app/Http/Controllers/Admin/ThreadsController.php @@ -0,0 +1,21 @@ +appends(['admin_search' => $adminSearch]); + } else { + $threads = Thread::orderByDesc('updated_at')->paginate(); + } + + return view('admin.threads', compact('threads', 'adminSearch')); + } +} diff --git a/app/Queries/SearchThreads.php b/app/Queries/SearchThreads.php new file mode 100644 index 000000000..3d904a087 --- /dev/null +++ b/app/Queries/SearchThreads.php @@ -0,0 +1,21 @@ +orWhere('body', 'like', "%$keyword%") + ->orWhere('slug', '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..ca3977298 100644 --- a/resources/views/admin/partials/_navigation.blade.php +++ b/resources/views/admin/partials/_navigation.blade.php @@ -11,6 +11,10 @@ Articles + + Posts + + Users diff --git a/resources/views/admin/threads.blade.php b/resources/views/admin/threads.blade.php new file mode 100644 index 000000000..3972429f8 --- /dev/null +++ b/resources/views/admin/threads.blade.php @@ -0,0 +1,93 @@ +@title('Posts') + +@extends('layouts.default') + +@section('content') +
+ @include('admin.partials._navigation', [ + 'query' => route('admin.threads'), + 'search' => $adminSearch, + 'placeholder' => 'Search for posts...', + ]) +
+ +
+
+ @if($threads->isNotEmpty()) +
+
+
+ + + + Author + Subject + Content + Updated + View + + + + @foreach ($threads as $thread) + + + + + + + {{ $thread->subject() }} + + + + {{ $thread->excerpt() }} + + + + @if ($thread->updatedBy()) + YES + @else + NO + @endif + + + + + + + + + @endforeach + +
+
+
+
+ @else + + @endif +
+ +
+ {{ $threads->render() }} +
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 1c34f50ea..b5c84bb8a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ name('admin')->group(function () { Route::get('/', [AdminArticlesController::class, 'index']); + Route::get('posts', [AdminThreadsController::class, 'index'])->name('.threads'); // Users Route::get('users', [UsersController::class, 'index'])->name('.users'); From 646bc5042c603b7c66fbc15e1206bc637af94769 Mon Sep 17 00:00:00 2001 From: faissaloux Date: Wed, 12 Apr 2023 16:12:12 +0000 Subject: [PATCH 2/4] save reply updater --- app/Http/Livewire/EditReply.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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'); } From 63239c8b58fa8cbe3068967fc3bc5ba192fd9ba6 Mon Sep 17 00:00:00 2001 From: faissaloux Date: Wed, 12 Apr 2023 16:15:00 +0000 Subject: [PATCH 3/4] show replies instead of threads --- .../Controllers/Admin/PostsController.php | 21 +++++++++++++ .../Controllers/Admin/ThreadsController.php | 21 ------------- .../{SearchThreads.php => SearchReplies.php} | 11 +++---- .../admin/partials/_navigation.blade.php | 2 +- .../{threads.blade.php => posts.blade.php} | 31 ++++++++----------- routes/web.php | 4 +-- 6 files changed, 42 insertions(+), 48 deletions(-) create mode 100644 app/Http/Controllers/Admin/PostsController.php delete mode 100644 app/Http/Controllers/Admin/ThreadsController.php rename app/Queries/{SearchThreads.php => SearchReplies.php} (51%) rename resources/views/admin/{threads.blade.php => posts.blade.php} (81%) diff --git a/app/Http/Controllers/Admin/PostsController.php b/app/Http/Controllers/Admin/PostsController.php new file mode 100644 index 000000000..a3781457a --- /dev/null +++ b/app/Http/Controllers/Admin/PostsController.php @@ -0,0 +1,21 @@ +appends(['admin_search' => $adminSearch]); + } else { + $replies = Reply::with('replyAbleRelation')->orderByDesc('updated_at')->paginate(); + } + + return view('admin.posts', compact('replies', 'adminSearch')); + } +} diff --git a/app/Http/Controllers/Admin/ThreadsController.php b/app/Http/Controllers/Admin/ThreadsController.php deleted file mode 100644 index 70a8a0315..000000000 --- a/app/Http/Controllers/Admin/ThreadsController.php +++ /dev/null @@ -1,21 +0,0 @@ -appends(['admin_search' => $adminSearch]); - } else { - $threads = Thread::orderByDesc('updated_at')->paginate(); - } - - return view('admin.threads', compact('threads', 'adminSearch')); - } -} diff --git a/app/Queries/SearchThreads.php b/app/Queries/SearchReplies.php similarity index 51% rename from app/Queries/SearchThreads.php rename to app/Queries/SearchReplies.php index 3d904a087..cffad1da3 100644 --- a/app/Queries/SearchThreads.php +++ b/app/Queries/SearchReplies.php @@ -2,19 +2,18 @@ namespace App\Queries; -use App\Models\Thread; +use App\Models\Reply; use Illuminate\Contracts\Pagination\Paginator; -final class SearchThreads +final class SearchReplies { /** - * @return \App\Models\Thread[] + * @return \App\Models\Reply[] */ public static function get(string $keyword, int $perPage = 20): Paginator { - return Thread::where('subject', 'like', "%$keyword%") - ->orWhere('body', 'like', "%$keyword%") - ->orWhere('slug', 'like', "%$keyword%") + return Reply::with('replyAbleRelation') + ->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 ca3977298..6dcbc9cb4 100644 --- a/resources/views/admin/partials/_navigation.blade.php +++ b/resources/views/admin/partials/_navigation.blade.php @@ -11,7 +11,7 @@ Articles - + Posts diff --git a/resources/views/admin/threads.blade.php b/resources/views/admin/posts.blade.php similarity index 81% rename from resources/views/admin/threads.blade.php rename to resources/views/admin/posts.blade.php index 3972429f8..06d3450ee 100644 --- a/resources/views/admin/threads.blade.php +++ b/resources/views/admin/posts.blade.php @@ -5,7 +5,7 @@ @section('content')
@include('admin.partials._navigation', [ - 'query' => route('admin.threads'), + 'query' => route('admin.posts'), 'search' => $adminSearch, 'placeholder' => 'Search for posts...', ]) @@ -13,7 +13,7 @@
- @if($threads->isNotEmpty()) + @if($replies->isNotEmpty())
@@ -21,29 +21,28 @@ Author - Subject Content Updated View - @foreach ($threads as $thread) + @foreach ($replies as $reply)
- +
@@ -51,15 +50,11 @@ - {{ $thread->subject() }} + {{ $reply->excerpt() }} - {{ $thread->excerpt() }} - - - - @if ($thread->updatedBy()) + @if ($reply->updatedBy()) YES @else NO @@ -68,7 +63,7 @@ @@ -82,12 +77,12 @@ class="text-lio-600 hover:text-lio-800"
@else - + @endif
- {{ $threads->render() }} + {{ $replies->render() }}
@endsection diff --git a/routes/web.php b/routes/web.php index b5c84bb8a..3744289c6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,7 +1,7 @@ name('admin')->group(function () { Route::get('/', [AdminArticlesController::class, 'index']); - Route::get('posts', [AdminThreadsController::class, 'index'])->name('.threads'); + Route::get('posts', [AdminPostsController::class, 'index'])->name('.posts'); // Users Route::get('users', [UsersController::class, 'index'])->name('.users'); From c357256d7f36ef738058a01145d2933f382d88a5 Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Sun, 15 Oct 2023 11:45:13 +0200 Subject: [PATCH 4/4] wip --- .../{PostsController.php => RepliesController.php} | 4 ++-- resources/views/admin/partials/_navigation.blade.php | 4 ++-- .../admin/{posts.blade.php => replies.blade.php} | 11 ++++++++--- routes/web.php | 4 ++-- 4 files changed, 14 insertions(+), 9 deletions(-) rename app/Http/Controllers/Admin/{PostsController.php => RepliesController.php} (79%) rename resources/views/admin/{posts.blade.php => replies.blade.php} (92%) diff --git a/app/Http/Controllers/Admin/PostsController.php b/app/Http/Controllers/Admin/RepliesController.php similarity index 79% rename from app/Http/Controllers/Admin/PostsController.php rename to app/Http/Controllers/Admin/RepliesController.php index a3781457a..50f431a96 100644 --- a/app/Http/Controllers/Admin/PostsController.php +++ b/app/Http/Controllers/Admin/RepliesController.php @@ -6,7 +6,7 @@ use App\Models\Reply; use App\Queries\SearchReplies; -class PostsController extends Controller +class RepliesController extends Controller { public function index() { @@ -16,6 +16,6 @@ public function index() $replies = Reply::with('replyAbleRelation')->orderByDesc('updated_at')->paginate(); } - return view('admin.posts', compact('replies', 'adminSearch')); + return view('admin.replies', compact('replies', 'adminSearch')); } } diff --git a/resources/views/admin/partials/_navigation.blade.php b/resources/views/admin/partials/_navigation.blade.php index 6dcbc9cb4..2ca7b145e 100644 --- a/resources/views/admin/partials/_navigation.blade.php +++ b/resources/views/admin/partials/_navigation.blade.php @@ -11,8 +11,8 @@ Articles - - Posts + + Replies diff --git a/resources/views/admin/posts.blade.php b/resources/views/admin/replies.blade.php similarity index 92% rename from resources/views/admin/posts.blade.php rename to resources/views/admin/replies.blade.php index 06d3450ee..73db2c4ff 100644 --- a/resources/views/admin/posts.blade.php +++ b/resources/views/admin/replies.blade.php @@ -1,13 +1,13 @@ -@title('Posts') +@title('Replies') @extends('layouts.default') @section('content')
@include('admin.partials._navigation', [ - 'query' => route('admin.posts'), + 'query' => route('admin.replies'), 'search' => $adminSearch, - 'placeholder' => 'Search for posts...', + 'placeholder' => 'Search for replies...', ])
@@ -21,6 +21,7 @@ Author + Thread Content Updated View @@ -49,6 +50,10 @@
+ + {{ $reply->replyAble()->subject() }} + + {{ $reply->excerpt() }} diff --git a/routes/web.php b/routes/web.php index 3744289c6..00a686b17 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,7 +1,7 @@ name('admin')->group(function () { Route::get('/', [AdminArticlesController::class, 'index']); - Route::get('posts', [AdminPostsController::class, 'index'])->name('.posts'); + Route::get('replies', [AdminRepliesController::class, 'index'])->name('.replies'); // Users Route::get('users', [UsersController::class, 'index'])->name('.users');