diff --git a/app/Http/Controllers/ModController.php b/app/Http/Controllers/ModController.php index 2091d97..86b89ee 100644 --- a/app/Http/Controllers/ModController.php +++ b/app/Http/Controllers/ModController.php @@ -15,7 +15,7 @@ class ModController extends Controller { $this->authorize('viewAny', Mod::class); - return ModResource::collection(Mod::all()); + 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..a00370f --- /dev/null +++ b/app/Livewire/ModIndex.php @@ -0,0 +1,71 @@ +sectionFilter) { + case 'new': + $section = 'created_at'; + break; + 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(['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(); + + return view('livewire.mod-index', ['mods' => $mods, 'sptVersions' => $sptVersions]); + } + + public function changeSection($section): void + { + $this->sectionFilter = $section; + } +} diff --git a/app/Policies/ModPolicy.php b/app/Policies/ModPolicy.php index 7c4e3ec..b5e9873 100644 --- a/app/Policies/ModPolicy.php +++ b/app/Policies/ModPolicy.php @@ -10,9 +10,9 @@ class ModPolicy /** * Determine whether the user can view multiple models. */ - public function viewAny(User $user): bool + public function viewAny(?User $user): bool { - return false; + return true; } /** diff --git a/resources/views/components/mod-card.blade.php b/resources/views/components/mod-card.blade.php new file mode 100644 index 0000000..7f4e767 --- /dev/null +++ b/resources/views/components/mod-card.blade.php @@ -0,0 +1,31 @@ +@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(', ') }} +

+

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

+
+ +
+
+
+
diff --git a/resources/views/components/mod-list.blade.php b/resources/views/components/mod-list.blade.php index 3728d6d..956f6c2 100644 --- a/resources/views/components/mod-list.blade.php +++ b/resources/views/components/mod-list.blade.php @@ -3,35 +3,7 @@
@foreach ($mods as $mod) @if ($mod->{$versionScope}) - -
-
-
- @if (empty($mod->thumbnail)) - {{ $mod->name }} - - @else - {{ $mod->name }} - @endif -
-
-
-
-

{{ $mod->name }}

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

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

-

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

-
- -
-
-
-
+ @endif @endforeach
diff --git a/resources/views/livewire/mod-index.blade.php b/resources/views/livewire/mod-index.blade.php new file mode 100644 index 0000000..21d39d9 --- /dev/null +++ b/resources/views/livewire/mod-index.blade.php @@ -0,0 +1,121 @@ +
+ {{-- page links --}} +
+ {{ $mods->links() }} +
+ + {{-- grid layout --}} +
+ + {{-- column 1 --}} +
+ {{-- mods serach bar --}} +
+ +
+ +
+ +
+
+ + {{-- mobile section filters --}} +
+ +
+ + {{-- section filters --}} + + + {{-- mobile version filters --}} +
+ +
+ + {{-- mobile tags filters --}} +
+

tags filters here when ready :)

+
+ + {{-- mod cards --}} +
+ @foreach($mods as $mod) + + @endforeach +
+
+ + {{-- column 2 --}} + + +
+ {{-- page links --}} +
+ {{ $mods->links() }} +
+ + +
+ diff --git a/resources/views/mod/index.blade.php b/resources/views/mod/index.blade.php new file mode 100644 index 0000000..6df800d --- /dev/null +++ b/resources/views/mod/index.blade.php @@ -0,0 +1,4 @@ + + @livewire('mod-index') + +