Skip to content

Commit

Permalink
Updated UltimateJQMessages addon to use powergrid.
Browse files Browse the repository at this point in the history
  • Loading branch information
ChimpGamer committed Dec 17, 2024
1 parent e70bb35 commit c51390e
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down
93 changes: 93 additions & 0 deletions addons/UltimateJQMessages/Livewire/JoinQuitMessagesTable.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?php

namespace Addons\UltimateJQMessages\Livewire;

use Addons\UltimateJQMessages\App\Models\JoinQuitMessage;
use Addons\UltimateTags\App\Models\Tag;
use Illuminate\Database\Eloquent\Builder;
use PowerComponents\LivewirePowerGrid\Button;
use PowerComponents\LivewirePowerGrid\Column;
use PowerComponents\LivewirePowerGrid\Facades\PowerGrid;
use PowerComponents\LivewirePowerGrid\PowerGridComponent;
use PowerComponents\LivewirePowerGrid\PowerGridFields;

final class JoinQuitMessagesTable extends PowerGridComponent
{
public string $tableName = 'join-quit-messages-table';

public function setUp(): array
{
return [
PowerGrid::header()
->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('<i class="material-icons text-warning">edit</i>')
//->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('<i class="material-icons text-danger">delete</i>')
//->can(auth()->user()->can('edit_tags'))
->id()
->class('bg-transparent border-0')
->dispatch('delete', ['rowId' => $row->id]),
];
}
}
65 changes: 37 additions & 28 deletions addons/UltimateJQMessages/Livewire/ShowJoinQuitMessages.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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([
Expand All @@ -69,18 +58,27 @@ 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;
$this->message = $joinQuitMessage->message;
$this->permission = $joinQuitMessage->permission;
}

public function updateJQMessage()
public function updateJQMessage(): void
{
$validatedData = $this->validate([
'name' => 'required|string|exists:Addons\UltimateJQMessages\App\Models\JoinQuitMessage,name',
Expand All @@ -102,29 +100,39 @@ 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) {
$this->dispatch('close-modal', $modalId);
}
}

public function resetInput()
public function resetInput(): void
{
$this->jqMessageId = -1;
$this->name = null;
Expand All @@ -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');
}
}
Original file line number Diff line number Diff line change
@@ -1,81 +1,16 @@
<div>
@include('ultimatejqmessages::livewire.join-quit-message-modals')

@if (session()->has('message'))
@if (session('message'))
<h5 class="alert alert-success">{{ session('message') }}</h5>
@endif
@if (session()->has('error'))
@if (session('error'))
<h5 class="alert alert-danger">{{ session('error') }}</h5>
@endif

<div class="card">
<div class="card-header">
<div class="row mt-2 justify-content-between text-center">
<div class="col-md-auto me-auto">
<label>Show
<select class="form-select form-select-sm" style="display: inherit; width: auto" wire:model.live="per_page">
<option value=10>10</option>
<option value=25>25</option>
<option value=50>50</option>
<option value=100>100</option>
</select>
entries
</label>
</div>
<div class="col-md-auto">
<h5 class="mb-0 text-center">
<strong>Join Quit Messages</strong>
</h5>
</div>
<div class="col-md-auto ms-auto" wire:ignore>
<div class="form-outline w-auto d-inline-block" data-mdb-input-init>
<input type="search" id="jqMessageSearch" class="form-control form-control-sm" wire:model.live="search"/>
<label class="form-label" for="jqMessageSearch" style="font-family: Roboto, 'FontAwesome'">Search...</label>
</div>
</div>
</div>
</div>

<div class="card-body border-0 shadow table-responsive">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Type</th>
<th>Message</th>
<th>Permission</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach($messages as $message)
<tr>
<td>{{ $message->id }}</td>
<td>{{ $message->name }}</td>
<td>{{ $message->type->name() }}</td>
<td>{!! $message->message !!}</td>
<td>{{ $message->permission }}</td>
<td>
<button type="button" style="background: transparent; border: none;"
data-mdb-ripple-init data-mdb-modal-init
data-mdb-target="#editJQMessageModal" wire:click="editJQMessage({{$message->id}})">
<i class="material-icons text-warning">edit</i>
</button>
<button type="button" style="background: transparent; border: none;"
data-mdb-ripple-init data-mdb-modal-init
data-mdb-target="#deleteJQMessageModal" wire:click="deleteJQMessage({{$message->id}})">
<i class="material-icons text-danger">delete</i>
</button>
</td>
</tr>
@endforeach

</tbody>
</table>
{{ $messages->links() }}
</div>
</div>
<x-card-table title="Join Quit Messages">
@livewire('ultimatejqmessages::join-quit-messages-table')
</x-card-table>
<div class="p-4">
<button type="button" class="btn btn-primary" data-mdb-ripple-init data-mdb-modal-init
data-mdb-target="#addJQMessageModal"
Expand Down

0 comments on commit c51390e

Please sign in to comment.