diff --git a/app/Livewire/Mod/ModerationOptions.php b/app/Livewire/Mod/ModerationOptions.php index ccde594..9b5b3a3 100644 --- a/app/Livewire/Mod/ModerationOptions.php +++ b/app/Livewire/Mod/ModerationOptions.php @@ -17,11 +17,13 @@ class ModerationOptions extends Component public function deleteMod(): void { $this->mod->delete(); + $this->js('window.location.reload()'); } - public function disableMod(): void + public function toggleDisabled(): void { - $this->mod->disabled = true; + $this->mod->disabled = ! $this->mod->disabled; $this->mod->save(); + $this->js('window.location.reload()'); } } diff --git a/app/Models/User.php b/app/Models/User.php index 123b5e7..106d1a4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -158,6 +158,14 @@ class User extends Authenticatable implements MustVerifyEmail return Str::lower($this->role?->name) === 'administrator'; } + /** + * Conveniently check is a user is a mod or an admin + */ + public function isModOrAdmin(): bool + { + return $this->isMod() || $this->isAdmin(); + } + /** * Overwritten to instead use the queued version of the VerifyEmail notification. */ diff --git a/app/Policies/ModPolicy.php b/app/Policies/ModPolicy.php index 511c13d..fdba089 100644 --- a/app/Policies/ModPolicy.php +++ b/app/Policies/ModPolicy.php @@ -20,7 +20,11 @@ class ModPolicy */ public function view(?User $user, Mod $mod): bool { - // Everyone can view mods. + // Everyone can view mods, unless they are disabled. + if ($mod->disabled && ! $user?->isModOrAdmin()) { + return false; + } + return true; } diff --git a/resources/css/app.css b/resources/css/app.css index 6e30fdf..7388dbc 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -91,7 +91,6 @@ main a:not(.mod-list-component):not(.tab):not([role="menuitem"]) { .ribbon { font-size: 18px; font-weight: bold; - color: #fff; } .ribbon { @@ -106,7 +105,6 @@ main a:not(.mod-list-component):not(.tab):not([role="menuitem"]) { clip-path: polygon(100% calc(100% - var(--f)), 100% 100%, calc(100% - var(--f)) calc(100% - var(--f)), var(--f) calc(100% - var(--f)), 0 100%, 0 calc(100% - var(--f)), 999px calc(100% - var(--f) - 999px), calc(100% - 999px) calc(100% - var(--f) - 999px)); transform: translate(calc((cos(45deg) - 1) * 100%), -100%) rotate(-45deg); transform-origin: 100% 100%; - background-color: #0e7490; } .rainbow { diff --git a/resources/views/components/mod-card.blade.php b/resources/views/components/mod-card.blade.php index ed4059c..9aa874e 100644 --- a/resources/views/components/mod-card.blade.php +++ b/resources/views/components/mod-card.blade.php @@ -1,14 +1,17 @@ @props(['mod', 'version']) - @if ($mod->featured && !request()->routeIs('home')) -
{{ __('Featured!') }}
+ @if ($mod->featured && !$mod->disabled && !request()->routeIs('home')) +
{{ __('Featured!') }}
+ @endif + @if ($mod->disabled) +
{{ __('Disabled') }}
@endif
- @if (auth()->check() && (auth()->user()->isAdmin() || auth()->user()->isMod())) + @if (auth()->check() && auth()->user()->isModOrAdmin())
- +
@endif
diff --git a/resources/views/livewire/mod/listing.blade.php b/resources/views/livewire/mod/listing.blade.php index c25c960..538c465 100644 --- a/resources/views/livewire/mod/listing.blade.php +++ b/resources/views/livewire/mod/listing.blade.php @@ -173,7 +173,9 @@ @if ($mods->isNotEmpty())
@foreach ($mods as $mod) - + @if(!$mod->disabled || (auth()->check() && auth()->user()->isModOrAdmin())) + + @endif @endforeach
@else diff --git a/resources/views/livewire/mod/moderation-options.blade.php b/resources/views/livewire/mod/moderation-options.blade.php index d629145..accf0d2 100644 --- a/resources/views/livewire/mod/moderation-options.blade.php +++ b/resources/views/livewire/mod/moderation-options.blade.php @@ -12,15 +12,22 @@
-
diff --git a/resources/views/mod/show.blade.php b/resources/views/mod/show.blade.php index 8b58177..ea4174a 100644 --- a/resources/views/mod/show.blade.php +++ b/resources/views/mod/show.blade.php @@ -11,8 +11,16 @@ {{-- Main Mod Details Card --}}
- @if ($mod->featured) -
{{ __('Featured!') }}
+ @if (auth()->check() && auth()->user()->isModOrAdmin()) +
+ +
+ @endif + @if ($mod->featured && !$mod->disabled) +
{{ __('Featured!') }}
+ @endif + @if ($mod->disabled) +
{{ __('Disabled') }}
@endif