1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-12-13 07:42:23 +03:00

Merge branch 'feature/pagination_settings' of github.com:Xenoamor/BookStack into Xenoamor-feature/pagination_settings

This commit is contained in:
Dan Brown
2025-12-06 21:47:13 +00:00
5 changed files with 42 additions and 4 deletions

View File

@@ -83,7 +83,7 @@ class HomeController extends Controller
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 @@ class HomeController extends Controller
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);

View File

@@ -52,7 +52,7 @@ class BookController extends Controller
$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();

View File

@@ -45,7 +45,7 @@ class BookshelfController extends Controller
$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()

View File

@@ -76,6 +76,10 @@ return [
// 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',

View File

@@ -10,6 +10,40 @@
{{ csrf_field() }}
<input type="hidden" name="section" value="sorting">
<div class="grid half gap-xl items-center">
<div>
<label for="setting-sorting-shelves-per-page"
class="setting-list-label">{{ trans('settings.sorting_shelves_per_page') }}</label>
<p class="small">{{ trans('settings.sorting_shelves_per_page_desc') }}</p>
</div>
<div>
<input type="number"
id="setting-sorting-shelves-per-page"
name="setting-sorting-shelves-per-page"
value="{{ intval(setting('sorting-shelves-per-page', 18)) }}"
min="1"
step="1"
class="@if($errors->has('setting-sorting-shelves-per-page')) neg @endif">
</div>
</div>
<div class="grid half gap-xl items-center">
<div>
<label for="setting-sorting-books-per-page"
class="setting-list-label">{{ trans('settings.sorting_books_per_page') }}</label>
<p class="small">{{ trans('settings.sorting_books_per_page_desc') }}</p>
</div>
<div>
<input type="number"
id="setting-sorting-books-per-page"
name="setting-sorting-books-per-page"
value="{{ intval(setting('sorting-books-per-page', 18)) }}"
min="1"
step="1"
class="@if($errors->has('setting-sorting-books-per-page')) neg @endif">
</div>
</div>
<div class="setting-list">
<div class="grid half gap-xl items-center">
<div>