From 5d6dcd4a2cb6eb57441261a5dee69e8727f4f334 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Fri, 2 Aug 2024 12:23:05 -0400 Subject: [PATCH 01/26] setup mod index page --- app/Http/Controllers/ModController.php | 5 ++++- app/Policies/ModPolicy.php | 5 +++-- resources/views/components/mod-list-section.blade.php | 2 +- resources/views/mod/index.blade.php | 7 +++++++ 4 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 resources/views/mod/index.blade.php diff --git a/app/Http/Controllers/ModController.php b/app/Http/Controllers/ModController.php index 5ca42a4..02b838e 100644 --- a/app/Http/Controllers/ModController.php +++ b/app/Http/Controllers/ModController.php @@ -6,6 +6,7 @@ use App\Http\Requests\ModRequest; use App\Http\Resources\ModResource; use App\Models\Mod; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\Support\Facades\Log; class ModController extends Controller { @@ -15,7 +16,9 @@ class ModController extends Controller { $this->authorize('viewAny', Mod::class); - return ModResource::collection(Mod::all()); + $mods = ModResource::collection(Mod::all()); + + return view('mod.index', compact(['mods'])); } public function store(ModRequest $request) diff --git a/app/Policies/ModPolicy.php b/app/Policies/ModPolicy.php index 0d18b6a..645c1be 100644 --- a/app/Policies/ModPolicy.php +++ b/app/Policies/ModPolicy.php @@ -4,15 +4,16 @@ namespace App\Policies; use App\Models\Mod; use App\Models\User; +use Illuminate\Support\Facades\Log; class ModPolicy { /** * Determine whether the user can view any models. */ - public function viewAny(User $user): bool + public function viewAny(?User $user): bool { - return false; + return true; } /** diff --git a/resources/views/components/mod-list-section.blade.php b/resources/views/components/mod-list-section.blade.php index a7528cd..d16c03c 100644 --- a/resources/views/components/mod-list-section.blade.php +++ b/resources/views/components/mod-list-section.blade.php @@ -1,7 +1,7 @@ @foreach ($sections as $section) @include('components.mod-list-section-partial', [ 'title' => $section['title'], - 'mods' => $section['mods'], + 'mod.index' => $section['mod.index'], 'versionScope' => $section['versionScope'], ]) @endforeach diff --git a/resources/views/mod/index.blade.php b/resources/views/mod/index.blade.php new file mode 100644 index 0000000..9cea4f1 --- /dev/null +++ b/resources/views/mod/index.blade.php @@ -0,0 +1,7 @@ + + + @foreach($mods as $mod) +

{{$mod->name}}

+ @endforeach + +
From a05b5499deb81cff62d23087e5f814b605324d45 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Mon, 5 Aug 2024 10:10:00 -0400 Subject: [PATCH 02/26] revert mod.index on list section I have no idea how this was changed, but it breaks stuff --- resources/views/components/mod-list-section.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/components/mod-list-section.blade.php b/resources/views/components/mod-list-section.blade.php index d16c03c..a7528cd 100644 --- a/resources/views/components/mod-list-section.blade.php +++ b/resources/views/components/mod-list-section.blade.php @@ -1,7 +1,7 @@ @foreach ($sections as $section) @include('components.mod-list-section-partial', [ 'title' => $section['title'], - 'mod.index' => $section['mod.index'], + 'mods' => $section['mods'], 'versionScope' => $section['versionScope'], ]) @endforeach From aa61c63bd1c1efba260e2bd80b85b6dd58a4da3e Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 7 Aug 2024 14:32:37 -0400 Subject: [PATCH 03/26] create mod card component --- resources/views/components/mod-card.blade.php | 29 +++++++++++++++++++ resources/views/components/mod-list.blade.php | 28 +----------------- 2 files changed, 30 insertions(+), 27 deletions(-) create mode 100644 resources/views/components/mod-card.blade.php diff --git a/resources/views/components/mod-card.blade.php b/resources/views/components/mod-card.blade.php new file mode 100644 index 0000000..bbc56b7 --- /dev/null +++ b/resources/views/components/mod-card.blade.php @@ -0,0 +1,29 @@ +@props(['mod', 'versionScope' => 'latestVersion']) + + +
+
+
+ @if(empty($mod->thumbnail)) + {{ $mod->name }} + + @else + {{ $mod->name }} + @endif +
+
+
+
+

{{ $mod->name }}

+ + {{ $mod->{$versionScope}->sptVersion->version }} + +
+

By {{ $mod->users->pluck('name')->implode(', ') }}

+

{{ $mod->teaser }}

+
+ +
+
+
+
diff --git a/resources/views/components/mod-list.blade.php b/resources/views/components/mod-list.blade.php index 519feae..ca5ed34 100644 --- a/resources/views/components/mod-list.blade.php +++ b/resources/views/components/mod-list.blade.php @@ -2,32 +2,6 @@ From b868b5a75cc356cd65d8c904d965130b4fa8416a Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 7 Aug 2024 14:33:11 -0400 Subject: [PATCH 04/26] setup mod index pagination --- app/Http/Controllers/ModController.php | 8 +++- app/Policies/ModPolicy.php | 1 - resources/views/mod/index.blade.php | 57 ++++++++++++++++++++++++-- 3 files changed, 60 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/ModController.php b/app/Http/Controllers/ModController.php index 02b838e..9c5cbbf 100644 --- a/app/Http/Controllers/ModController.php +++ b/app/Http/Controllers/ModController.php @@ -6,7 +6,6 @@ use App\Http\Requests\ModRequest; use App\Http\Resources\ModResource; use App\Models\Mod; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; -use Illuminate\Support\Facades\Log; class ModController extends Controller { @@ -16,7 +15,12 @@ class ModController extends Controller { $this->authorize('viewAny', Mod::class); - $mods = ModResource::collection(Mod::all()); + $mods = Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at']) + ->withTotalDownloads() + ->with(['latestVersion', 'latestVersion.sptVersion', 'users:id,name']) + ->whereHas('latestVersion') + ->latest() + ->paginate(12); return view('mod.index', compact(['mods'])); } diff --git a/app/Policies/ModPolicy.php b/app/Policies/ModPolicy.php index 645c1be..e683811 100644 --- a/app/Policies/ModPolicy.php +++ b/app/Policies/ModPolicy.php @@ -4,7 +4,6 @@ namespace App\Policies; use App\Models\Mod; use App\Models\User; -use Illuminate\Support\Facades\Log; class ModPolicy { diff --git a/resources/views/mod/index.blade.php b/resources/views/mod/index.blade.php index 9cea4f1..8bf9d3e 100644 --- a/resources/views/mod/index.blade.php +++ b/resources/views/mod/index.blade.php @@ -1,7 +1,58 @@ + {{-- + TODO: + [ ] search bar for mods + [ ] mods section filter + [ ] spt version filter + [ ] tags filter + [ ] small / mobile display handling + [ ] light mode theme handling + --}} + + {{-- page links --}} +
+ {{ $mods->links() }} +
+ + {{-- 2 column grid layout --}} +
+ + {{-- search / section filters, mods --}} +
+ {{-- mods serach bar --}} +
+

--SEARCH BAR--

+
+ {{-- section filters --}} +
+

--SECTION FILTERS--

+
+ + {{-- mod cards --}} +
+ @foreach($mods as $mod) + + @endforeach +
+
+ + {{-- version filters, tags --}} +
+ {{-- spt version filters --}} +
+

--SPT VERSION FILTER--

+
+ + {{-- tag filters --}} +
+

--TAG FILTER HERE--

+
+
+
+ {{-- page links --}} +
+ {{ $mods->links() }} +
- @foreach($mods as $mod) -

{{$mod->name}}

- @endforeach
From 1d174ab8b32fa5181f240c7b2220209576a8cbfa Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Thu, 8 Aug 2024 15:50:50 -0400 Subject: [PATCH 05/26] layout WIP --- resources/views/mod/index.blade.php | 63 ++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/resources/views/mod/index.blade.php b/resources/views/mod/index.blade.php index 8bf9d3e..f120027 100644 --- a/resources/views/mod/index.blade.php +++ b/resources/views/mod/index.blade.php @@ -14,18 +14,41 @@ {{ $mods->links() }} - {{-- 2 column grid layout --}} -
+ {{-- grid layout --}} +
{{-- search / section filters, mods --}} -
+
{{-- mods serach bar --}}
-

--SEARCH BAR--

+ +
+ +
+ +
+ {{-- section filters --}} -
-

--SECTION FILTERS--

+ {{-- mod cards --}} @@ -37,15 +60,33 @@
{{-- version filters, tags --}} -
+
{{-- spt version filters --}} -
-

--SPT VERSION FILTER--

+
+

SPT Version

+
{{-- tag filters --}} -
-

--TAG FILTER HERE--

+
+

Tags

+ + +
From 7acdee1b6c52590e1517e39d5e0248d26c3ebfdc Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Fri, 9 Aug 2024 10:15:05 -0400 Subject: [PATCH 06/26] switch to using livewire --- app/Http/Controllers/ModController.php | 9 +- app/Livewire/ModIndex.php | 31 ++++++ resources/views/livewire/mod-index.blade.php | 100 +++++++++++++++++++ resources/views/mod/index.blade.php | 99 +----------------- 4 files changed, 134 insertions(+), 105 deletions(-) create mode 100644 app/Livewire/ModIndex.php create mode 100644 resources/views/livewire/mod-index.blade.php diff --git a/app/Http/Controllers/ModController.php b/app/Http/Controllers/ModController.php index 9c5cbbf..acbf826 100644 --- a/app/Http/Controllers/ModController.php +++ b/app/Http/Controllers/ModController.php @@ -15,14 +15,7 @@ class ModController extends Controller { $this->authorize('viewAny', Mod::class); - $mods = Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at']) - ->withTotalDownloads() - ->with(['latestVersion', 'latestVersion.sptVersion', 'users:id,name']) - ->whereHas('latestVersion') - ->latest() - ->paginate(12); - - return view('mod.index', compact(['mods'])); + return view('mod.index'); } public function store(ModRequest $request) diff --git a/app/Livewire/ModIndex.php b/app/Livewire/ModIndex.php new file mode 100644 index 0000000..7b0b660 --- /dev/null +++ b/app/Livewire/ModIndex.php @@ -0,0 +1,31 @@ +withTotalDownloads() + ->with(['latestVersion', 'latestVersion.sptVersion', 'users:id,name']) + ->whereHas('latestVersion') + ->latest() + ->paginate(12); + + return view('livewire.mod-index', ['mods' => $mods]); + } + + public function changeSection($section): void + { + $this->sectionFilter = $section; + } +} diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php new file mode 100644 index 0000000..862d0a6 --- /dev/null +++ b/resources/views/livewire/mod-index.blade.php @@ -0,0 +1,100 @@ +
+ {{-- + TODO: + [ ] search bar for mods + [ ] mods section filter + [ ] spt version filter + [ ] tags filter + [ ] small / mobile display handling + [ ] light mode theme handling + --}} + + {{-- page links --}} +
+ {{ $mods->links() }} +
+ + {{-- grid layout --}} +
+ + {{-- search / section filters, mods --}} +
+ {{-- mods serach bar --}} +
+ +
+ +
+ +
+
+ + {{-- section filters --}} + + + {{-- mod cards --}} +
+ @foreach($mods as $mod) + + @endforeach +
+
+ + {{-- version filters, tags --}} +
+ {{-- spt version filters --}} +
+

SPT Version

+ +
+ + {{-- tag filters --}} +
+

Tags

+ + + +
+
+
+ {{-- page links --}} +
+ {{ $mods->links() }} +
+ + +
+ diff --git a/resources/views/mod/index.blade.php b/resources/views/mod/index.blade.php index f120027..6df800d 100644 --- a/resources/views/mod/index.blade.php +++ b/resources/views/mod/index.blade.php @@ -1,99 +1,4 @@ - {{-- - TODO: - [ ] search bar for mods - [ ] mods section filter - [ ] spt version filter - [ ] tags filter - [ ] small / mobile display handling - [ ] light mode theme handling - --}} - - {{-- page links --}} -
- {{ $mods->links() }} -
- - {{-- grid layout --}} -
- - {{-- search / section filters, mods --}} -
- {{-- mods serach bar --}} -
- -
- -
- -
-
- - {{-- section filters --}} - - - {{-- mod cards --}} -
- @foreach($mods as $mod) - - @endforeach -
-
- - {{-- version filters, tags --}} -
- {{-- spt version filters --}} -
-

SPT Version

- -
- - {{-- tag filters --}} -
-

Tags

- - - -
-
-
- {{-- page links --}} -
- {{ $mods->links() }} -
- - + @livewire('mod-index')
+ From 9244d487138e89754ede56e21e24f4dc4a9aa268 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Fri, 9 Aug 2024 11:19:07 -0400 Subject: [PATCH 07/26] wire up search and section filters --- app/Livewire/ModIndex.php | 22 +++++++++++++++++++- resources/views/livewire/mod-index.blade.php | 8 +++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/Livewire/ModIndex.php b/app/Livewire/ModIndex.php index 7b0b660..c629654 100644 --- a/app/Livewire/ModIndex.php +++ b/app/Livewire/ModIndex.php @@ -3,6 +3,7 @@ namespace App\Livewire; use App\Models\Mod; +use Illuminate\Support\Str; use Livewire\Component; use Livewire\WithPagination; @@ -10,15 +11,34 @@ class ModIndex extends Component { use WithPagination; + public $modSearch = ''; + public $sectionFilter = 'new'; public function render() { + // 'new' section is default + $section = 'created_at'; + + switch ($this->sectionFilter) { + case 'most_downloaded': + $section = 'total_downloads'; + break; + case 'recently_updated': + $section = 'updated_at'; + break; + case 'top_rated': + // probably use some kind of 'likes' or something + // not implemented yet afaik -waffle + break; + } + $mods = Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at']) ->withTotalDownloads() ->with(['latestVersion', 'latestVersion.sptVersion', 'users:id,name']) ->whereHas('latestVersion') - ->latest() + ->where('name', 'like', '%'.Str::trim($this->modSearch).'%') //TODO: Is this how search do? Ref please advise. -waffle + ->orderByDesc($section) ->paginate(12); return view('livewire.mod-index', ['mods' => $mods]); diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php index 862d0a6..3be079b 100644 --- a/resources/views/livewire/mod-index.blade.php +++ b/resources/views/livewire/mod-index.blade.php @@ -1,9 +1,9 @@
{{-- TODO: - [ ] search bar for mods - [ ] mods section filter - [ ] spt version filter + [X] search bar for mods + [X] spt version filter + - ratings not in yet, otherwise ready [ ] tags filter [ ] small / mobile display handling [ ] light mode theme handling @@ -25,7 +25,7 @@
- +
From f3cedfbb0fb90045573b9b2269d7cf175c74f4bc Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Fri, 9 Aug 2024 11:31:11 -0400 Subject: [PATCH 08/26] update mod card --- resources/views/components/mod-card.blade.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/resources/views/components/mod-card.blade.php b/resources/views/components/mod-card.blade.php index bbc56b7..c8a2a5c 100644 --- a/resources/views/components/mod-card.blade.php +++ b/resources/views/components/mod-card.blade.php @@ -1,10 +1,10 @@ @props(['mod', 'versionScope' => 'latestVersion']) - -
+ +
- @if(empty($mod->thumbnail)) + @if (empty($mod->thumbnail)) {{ $mod->name }} @else @@ -16,10 +16,12 @@

{{ $mod->name }}

- {{ $mod->{$versionScope}->sptVersion->version }} - + {{ $mod->{$versionScope}->sptVersion->version }} +
-

By {{ $mod->users->pluck('name')->implode(', ') }}

+

+ By {{ $mod->users->pluck('name')->implode(', ') }} +

{{ $mod->teaser }}

From 5c02d237e354e3be0d62b19a1840b093e79955ce Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Fri, 9 Aug 2024 11:45:37 -0400 Subject: [PATCH 09/26] add featured section filter --- app/Livewire/ModIndex.php | 9 ++++++--- resources/views/livewire/mod-index.blade.php | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/Livewire/ModIndex.php b/app/Livewire/ModIndex.php index c629654..8510598 100644 --- a/app/Livewire/ModIndex.php +++ b/app/Livewire/ModIndex.php @@ -13,14 +13,17 @@ class ModIndex extends Component public $modSearch = ''; - public $sectionFilter = 'new'; + public $sectionFilter = 'featured'; public function render() { - // 'new' section is default - $section = 'created_at'; + // 'featured' section is default + $section = 'featured'; switch ($this->sectionFilter) { + case 'new': + $section = 'created_at'; + break; case 'most_downloaded': $section = 'total_downloads'; break; diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php index 3be079b..40f0943 100644 --- a/resources/views/livewire/mod-index.blade.php +++ b/resources/views/livewire/mod-index.blade.php @@ -32,7 +32,11 @@ {{-- section filters --}}
-
+

{{ $mod->name }}

- {{ $mod->{$versionScope}->sptVersion->version }} - + {{ $mod->{$versionScope}->sptVersion->version }} +

By {{ $mod->users->pluck('name')->implode(', ') }}

-

{{ $mod->teaser }}

+

{{ Str::limit($mod->teaser, 100) }}

From cc3cdddce3f636791650896079c4a15636ce1981 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Mon, 12 Aug 2024 11:20:03 -0400 Subject: [PATCH 12/26] display filtered spt version --- app/Livewire/ModIndex.php | 27 +++++++++++++------- resources/views/livewire/mod-index.blade.php | 4 +-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/app/Livewire/ModIndex.php b/app/Livewire/ModIndex.php index 0ba1a86..a00370f 100644 --- a/app/Livewire/ModIndex.php +++ b/app/Livewire/ModIndex.php @@ -16,7 +16,7 @@ class ModIndex extends Component public string $sectionFilter = 'featured'; - public string $versionFilter = ''; + public int $versionFilter = -1; public function render() { @@ -41,14 +41,23 @@ class ModIndex extends Component $mods = Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at']) ->withTotalDownloads() - ->with(['latestVersion', 'latestVersion.sptVersion', 'users:id,name']) - ->whereHas('latestVersion') - ->whereHas('latestVersion.sptVersion', function ($query) { - $query->where('version', 'like', '%'.Str::trim($this->versionFilter).'%'); - }) - ->where('name', 'like', '%'.Str::trim($this->modSearch).'%') - ->orderByDesc($section) - ->paginate(12); + ->with(['users:id,name']) + ->where('name', 'like', '%'.Str::trim($this->modSearch).'%'); + + if ($this->versionFilter === -1) { + $mods = $mods + ->with(['latestVersion', 'latestVersion.sptVersion']) + ->whereHas('latestVersion.sptVersion'); + } else { + $mods = $mods->with(['latestVersion' => function ($query) { + $query->where('spt_version_id', $this->versionFilter); + }, 'latestVersion.sptVersion']) + ->whereHas('latestVersion.sptVersion', function ($query) { + $query->where('spt_version_id', $this->versionFilter); + }); + } + + $mods = $mods->orderByDesc($section)->paginate(12); $sptVersions = SptVersion::select(['id', 'version', 'color_class'])->orderByDesc('version')->get(); diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php index 5a84d82..8e5c84c 100644 --- a/resources/views/livewire/mod-index.blade.php +++ b/resources/views/livewire/mod-index.blade.php @@ -69,9 +69,9 @@

SPT Version

From cc8accfb5af119296da7c240db5aba64d96a43f7 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Mon, 12 Aug 2024 14:42:28 -0400 Subject: [PATCH 13/26] handle mobile and light theme --- resources/views/livewire/mod-index.blade.php | 57 +++++++++++++------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php index 8e5c84c..21d39d9 100644 --- a/resources/views/livewire/mod-index.blade.php +++ b/resources/views/livewire/mod-index.blade.php @@ -1,14 +1,4 @@
- {{-- - TODO: - [X] search bar for mods - [X] spt version filter - - ratings not in yet, otherwise ready - [ ] tags filter - [ ] small / mobile display handling - [ ] light mode theme handling - --}} - {{-- page links --}}
{{ $mods->links() }} @@ -17,7 +7,7 @@ {{-- grid layout --}}
- {{-- search / section filters, mods --}} + {{-- column 1 --}}
{{-- mods serach bar --}}
@@ -25,10 +15,21 @@
- +
+ {{-- mobile section filters --}} +
+ +
+ {{-- section filters --}} + {{-- mobile version filters --}} +
+ +
+ + {{-- mobile tags filters --}} +
+

tags filters here when ready :)

+
+ {{-- mod cards --}}
@foreach($mods as $mod) @@ -63,13 +79,13 @@
- {{-- version filters, tags --}} -
+ {{-- column 2 --}} +