- // Check book homepage
- $bookHomepageSetting = setting('app-book-homepage');
- if ($bookHomepageSetting) {
- $books = $this->entityRepo->getAllPaginated('book', 18);
- $booksViewType = setting()->getUser($this->currentUser, 'books_view_type', config('app.views.books', 'list'));
- } else {
- // Check custom homepage
- $homepageSetting = setting('app-homepage');
- if ($homepageSetting) {
- $id = intval(explode(':', $homepageSetting)[0]);
- $customHomepage = $this->entityRepo->getById('page', $id, false, true);
- $this->entityRepo->renderPage($customHomepage, true);
+ // Add required list ordering & sorting for books & shelves views.
+ if ($homepageOption === 'bookshelves' || $homepageOption === 'books') {
+ $key = $homepageOption;
+ $view = setting()->getUser($this->currentUser, $key . '_view_type', config('app.views.' . $key));
+ $sort = setting()->getUser($this->currentUser, $key . '_sort', 'name');
+ $order = setting()->getUser($this->currentUser, $key . '_sort_order', 'asc');
+
+ $sortOptions = [
+ 'name' => trans('common.sort_name'),
+ 'created_at' => trans('common.sort_created_at'),
+ 'updated_at' => trans('common.sort_updated_at'),
+ ];
+
+ $commonData = array_merge($commonData, [
+ 'view' => $view,
+ 'sort' => $sort,
+ 'order' => $order,
+ 'sortOptions' => $sortOptions,
+ ]);
+ }
+
+ if ($homepageOption === 'bookshelves') {
+ $shelves = $this->entityRepo->getAllPaginated('bookshelf', 18, $commonData['sort'], $commonData['order']);
+ foreach ($shelves as $shelf) {
+ $shelf->books = $this->entityRepo->getBookshelfChildren($shelf);