From 1e0aa7ee2cf88c53e110ffc0ee51884c37b7509c Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 23 May 2021 13:34:08 +0100 Subject: [PATCH] Added favourites page with link from header and home --- app/Entities/Queries/TopFavourites.php | 8 +++----- app/Http/Controllers/FavouriteController.php | 19 +++++++++++++++++++ app/Http/Controllers/HomeController.php | 6 +++--- app/Http/Controllers/PageController.php | 4 ++-- resources/lang/en/entities.php | 1 + .../detailed-listing-paginated.blade.php} | 4 ++-- .../detailed-listing-with-more.blade.php | 19 +++++++++++++++++++ resources/views/common/header.blade.php | 3 +++ resources/views/common/home-sidebar.blade.php | 4 +++- resources/views/common/home.blade.php | 4 +++- routes/web.php | 1 + 11 files changed, 59 insertions(+), 14 deletions(-) rename resources/views/{pages/detailed-listing.blade.php => common/detailed-listing-paginated.blade.php} (83%) create mode 100644 resources/views/common/detailed-listing-with-more.blade.php diff --git a/app/Entities/Queries/TopFavourites.php b/app/Entities/Queries/TopFavourites.php index aaacdc5ad..a527c2a4e 100644 --- a/app/Entities/Queries/TopFavourites.php +++ b/app/Entities/Queries/TopFavourites.php @@ -1,13 +1,12 @@ isDefault()) { @@ -26,11 +25,10 @@ class TopFavourites extends EntityQuery ->orderBy('view_count', 'desc'); return $query->with('viewable') - ->skip($count * ($page - 1)) + ->skip($skip) ->take($count) ->get() ->pluck('viewable') ->filter(); } - -} \ No newline at end of file +} diff --git a/app/Http/Controllers/FavouriteController.php b/app/Http/Controllers/FavouriteController.php index 8a26eac8e..f4aeb4faa 100644 --- a/app/Http/Controllers/FavouriteController.php +++ b/app/Http/Controllers/FavouriteController.php @@ -3,12 +3,31 @@ namespace BookStack\Http\Controllers; use BookStack\Entities\Models\Entity; +use BookStack\Entities\Queries\TopFavourites; use BookStack\Interfaces\Favouritable; use BookStack\Model; use Illuminate\Http\Request; class FavouriteController extends Controller { + /** + * Show a listing of all favourite items for the current user. + */ + public function index(Request $request) + { + $viewCount = 20; + $page = intval($request->get('page', 1)); + $favourites = (new TopFavourites)->run($viewCount + 1, (($page - 1) * $viewCount)); + + $hasMoreLink = ($favourites->count() > $viewCount) ? url("/favourites?page=" . ($page+1)) : null; + + return view('common.detailed-listing-with-more', [ + 'title' => trans('entities.my_favourites'), + 'entities' => $favourites->slice(0, $viewCount), + 'hasMoreLink' => $hasMoreLink, + ]); + } + /** * Add a new item as a favourite. */ diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index f5ab21204..7bc170526 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -35,11 +35,11 @@ class HomeController extends Controller $recents = $this->isSignedIn() ? (new RecentlyViewed)->run(12*$recentFactor, 1) : Book::visible()->orderBy('created_at', 'desc')->take(12 * $recentFactor)->get(); - $faviourites = (new TopFavourites)->run(6, 1); + $favourites = (new TopFavourites)->run(6); $recentlyUpdatedPages = Page::visible()->with('book') ->where('draft', false) ->orderBy('updated_at', 'desc') - ->take($faviourites->count() > 0 ? 6 : 12) + ->take($favourites->count() > 0 ? 6 : 12) ->get(); $homepageOptions = ['default', 'books', 'bookshelves', 'page']; @@ -53,7 +53,7 @@ class HomeController extends Controller 'recents' => $recents, 'recentlyUpdatedPages' => $recentlyUpdatedPages, 'draftPages' => $draftPages, - 'favourites' => $faviourites, + 'favourites' => $favourites, ]; // Add required list ordering & sorting for books & shelves views. diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 769ea8e69..134c22081 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -338,9 +338,9 @@ class PageController extends Controller ->paginate(20) ->setPath(url('/pages/recently-updated')); - return view('pages.detailed-listing', [ + return view('common.detailed-listing-paginated', [ 'title' => trans('entities.recently_updated_pages'), - 'pages' => $pages + 'entities' => $pages ]); } diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index 6c3341368..462402f33 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -28,6 +28,7 @@ return [ 'my_recent_drafts' => 'My Recent Drafts', 'my_recently_viewed' => 'My Recently Viewed', 'my_most_viewed_favourites' => 'My Most Viewed Favourites', + 'my_favourites' => 'My Favourites', 'no_pages_viewed' => 'You have not viewed any pages', 'no_pages_recently_created' => 'No pages have been recently created', 'no_pages_recently_updated' => 'No pages have been recently updated', diff --git a/resources/views/pages/detailed-listing.blade.php b/resources/views/common/detailed-listing-paginated.blade.php similarity index 83% rename from resources/views/pages/detailed-listing.blade.php rename to resources/views/common/detailed-listing-paginated.blade.php index c2bbdb537..af9490a41 100644 --- a/resources/views/pages/detailed-listing.blade.php +++ b/resources/views/common/detailed-listing-paginated.blade.php @@ -6,11 +6,11 @@

{{ $title }}

- @include('partials.entity-list', ['entities' => $pages, 'style' => 'detailed']) + @include('partials.entity-list', ['entities' => $entities, 'style' => 'detailed'])
- {!! $pages->links() !!} + {!! $entities->links() !!}
diff --git a/resources/views/common/detailed-listing-with-more.blade.php b/resources/views/common/detailed-listing-with-more.blade.php new file mode 100644 index 000000000..5790f2065 --- /dev/null +++ b/resources/views/common/detailed-listing-with-more.blade.php @@ -0,0 +1,19 @@ +@extends('simple-layout') + +@section('body') +
+
+

{{ $title }}

+ +
+ @include('partials.entity-list', ['entities' => $entities, 'style' => 'detailed']) +
+ +
+ @if($hasMoreLink) + {{ trans('common.more') }} + @endif +
+
+
+@stop \ No newline at end of file diff --git a/resources/views/common/header.blade.php b/resources/views/common/header.blade.php index 4799aba24..274a09996 100644 --- a/resources/views/common/header.blade.php +++ b/resources/views/common/header.blade.php @@ -61,6 +61,9 @@ {{ $currentUser->getShortName(9) }} @icon('caret-down')