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 82% 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 @@