X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/d3a96451614201ca1b92bd3dffa9726d0b48a203..refs/pull/4191/head:/app/Http/Controllers/HomeController.php diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 5451c0abf..a82710523 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -2,7 +2,7 @@ namespace BookStack\Http\Controllers; -use Activity; +use BookStack\Actions\ActivityQueries; use BookStack\Entities\Models\Book; use BookStack\Entities\Models\Page; use BookStack\Entities\Queries\RecentlyViewed; @@ -10,15 +10,18 @@ use BookStack\Entities\Queries\TopFavourites; 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() + public function index(Request $request, ActivityQueries $activities) { - $activity = Activity::latest(10); + $activity = $activities->latest(10); $draftPages = []; if ($this->isSignedIn()) { @@ -39,7 +42,7 @@ class HomeController extends Controller $recentlyUpdatedPages = Page::visible()->with('book') ->where('draft', false) ->orderBy('updated_at', 'desc') - ->take($favourites->count() > 0 ? 6 : 12) + ->take($favourites->count() > 0 ? 5 : 10) ->select(Page::$listAttributes) ->get(); @@ -61,33 +64,27 @@ class HomeController extends Controller 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); @@ -107,14 +104,6 @@ class HomeController extends Controller return view('home.default', $commonData); } - /** - * Get custom head HTML, Used in ajax calls to show in editor. - */ - public function customHeadContent() - { - return view('common.custom-head'); - } - /** * Show the view for /robots.txt. */ @@ -139,4 +128,15 @@ class HomeController extends Controller { 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()); + } }