diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 8fd1c1009..e20c89e06 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -3,25 +3,21 @@ namespace BookStack\Http\Controllers; use Activity; -use Illuminate\Http\Request; - +use BookStack\Repos\EntityRepo; use BookStack\Http\Requests; -use BookStack\Repos\BookRepo; use Views; class HomeController extends Controller { - - protected $activityService; - protected $bookRepo; + protected $entityRepo; /** * HomeController constructor. - * @param BookRepo $bookRepo + * @param EntityRepo $entityRepo */ - public function __construct(BookRepo $bookRepo) + public function __construct(EntityRepo $entityRepo) { - $this->bookRepo = $bookRepo; + $this->entityRepo = $entityRepo; parent::__construct(); } @@ -33,9 +29,16 @@ class HomeController extends Controller */ public function index() { - $activity = Activity::latest(); - $recents = $this->signedIn ? Views::getUserRecentlyViewed(10, 0) : $this->bookRepo->getLatest(10); - return view('home', ['activity' => $activity, 'recents' => $recents]); + $activity = Activity::latest(10); + $recents = $this->signedIn ? Views::getUserRecentlyViewed(12, 0) : $this->entityRepo->getRecentlyCreatedBooks(10); + $recentlyCreatedPages = $this->entityRepo->getRecentlyCreatedPages(5); + $recentlyUpdatedPages = $this->entityRepo->getRecentlyUpdatedPages(5); + return view('home', [ + 'activity' => $activity, + 'recents' => $recents, + 'recentlyCreatedPages' => $recentlyCreatedPages, + 'recentlyUpdatedPages' => $recentlyUpdatedPages + ]); } } diff --git a/app/Repos/EntityRepo.php b/app/Repos/EntityRepo.php new file mode 100644 index 000000000..28942d94a --- /dev/null +++ b/app/Repos/EntityRepo.php @@ -0,0 +1,71 @@ +book = $book; + $this->chapter = $chapter; + $this->page = $page; + } + + /** + * Get the latest books added to the system. + * @param $count + * @param $page + */ + public function getRecentlyCreatedBooks($count = 20, $page = 0) + { + return $this->book->orderBy('created_at', 'desc')->skip($page*$count)->take($count)->get(); + } + + /** + * Get the most recently updated books. + * @param $count + * @param int $page + * @return mixed + */ + public function getRecentlyUpdatedBooks($count = 20, $page = 0) + { + return $this->book->orderBy('updated_at', 'desc')->skip($page*$count)->take($count)->get(); + } + + /** + * Get the latest pages added to the system. + * @param $count + * @param $page + */ + public function getRecentlyCreatedPages($count = 20, $page = 0) + { + return $this->page->orderBy('created_at', 'desc')->skip($page*$count)->take($count)->get(); + } + + /** + * Get the most recently updated pages. + * @param $count + * @param int $page + * @return mixed + */ + public function getRecentlyUpdatedPages($count = 20, $page = 0) + { + return $this->page->orderBy('updated_at', 'desc')->skip($page*$count)->take($count)->get(); + } + + +} \ No newline at end of file diff --git a/app/Repos/UserRepo.php b/app/Repos/UserRepo.php index d430616f5..48541a51a 100644 --- a/app/Repos/UserRepo.php +++ b/app/Repos/UserRepo.php @@ -1,11 +1,7 @@ user = $user; $this->role = $role; - $this->entityService = $entityService; + $this->entityRepo = $entityRepo; } /** @@ -141,11 +137,11 @@ class UserRepo public function getRecentlyCreated(User $user, $count = 20) { return [ - 'pages' => $this->entityService->page->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') + 'pages' => $this->entityRepo->page->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') ->take($count)->get(), - 'chapters' => $this->entityService->chapter->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') + 'chapters' => $this->entityRepo->chapter->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') ->take($count)->get(), - 'books' => $this->entityService->book->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') + 'books' => $this->entityRepo->book->where('created_by', '=', $user->id)->orderBy('created_at', 'desc') ->take($count)->get() ]; } @@ -158,9 +154,9 @@ class UserRepo public function getAssetCounts(User $user) { return [ - 'pages' => $this->entityService->page->where('created_by', '=', $user->id)->count(), - 'chapters' => $this->entityService->chapter->where('created_by', '=', $user->id)->count(), - 'books' => $this->entityService->book->where('created_by', '=', $user->id)->count(), + 'pages' => $this->entityRepo->page->where('created_by', '=', $user->id)->count(), + 'chapters' => $this->entityRepo->chapter->where('created_by', '=', $user->id)->count(), + 'books' => $this->entityRepo->book->where('created_by', '=', $user->id)->count(), ]; } diff --git a/app/Services/EntityService.php b/app/Services/EntityService.php deleted file mode 100644 index d7be4f96e..000000000 --- a/app/Services/EntityService.php +++ /dev/null @@ -1,29 +0,0 @@ -book = $book; - $this->chapter = $chapter; - $this->page = $page; - } - - -} \ No newline at end of file diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index a61299d21..90b03e856 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -106,6 +106,12 @@ $(function () { } }); + // Common jQuery actions + $('[data-action="expand-entity-list-details"]').click(function() { + $('.entity-list.compact').find('p').slideToggle(240); + }); + + }); diff --git a/resources/assets/sass/_lists.scss b/resources/assets/sass/_lists.scss index da34c8f61..d3f68ca2e 100644 --- a/resources/assets/sass/_lists.scss +++ b/resources/assets/sass/_lists.scss @@ -283,4 +283,26 @@ ul.pagination { a { color: $primary; } +} + +.entity-list.compact { + font-size: 0.6em; + > div { + padding: $-m 0; + } + h3, a { + line-height: 1.2; + } + h3 { + margin: 0; + } + p { + display: none; + font-size: $fs-m * 0.8; + padding-top: $-xs; + margin: 0; + } + hr { + margin: 0; + } } \ No newline at end of file diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php index f71d0c492..daed0e975 100644 --- a/resources/views/home.blade.php +++ b/resources/views/home.blade.php @@ -2,20 +2,43 @@ @section('content') +
+
+
+
+ +
+
+
+ +
+
+
+
+
+
-
+
@if($signedIn) -

My Recently Viewed

+

My Recently Viewed

@else -

Recent Books

+

Recent Books

@endif - @include('partials/entity-list', ['entities' => $recents]) + @include('partials/entity-list', ['entities' => $recents, 'size' => 'compact'])
-
-
 
+
+

Recently Created Pages

+ @include('partials/entity-list', ['entities' => $recentlyCreatedPages, 'size' => 'compact']) +

Recently Updated Pages

+ @include('partials/entity-list', ['entities' => $recentlyCreatedPages, 'size' => 'compact']) +
+ +

Recent Activity

@include('partials/activity-list', ['activity' => $activity])
diff --git a/resources/views/partials/entity-list.blade.php b/resources/views/partials/entity-list.blade.php index a357a70fa..729f346e3 100644 --- a/resources/views/partials/entity-list.blade.php +++ b/resources/views/partials/entity-list.blade.php @@ -1,21 +1,23 @@ -@if(count($entities) > 0) - @foreach($entities as $index => $entity) - @if($entity->isA('page')) - @include('pages/list-item', ['page' => $entity]) - @elseif($entity->isA('book')) - @include('books/list-item', ['book' => $entity]) - @elseif($entity->isA('chapter')) - @include('chapters/list-item', ['chapter' => $entity, 'hidePages' => true]) - @endif +
+ @if(count($entities) > 0) + @foreach($entities as $index => $entity) + @if($entity->isA('page')) + @include('pages/list-item', ['page' => $entity]) + @elseif($entity->isA('book')) + @include('books/list-item', ['book' => $entity]) + @elseif($entity->isA('chapter')) + @include('chapters/list-item', ['chapter' => $entity, 'hidePages' => true]) + @endif - @if($index !== count($entities) - 1) -
- @endif + @if($index !== count($entities) - 1) +
+ @endif - @endforeach -@else -

- No items available -

-@endif \ No newline at end of file + @endforeach + @else +

+ No items available +

+ @endif +
\ No newline at end of file