diff --git a/app/Livewire/Ui/Nx/Mail/QuarantineList.php b/app/Livewire/Ui/Nx/Mail/QuarantineList.php index 7ce82f9..f387297 100644 --- a/app/Livewire/Ui/Nx/Mail/QuarantineList.php +++ b/app/Livewire/Ui/Nx/Mail/QuarantineList.php @@ -2,33 +2,34 @@ namespace App\Livewire\Ui\Nx\Mail; +use Illuminate\Pagination\LengthAwarePaginator; use Livewire\Attributes\Layout; use Livewire\Attributes\On; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; +use Livewire\WithPagination; #[Layout('layouts.dvx')] #[Title('Quarantäne · Mailwolt')] class QuarantineList extends Component { + use WithPagination; + #[Url(as: 'filter', keep: true)] public string $filter = 'suspicious'; #[Url(as: 'q', keep: true)] public string $search = ''; - #[Url(as: 'page', keep: true)] - public int $page = 1; - public int $perPage = 25; public int $rows = 500; #[On('quarantine:updated')] public function refresh(): void {} - public function updatedFilter(): void { $this->page = 1; } - public function updatedSearch(): void { $this->page = 1; } + public function updatedFilter(): void { $this->resetPage(); } + public function updatedSearch(): void { $this->resetPage(); } public function openMessage(string $msgId): void { @@ -67,16 +68,19 @@ class QuarantineList extends Component )); } - $total = count($messages); - $totalPages = max(1, (int) ceil($total / $this->perPage)); - $this->page = max(1, min($this->page, $totalPages)); - $paged = array_slice($messages, ($this->page - 1) * $this->perPage, $this->perPage); + $total = count($messages); + $currentPage = LengthAwarePaginator::resolveCurrentPage(); + $paged = new LengthAwarePaginator( + array_slice($messages, ($currentPage - 1) * $this->perPage, $this->perPage), + $total, + $this->perPage, + $currentPage, + ['path' => request()->url()] + ); return view('livewire.ui.nx.mail.quarantine-list', [ - 'messages' => $paged, - 'counts' => $counts, - 'total' => $total, - 'totalPages' => $totalPages, + 'messages' => $paged, + 'counts' => $counts, ]); } diff --git a/app/Livewire/Ui/Nx/Mail/QueueList.php b/app/Livewire/Ui/Nx/Mail/QueueList.php index f2281bd..78d4daf 100644 --- a/app/Livewire/Ui/Nx/Mail/QueueList.php +++ b/app/Livewire/Ui/Nx/Mail/QueueList.php @@ -2,25 +2,26 @@ namespace App\Livewire\Ui\Nx\Mail; +use Illuminate\Pagination\LengthAwarePaginator; use Livewire\Attributes\Layout; use Livewire\Attributes\On; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; +use Livewire\WithPagination; #[Layout('layouts.dvx')] #[Title('Mail-Queue · Mailwolt')] class QueueList extends Component { + use WithPagination; + #[Url(as: 'filter', keep: true)] public string $filter = 'all'; #[Url(as: 'q', keep: true)] public string $search = ''; - #[Url(as: 'page', keep: true)] - public int $page = 1; - public int $perPage = 25; public array $selected = []; public bool $selectAll = false; @@ -28,8 +29,8 @@ class QueueList extends Component #[On('queue:updated')] public function refresh(): void {} - public function updatedFilter(): void { $this->page = 1; $this->selected = []; $this->selectAll = false; } - public function updatedSearch(): void { $this->page = 1; } + public function updatedFilter(): void { $this->resetPage(); $this->selected = []; $this->selectAll = false; } + public function updatedSearch(): void { $this->resetPage(); } public function updatedSelectAll(bool $val): void { @@ -96,16 +97,19 @@ class QueueList extends Component )); } - $total = count($messages); - $totalPages = max(1, (int) ceil($total / $this->perPage)); - $this->page = max(1, min($this->page, $totalPages)); - $paged = array_slice($messages, ($this->page - 1) * $this->perPage, $this->perPage); + $total = count($messages); + $currentPage = LengthAwarePaginator::resolveCurrentPage(); + $paged = new LengthAwarePaginator( + array_slice($messages, ($currentPage - 1) * $this->perPage, $this->perPage), + $total, + $this->perPage, + $currentPage, + ['path' => request()->url()] + ); return view('livewire.ui.nx.mail.queue-list', [ - 'messages' => $paged, - 'counts' => $counts, - 'total' => $total, - 'totalPages' => $totalPages, + 'messages' => $paged, + 'counts' => $counts, ]); } diff --git a/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php b/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php index 52df16c..7f3c8c9 100644 --- a/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php +++ b/resources/views/livewire/ui/nx/mail/quarantine-list.blade.php @@ -8,7 +8,7 @@ Quarantäne {{ $counts['all'] }} - Rspamd · {{ $total }} Einträge + Rspamd · {{ $messages->total() }} Einträge
@@ -99,22 +99,7 @@
-@if($totalPages > 1) -
- {{ ($page - 1) * $perPage + 1 }}–{{ min($page * $perPage, $total) }} von {{ $total }} -
- - @for($i = max(1, $page - 2); $i <= min($totalPages, $page + 2); $i++) - - @endfor - -
-
-@endif +{{ $messages->links() }} @elseif($counts['all'] === 0)
diff --git a/resources/views/livewire/ui/nx/mail/queue-list.blade.php b/resources/views/livewire/ui/nx/mail/queue-list.blade.php index 58ad88e..f370e94 100644 --- a/resources/views/livewire/ui/nx/mail/queue-list.blade.php +++ b/resources/views/livewire/ui/nx/mail/queue-list.blade.php @@ -92,22 +92,7 @@
-@if($totalPages > 1) -
- {{ ($page - 1) * $perPage + 1 }}–{{ min($page * $perPage, $total) }} von {{ $total }} -
- - @for($i = max(1, $page - 2); $i <= min($totalPages, $page + 2); $i++) - - @endfor - -
-
-@endif +{{ $messages->links() }} @else
diff --git a/resources/views/vendor/livewire/bootstrap.blade.php b/resources/views/vendor/livewire/bootstrap.blade.php new file mode 100644 index 0000000..8316ff9 --- /dev/null +++ b/resources/views/vendor/livewire/bootstrap.blade.php @@ -0,0 +1,102 @@ +@php +if (! isset($scrollTo)) { + $scrollTo = 'body'; +} + +$scrollIntoViewJsSnippet = ($scrollTo !== false) + ? << + @if ($paginator->hasPages()) + + @endif +
diff --git a/resources/views/vendor/livewire/simple-bootstrap.blade.php b/resources/views/vendor/livewire/simple-bootstrap.blade.php new file mode 100644 index 0000000..44bdce0 --- /dev/null +++ b/resources/views/vendor/livewire/simple-bootstrap.blade.php @@ -0,0 +1,53 @@ +@php +if (! isset($scrollTo)) { + $scrollTo = 'body'; +} + +$scrollIntoViewJsSnippet = ($scrollTo !== false) + ? << + @if ($paginator->hasPages()) + + @endif +
diff --git a/resources/views/vendor/livewire/simple-tailwind.blade.php b/resources/views/vendor/livewire/simple-tailwind.blade.php new file mode 100644 index 0000000..d7f2560 --- /dev/null +++ b/resources/views/vendor/livewire/simple-tailwind.blade.php @@ -0,0 +1,56 @@ +@php +if (! isset($scrollTo)) { + $scrollTo = 'body'; +} + +$scrollIntoViewJsSnippet = ($scrollTo !== false) + ? << + @if ($paginator->hasPages()) + + @endif + diff --git a/resources/views/vendor/livewire/tailwind.blade.php b/resources/views/vendor/livewire/tailwind.blade.php new file mode 100644 index 0000000..dd9b076 --- /dev/null +++ b/resources/views/vendor/livewire/tailwind.blade.php @@ -0,0 +1,45 @@ +@if ($paginator->hasPages()) +
+ + {{ $paginator->firstItem() }}–{{ $paginator->lastItem() }} von {{ $paginator->total() }} + +
+ + @if ($paginator->onFirstPage()) + + @else + + @endif + + @foreach ($elements as $element) + @if (is_string($element)) + + @endif + @if (is_array($element)) + @foreach ($element as $page => $url) + @if ($page == $paginator->currentPage()) + + @else + + @endif + @endforeach + @endif + @endforeach + + @if ($paginator->hasMorePages()) + + @else + + @endif + +
+
+@endif