From b6110ed3cd15cf9d0472f1ccced3dbe6fdc7db76 Mon Sep 17 00:00:00 2001 From: Joshua Booth Date: Tue, 13 May 2025 20:17:36 +0100 Subject: [PATCH] Add settings for number of books/shelves that will be displayed per page --- app/App/HomeController.php | 4 +-- app/Entities/Controllers/BookController.php | 2 +- .../Controllers/BookshelfController.php | 2 +- lang/en/settings.php | 4 +++ .../settings/categories/sorting.blade.php | 34 +++++++++++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/App/HomeController.php b/app/App/HomeController.php index 0585e0af5cc..7ec8b0af207 100644 --- a/app/App/HomeController.php +++ b/app/App/HomeController.php @@ -83,7 +83,7 @@ public function index( if ($homepageOption === 'bookshelves') { $shelves = $this->queries->shelves->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-shelves-per-page', '18'))); $data = array_merge($commonData, ['shelves' => $shelves]); return view('home.shelves', $data); @@ -92,7 +92,7 @@ public function index( if ($homepageOption === 'books') { $books = $this->queries->books->visibleForListWithCover() ->orderBy($commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-books-per-page', '18'))); $data = array_merge($commonData, ['books' => $books]); return view('home.books', $data); diff --git a/app/Entities/Controllers/BookController.php b/app/Entities/Controllers/BookController.php index b1685081a3d..a9f0d34dc6f 100644 --- a/app/Entities/Controllers/BookController.php +++ b/app/Entities/Controllers/BookController.php @@ -48,7 +48,7 @@ public function index(Request $request) $books = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-books-per-page', '18'))); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->take(4)->get() : false; $popular = $this->queries->popularForList()->take(4)->get(); $new = $this->queries->visibleForList()->orderBy('created_at', 'desc')->take(4)->get(); diff --git a/app/Entities/Controllers/BookshelfController.php b/app/Entities/Controllers/BookshelfController.php index 6cedd23e7df..da84cd4470a 100644 --- a/app/Entities/Controllers/BookshelfController.php +++ b/app/Entities/Controllers/BookshelfController.php @@ -42,7 +42,7 @@ public function index(Request $request) $shelves = $this->queries->visibleForListWithCover() ->orderBy($listOptions->getSort(), $listOptions->getOrder()) - ->paginate(18); + ->paginate(intval(setting('sorting-shelves-per-page', '18'))); $recents = $this->isSignedIn() ? $this->queries->recentlyViewedForCurrentUser()->get() : false; $popular = $this->queries->popularForList()->get(); $new = $this->queries->visibleForList() diff --git a/lang/en/settings.php b/lang/en/settings.php index 82a4ade5df5..9e49197c007 100644 --- a/lang/en/settings.php +++ b/lang/en/settings.php @@ -76,6 +76,10 @@ // Sorting Settings 'sorting' => 'Sorting', + 'sorting_shelves_per_page' => 'Shelves Per Page', + 'sorting_shelves_per_page_desc' => 'Sets the number of shelves shown per page in shelf listings.', + 'sorting_books_per_page' => 'Books Per Page', + 'sorting_books_per_page_desc' => 'Sets the number of books shown per page in book listings.', 'sorting_book_default' => 'Default Book Sort', 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.', 'sorting_rules' => 'Sort Rules', diff --git a/resources/views/settings/categories/sorting.blade.php b/resources/views/settings/categories/sorting.blade.php index 9d1d9814b96..4aff11bd2c6 100644 --- a/resources/views/settings/categories/sorting.blade.php +++ b/resources/views/settings/categories/sorting.blade.php @@ -10,6 +10,40 @@ {{ csrf_field() }} +
+
+ +

{{ trans('settings.sorting_shelves_per_page_desc') }}

+
+
+ +
+
+ +
+
+ +

{{ trans('settings.sorting_books_per_page_desc') }}

+
+
+ +
+
+