X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/22a91c955d8258c73dd5dbcf7f46cc302d31c4bd..refs/pull/3850/head:/app/Http/Controllers/BookshelfController.php diff --git a/app/Http/Controllers/BookshelfController.php b/app/Http/Controllers/BookshelfController.php index 3c63be631..537ea915b 100644 --- a/app/Http/Controllers/BookshelfController.php +++ b/app/Http/Controllers/BookshelfController.php @@ -10,6 +10,7 @@ use BookStack\Entities\Tools\ShelfContext; use BookStack\Exceptions\ImageUploadException; use BookStack\Exceptions\NotFoundException; use BookStack\References\ReferenceFetcher; +use BookStack\Util\SimpleListOptions; use Exception; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; @@ -30,18 +31,16 @@ class BookshelfController extends Controller /** * Display a listing of the book. */ - public function index() + public function index(Request $request) { $view = setting()->getForCurrentUser('bookshelves_view_type'); - $sort = setting()->getForCurrentUser('bookshelves_sort', 'name'); - $order = setting()->getForCurrentUser('bookshelves_sort_order', 'asc'); - $sortOptions = [ + $listOptions = SimpleListOptions::fromRequest($request, 'bookshelves')->withSortOptions([ 'name' => trans('common.sort_name'), 'created_at' => trans('common.sort_created_at'), 'updated_at' => trans('common.sort_updated_at'), - ]; + ]); - $shelves = $this->shelfRepo->getAllPaginated(18, $sort, $order); + $shelves = $this->shelfRepo->getAllPaginated(18, $listOptions->getSort(), $listOptions->getOrder()); $recents = $this->isSignedIn() ? $this->shelfRepo->getRecentlyViewed(4) : false; $popular = $this->shelfRepo->getPopular(4); $new = $this->shelfRepo->getRecentlyCreated(4); @@ -55,9 +54,7 @@ class BookshelfController extends Controller 'popular' => $popular, 'new' => $new, 'view' => $view, - 'sort' => $sort, - 'order' => $order, - 'sortOptions' => $sortOptions, + 'listOptions' => $listOptions, ]); } @@ -100,16 +97,21 @@ class BookshelfController extends Controller * * @throws NotFoundException */ - public function show(ActivityQueries $activities, string $slug) + public function show(Request $request, ActivityQueries $activities, string $slug) { $shelf = $this->shelfRepo->getBySlug($slug); $this->checkOwnablePermission('bookshelf-view', $shelf); - $sort = setting()->getForCurrentUser('shelf_books_sort', 'default'); - $order = setting()->getForCurrentUser('shelf_books_sort_order', 'asc'); + $listOptions = SimpleListOptions::fromRequest($request, 'shelf_books')->withSortOptions([ + 'default' => trans('common.sort_default'), + 'name' => trans('common.sort_name'), + 'created_at' => trans('common.sort_created_at'), + 'updated_at' => trans('common.sort_updated_at'), + ]); + $sort = $listOptions->getSort(); $sortedVisibleShelfBooks = $shelf->visibleBooks()->get() - ->sortBy($sort === 'default' ? 'pivot.order' : $sort, SORT_REGULAR, $order === 'desc') + ->sortBy($sort === 'default' ? 'pivot.order' : $sort, SORT_REGULAR, $listOptions->getOrder() === 'desc') ->values() ->all(); @@ -124,8 +126,7 @@ class BookshelfController extends Controller 'sortedVisibleShelfBooks' => $sortedVisibleShelfBooks, 'view' => $view, 'activity' => $activities->entityActivity($shelf, 20, 1), - 'order' => $order, - 'sort' => $sort, + 'listOptions' => $listOptions, 'referenceCount' => $this->referenceFetcher->getPageReferenceCountToEntity($shelf), ]); }