From c51390e19b88832b60d2283acca652d5c077c4ba Mon Sep 17 00:00:00 2001 From: ChimpGamer Date: Tue, 17 Dec 2024 20:43:10 +0100 Subject: [PATCH] Updated UltimateJQMessages addon to use powergrid. --- .../UltimateJQMessagesController.php | 11 +++ .../Livewire/JoinQuitMessagesTable.php | 93 +++++++++++++++++++ .../Livewire/ShowJoinQuitMessages.php | 65 +++++++------ .../show-join-quit-messages.blade.php | 75 +-------------- 4 files changed, 146 insertions(+), 98 deletions(-) create mode 100644 addons/UltimateJQMessages/Livewire/JoinQuitMessagesTable.php diff --git a/addons/UltimateJQMessages/App/Http/Controllers/UltimateJQMessagesController.php b/addons/UltimateJQMessages/App/Http/Controllers/UltimateJQMessagesController.php index 68875bb..09aa114 100644 --- a/addons/UltimateJQMessages/App/Http/Controllers/UltimateJQMessagesController.php +++ b/addons/UltimateJQMessages/App/Http/Controllers/UltimateJQMessagesController.php @@ -9,6 +9,17 @@ class UltimateJQMessagesController extends Controller { + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->middleware('auth'); + } + /** * Display a listing of the resource. */ diff --git a/addons/UltimateJQMessages/Livewire/JoinQuitMessagesTable.php b/addons/UltimateJQMessages/Livewire/JoinQuitMessagesTable.php new file mode 100644 index 0000000..b8ee55d --- /dev/null +++ b/addons/UltimateJQMessages/Livewire/JoinQuitMessagesTable.php @@ -0,0 +1,93 @@ +showSearchInput(), + PowerGrid::footer() + ->showPerPage() + ->showRecordCount(), + ]; + } + + public function datasource(): Builder + { + return JoinQuitMessage::query(); + } + + public function fields(): PowerGridFields + { + return PowerGrid::fields() + ->add('id') + ->add('name') + ->add('type_name', fn (JoinQuitMessage $model) => $model->type->name()) + ->add('message_formatted', fn (JoinQuitMessage $model) => $model->message) + ->add('description') + ->add('permission') + ->add('server'); + } + + public function columns(): array + { + return [ + Column::make('Id', 'id') + ->sortable() + ->searchable(), + + Column::make('Name', 'name') + ->sortable() + ->searchable(), + + Column::make('Type', 'type_name', 'type') + ->sortable() + ->searchable(), + + Column::make('Message', 'message_formatted', 'message') + ->sortable() + ->searchable(), + + Column::make('Permission', 'permission') + ->sortable() + ->searchable(), + + Column::action('Action') + ->headerAttribute('text-center'), + ]; + } + + public function actions(JoinQuitMessage $row): array + { + return [ + Button::add('edit') + ->attributes(['data-mdb-ripple-init' => '', 'data-mdb-modal-init' => '', 'data-mdb-target' => '#editJQMessageModal']) + ->slot('edit') + //->can(auth()->user()->can('edit_tags')) + ->id() + ->class('bg-transparent border-0') + ->dispatch('edit', ['rowId' => $row->id]), + Button::add('delete') + ->attributes(['data-mdb-ripple-init' => '', 'data-mdb-modal-init' => '', 'data-mdb-target' => '#deleteJQMessageModal']) + ->slot('delete') + //->can(auth()->user()->can('edit_tags')) + ->id() + ->class('bg-transparent border-0') + ->dispatch('delete', ['rowId' => $row->id]), + ]; + } +} diff --git a/addons/UltimateJQMessages/Livewire/ShowJoinQuitMessages.php b/addons/UltimateJQMessages/Livewire/ShowJoinQuitMessages.php index d990d8b..41e3e7a 100644 --- a/addons/UltimateJQMessages/Livewire/ShowJoinQuitMessages.php +++ b/addons/UltimateJQMessages/Livewire/ShowJoinQuitMessages.php @@ -4,17 +4,16 @@ use Addons\UltimateJQMessages\App\Models\JoinQuitMessage; use Addons\UltimateJQMessages\App\Models\JoinQuitMessageType; +use Illuminate\Contracts\View\Factory; +use Illuminate\Contracts\View\View; +use Illuminate\Foundation\Application; use Illuminate\Validation\Rule; use Livewire\Attributes\Computed; +use Livewire\Attributes\On; use Livewire\Component; -use Livewire\WithPagination; class ShowJoinQuitMessages extends Component { - use WithPagination; - - protected string $paginationTheme = 'bootstrap'; - public int $jqMessageId; public ?string $name; @@ -25,28 +24,18 @@ class ShowJoinQuitMessages extends Component public ?string $permission; - public string $search = ''; - public int $per_page = 10; - #[Computed] public function JoinQuitMessageTypeCases(): array { return JoinQuitMessageType::cases(); } - public function updated($name, $value): void - { - if ($name == 'search') { - $this->resetPage(); - } - } - - public function addJQMessage() + public function addJQMessage(): void { $this->resetInput(); } - public function createJQMessage() + public function createJQMessage(): void { // name has to be unique. $validatedData = $this->validate([ @@ -69,10 +58,19 @@ public function createJQMessage() ]); session()->flash('message', 'Successfully Added Join Quit Message'); $this->closeModal('addJQMessageModal'); + $this->refreshTable(); } - public function editJQMessage(JoinQuitMessage $joinQuitMessage) + #[On('edit')] + public function editJQMessage($rowId): void { + $joinQuitMessage = JoinQuitMessage::find($rowId); + if ($joinQuitMessage == null) { + session()->flash('error', 'Join Quit Message #'.$rowId.' not found'); + + return; + } + $this->jqMessageId = $joinQuitMessage->id; $this->name = $joinQuitMessage->name; $this->type = $joinQuitMessage->type; @@ -80,7 +78,7 @@ public function editJQMessage(JoinQuitMessage $joinQuitMessage) $this->permission = $joinQuitMessage->permission; } - public function updateJQMessage() + public function updateJQMessage(): void { $validatedData = $this->validate([ 'name' => 'required|string|exists:Addons\UltimateJQMessages\App\Models\JoinQuitMessage,name', @@ -102,21 +100,31 @@ public function updateJQMessage() ]); session()->flash('message', 'Join Quit Message Updated Successfully'); $this->closeModal('editJQMessageModal'); + $this->refreshTable(); } - public function deleteJQMessage(JoinQuitMessage $joinQuitMessage) + #[On('delete')] + public function deleteJQMessage($rowId): void { + $joinQuitMessage = JoinQuitMessage::find($rowId); + if ($joinQuitMessage == null) { + session()->flash('error', 'Join Quit Message #'.$rowId.' not found'); + + return; + } + $this->jqMessageId = $joinQuitMessage->id; $this->name = $joinQuitMessage->name; } - public function delete() + public function delete(): void { JoinQuitMessage::find($this->jqMessageId)->delete(); $this->closeModal('deleteJQMessageModal'); + $this->refreshTable(); } - public function closeModal(?string $modalId = null) + public function closeModal(?string $modalId = null): void { $this->resetInput(); if ($modalId != null) { @@ -124,7 +132,7 @@ public function closeModal(?string $modalId = null) } } - public function resetInput() + public function resetInput(): void { $this->jqMessageId = -1; $this->name = null; @@ -133,12 +141,13 @@ public function resetInput() $this->permission = null; } - public function render() + private function refreshTable(): void { - $messages = JoinQuitMessage::where('name', 'like', '%'.$this->search.'%') - ->orWhere('type', 'like', '%'.$this->search.'%') - ->orderBy('id', 'DESC')->paginate($this->per_page); + $this->dispatch('pg:eventRefresh-join-quit-messages-table'); + } - return view('ultimatejqmessages::livewire.show-join-quit-messages')->with('messages', $messages); + public function render(): View|Factory|Application + { + return view('ultimatejqmessages::livewire.show-join-quit-messages'); } } diff --git a/addons/UltimateJQMessages/resources/views/livewire/show-join-quit-messages.blade.php b/addons/UltimateJQMessages/resources/views/livewire/show-join-quit-messages.blade.php index 972237b..3b5e1ab 100644 --- a/addons/UltimateJQMessages/resources/views/livewire/show-join-quit-messages.blade.php +++ b/addons/UltimateJQMessages/resources/views/livewire/show-join-quit-messages.blade.php @@ -1,81 +1,16 @@
@include('ultimatejqmessages::livewire.join-quit-message-modals') - @if (session()->has('message')) + @if (session('message'))
{{ session('message') }}
@endif - @if (session()->has('error')) + @if (session('error'))
{{ session('error') }}
@endif -
-
-
-
- -
-
-
- Join Quit Messages -
-
-
-
- - -
-
-
-
- -
- - - - - - - - - - - - - @foreach($messages as $message) - - - - - - - - - @endforeach - - -
IDNameTypeMessagePermissionActions
{{ $message->id }}{{ $message->name }}{{ $message->type->name() }}{!! $message->message !!}{{ $message->permission }} - - -
- {{ $messages->links() }} -
-
+ + @livewire('ultimatejqmessages::join-quit-messages-table') +