]> BookStack Code Mirror - bookstack/commitdiff
Added recent pages to home view and made the home content more compact
authorDan Brown <redacted>
Sat, 20 Feb 2016 12:37:06 +0000 (12:37 +0000)
committerDan Brown <redacted>
Sat, 20 Feb 2016 12:37:06 +0000 (12:37 +0000)
app/Http/Controllers/HomeController.php
app/Repos/EntityRepo.php [new file with mode: 0644]
app/Repos/UserRepo.php
app/Services/EntityService.php [deleted file]
resources/assets/js/global.js
resources/assets/sass/_lists.scss
resources/views/home.blade.php
resources/views/partials/entity-list.blade.php

index 8fd1c10095f4ab4ebda488c990ee12a463aa4d58..e20c89e06339c41ab3c472d31c24ec38300f13df 100644 (file)
@@ -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 (file)
index 0000000..28942d9
--- /dev/null
@@ -0,0 +1,71 @@
+<?php namespace BookStack\Repos;
+
+
+use BookStack\Book;
+use BookStack\Chapter;
+use BookStack\Page;
+
+class EntityRepo
+{
+
+    public $book;
+    public $chapter;
+    public $page;
+
+    /**
+     * EntityService constructor.
+     * @param $book
+     * @param $chapter
+     * @param $page
+     */
+    public function __construct(Book $book, Chapter $chapter, Page $page)
+    {
+        $this->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
index d430616f5e6f3abc8534f0d1f85ec7361ae62e4e..48541a51aa341aeb576dab3ef91056bee8d1b39b 100644 (file)
@@ -1,11 +1,7 @@
 <?php namespace BookStack\Repos;
 
-
-use BookStack\Page;
 use BookStack\Role;
-use BookStack\Services\EntityService;
 use BookStack\User;
-use Carbon\Carbon;
 use Setting;
 
 class UserRepo
@@ -13,19 +9,19 @@ class UserRepo
 
     protected $user;
     protected $role;
-    protected $entityService;
+    protected $entityRepo;
 
     /**
      * UserRepo constructor.
      * @param User $user
      * @param Role $role
-     * @param EntityService $entityService
+     * @param EntityRepo $entityRepo
      */
-    public function __construct(User $user, Role $role, EntityService $entityService)
+    public function __construct(User $user, Role $role, EntityRepo $entityRepo)
     {
         $this->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 (file)
index d7be4f9..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?php namespace BookStack\Services;
-
-
-use BookStack\Book;
-use BookStack\Chapter;
-use BookStack\Page;
-
-class EntityService
-{
-
-    public $book;
-    public $chapter;
-    public $page;
-
-    /**
-     * EntityService constructor.
-     * @param $book
-     * @param $chapter
-     * @param $page
-     */
-    public function __construct(Book $book, Chapter $chapter, Page $page)
-    {
-        $this->book = $book;
-        $this->chapter = $chapter;
-        $this->page = $page;
-    }
-
-
-}
\ No newline at end of file
index a61299d215f9cb445d92286d549b86012b80ed59..90b03e8568ed3593583a85635cc812e653890b40 100644 (file)
@@ -106,6 +106,12 @@ $(function () {
         }
     });
 
+    // Common jQuery actions
+    $('[data-action="expand-entity-list-details"]').click(function() {
+        $('.entity-list.compact').find('p').slideToggle(240);
+    });
+
+
 });
 
 
index da34c8f61b4ef900d2a3839e37fb1c8bc336bc62..d3f68ca2e60c0427201b92afb7d364729308301f 100644 (file)
@@ -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
index f71d0c492a5ed62c357c855b4bde97a0be2be3f4..daed0e975dd3820ce987074dcdc8d0a849706fac 100644 (file)
@@ -2,20 +2,43 @@
 
 @section('content')
 
+    <div class="faded-small toolbar">
+        <div class="container">
+            <div class="row">
+                <div class="col-sm-4 faded">
+                    <div class="action-buttons text-left">
+                        <a data-action="expand-entity-list-details" class="text-primary text-button"><i class="zmdi zmdi-wrap-text"></i>Toggle Details</a>
+                    </div>
+                </div>
+                <div class="col-sm-8 faded">
+                    <div class="action-buttons">
+
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
     <div class="container" ng-non-bindable>
         <div class="row">
 
-            <div class="col-md-7">
+            <div class="col-sm-4">
                 @if($signedIn)
-                    <h2>My Recently Viewed</h2>
+                    <h3>My Recently Viewed</h3>
                 @else
-                    <h2>Recent Books</h2>
+                    <h3>Recent Books</h3>
                 @endif
-                @include('partials/entity-list', ['entities' => $recents])
+                @include('partials/entity-list', ['entities' => $recents, 'size' => 'compact'])
+            </div>
+
+            <div class="col-sm-4">
+                <h3>Recently Created Pages</h3>
+                @include('partials/entity-list', ['entities' => $recentlyCreatedPages, 'size' => 'compact'])
+                <h3>Recently Updated Pages</h3>
+                @include('partials/entity-list', ['entities' => $recentlyCreatedPages, 'size' => 'compact'])
             </div>
 
-            <div class="col-md-4 col-md-offset-1" id="recent-activity">
-                <div class="margin-top large">&nbsp;</div>
+            <div class="col-sm-4" id="recent-activity">
                 <h3>Recent Activity</h3>
                 @include('partials/activity-list', ['activity' => $activity])
             </div>
index a357a70fa05bf6044ee9d786d42659624b947afc..729f346e3004f8225e4b1939174d74794332dae2 100644 (file)
@@ -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
+<div class="entity-list @if(isset($size)){{ $size }}@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)
-            <hr>
-        @endif
+            @if($index !== count($entities) - 1)
+                <hr>
+            @endif
 
-    @endforeach
-@else
-    <p class="text-muted">
-        No items available
-    </p>
-@endif
\ No newline at end of file
+        @endforeach
+    @else
+        <p class="text-muted">
+            No items available
+        </p>
+    @endif
+</div>
\ No newline at end of file