use BookStack\Entities\Repos\BookRepo;
use BookStack\Entities\Repos\BookshelfRepo;
use BookStack\Entities\Tools\PageContent;
+use BookStack\Uploads\FaviconHandler;
+use BookStack\Util\SimpleListOptions;
+use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Display the homepage.
*/
- public function index(ActivityQueries $activities)
+ public function index(Request $request, ActivityQueries $activities)
{
$activity = $activities->latest(10);
$draftPages = [];
if ($homepageOption === 'bookshelves' || $homepageOption === 'books') {
$key = $homepageOption;
$view = setting()->getForCurrentUser($key . '_view_type');
- $sort = setting()->getForCurrentUser($key . '_sort', 'name');
- $order = setting()->getForCurrentUser($key . '_sort_order', 'asc');
-
- $sortOptions = [
- 'name' => trans('common.sort_name'),
+ $listOptions = SimpleListOptions::fromRequest($request, $key)->withSortOptions([
+ '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,
+ 'listOptions' => $listOptions,
]);
}
if ($homepageOption === 'bookshelves') {
- $shelves = app(BookshelfRepo::class)->getAllPaginated(18, $commonData['sort'], $commonData['order']);
+ $shelves = app(BookshelfRepo::class)->getAllPaginated(18, $commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder());
$data = array_merge($commonData, ['shelves' => $shelves]);
return view('home.shelves', $data);
}
if ($homepageOption === 'books') {
- $bookRepo = app(BookRepo::class);
- $books = $bookRepo->getAllPaginated(18, $commonData['sort'], $commonData['order']);
+ $books = app(BookRepo::class)->getAllPaginated(18, $commonData['listOptions']->getSort(), $commonData['listOptions']->getOrder());
$data = array_merge($commonData, ['books' => $books]);
return view('home.books', $data);
{
return response()->view('errors.404', [], 404);
}
+
+ /**
+ * Serve the application favicon.
+ * Ensures a 'favicon.ico' file exists at the web root location (if writable) to be served
+ * directly by the webserver in the future.
+ */
+ public function favicon(FaviconHandler $favicons)
+ {
+ $exists = $favicons->restoreOriginalIfNotExists();
+ return response()->file($exists ? $favicons->getPath() : $favicons->getOriginalPath());
+ }
}