From 17969c0bbfbb96911405a9911f99bb56c1a968c7 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 6 Apr 2019 16:21:20 +0100 Subject: [PATCH] Added shelves and search shortcuts to profile page --- app/Auth/UserRepo.php | 23 +++---- app/Http/Controllers/UserController.php | 12 ++-- resources/lang/en/common.php | 1 + resources/lang/en/entities.php | 3 + resources/views/users/profile.blade.php | 83 +++++++++++++++++-------- 5 files changed, 81 insertions(+), 41 deletions(-) diff --git a/app/Auth/UserRepo.php b/app/Auth/UserRepo.php index b2ff0bc58..1a73d0072 100644 --- a/app/Auth/UserRepo.php +++ b/app/Auth/UserRepo.php @@ -6,6 +6,7 @@ use BookStack\Exceptions\NotFoundException; use BookStack\Exceptions\UserUpdateException; use BookStack\Uploads\Image; use Exception; +use Illuminate\Database\Eloquent\Builder; use Images; class UserRepo @@ -48,7 +49,7 @@ class UserRepo /** * Get all the users with their permissions. - * @return \Illuminate\Database\Eloquent\Builder|static + * @return Builder|static */ public function getAllUsers() { @@ -59,7 +60,7 @@ class UserRepo * Get all the users with their permissions in a paginated format. * @param int $count * @param $sortData - * @return \Illuminate\Database\Eloquent\Builder|static + * @return Builder|static */ public function getAllUsersPaginatedAndSorted($count, $sortData) { @@ -223,16 +224,15 @@ class UserRepo */ public function getRecentlyCreated(User $user, $count = 20) { + $createdByUserQuery = function(Builder $query) use ($user) { + $query->where('created_by', '=', $user->id); + }; + return [ - 'pages' => $this->entityRepo->getRecentlyCreated('page', $count, 0, function ($query) use ($user) { - $query->where('created_by', '=', $user->id); - }), - 'chapters' => $this->entityRepo->getRecentlyCreated('chapter', $count, 0, function ($query) use ($user) { - $query->where('created_by', '=', $user->id); - }), - 'books' => $this->entityRepo->getRecentlyCreated('book', $count, 0, function ($query) use ($user) { - $query->where('created_by', '=', $user->id); - }) + 'pages' => $this->entityRepo->getRecentlyCreated('page', $count, 0, $createdByUserQuery), + 'chapters' => $this->entityRepo->getRecentlyCreated('chapter', $count, 0, $createdByUserQuery), + 'books' => $this->entityRepo->getRecentlyCreated('book', $count, 0, $createdByUserQuery), + 'shelves' => $this->entityRepo->getRecentlyCreated('bookshelf', $count, 0, $createdByUserQuery) ]; } @@ -247,6 +247,7 @@ class UserRepo 'pages' => $this->entityRepo->getUserTotalCreated('page', $user), 'chapters' => $this->entityRepo->getUserTotalCreated('chapter', $user), 'books' => $this->entityRepo->getUserTotalCreated('book', $user), + 'shelves' => $this->entityRepo->getUserTotalCreated('bookshelf', $user), ]; } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 327a54995..63de0bc44 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -41,7 +41,7 @@ class UserController extends Controller $users = $this->userRepo->getAllUsersPaginatedAndSorted(20, $listDetails); $this->setPageTitle(trans('settings.users')); $users->appends($listDetails); - return view('users/index', ['users' => $users, 'listDetails' => $listDetails]); + return view('users.index', ['users' => $users, 'listDetails' => $listDetails]); } /** @@ -53,7 +53,7 @@ class UserController extends Controller $this->checkPermission('users-manage'); $authMethod = config('auth.method'); $roles = $this->userRepo->getAllRoles(); - return view('users/create', ['authMethod' => $authMethod, 'roles' => $roles]); + return view('users.create', ['authMethod' => $authMethod, 'roles' => $roles]); } /** @@ -118,7 +118,7 @@ class UserController extends Controller $activeSocialDrivers = $socialAuthService->getActiveDrivers(); $this->setPageTitle(trans('settings.user_profile')); $roles = $this->userRepo->getAllRoles(); - return view('users/edit', ['user' => $user, 'activeSocialDrivers' => $activeSocialDrivers, 'authMethod' => $authMethod, 'roles' => $roles]); + return view('users.edit', ['user' => $user, 'activeSocialDrivers' => $activeSocialDrivers, 'authMethod' => $authMethod, 'roles' => $roles]); } /** @@ -190,7 +190,7 @@ class UserController extends Controller $user = $this->userRepo->getById($id); $this->setPageTitle(trans('settings.users_delete_named', ['userName' => $user->name])); - return view('users/delete', ['user' => $user]); + return view('users.delete', ['user' => $user]); } /** @@ -232,10 +232,12 @@ class UserController extends Controller public function showProfilePage($id) { $user = $this->userRepo->getById($id); + $userActivity = $this->userRepo->getActivity($user); $recentlyCreated = $this->userRepo->getRecentlyCreated($user, 5, 0); $assetCounts = $this->userRepo->getAssetCounts($user); - return view('users/profile', [ + + return view('users.profile', [ 'user' => $user, 'activity' => $userActivity, 'recentlyCreated' => $recentlyCreated, diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index 1f71c3272..332a9a6d9 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -23,6 +23,7 @@ return [ // Actions 'actions' => 'Actions', 'view' => 'View', + 'view_all' => 'View All', 'create' => 'Create', 'update' => 'Update', 'edit' => 'Edit', diff --git a/resources/lang/en/entities.php b/resources/lang/en/entities.php index dffea3e75..0b5eab73b 100644 --- a/resources/lang/en/entities.php +++ b/resources/lang/en/entities.php @@ -11,6 +11,7 @@ return [ 'recently_updated_pages' => 'Recently Updated Pages', 'recently_created_chapters' => 'Recently Created Chapters', 'recently_created_books' => 'Recently Created Books', + 'recently_created_shelves' => 'Recently Created Shelves', 'recently_update' => 'Recently Updated', 'recently_viewed' => 'Recently Viewed', 'recent_activity' => 'Recent Activity', @@ -67,6 +68,7 @@ return [ // Shelves 'shelf' => 'Shelf', 'shelves' => 'Shelves', + 'x_shelves' => ':count Shelf|:count Shelves', 'shelves_long' => 'Bookshelves', 'shelves_empty' => 'No shelves have been created', 'shelves_create' => 'Create New Shelf', @@ -274,6 +276,7 @@ return [ 'profile_not_created_pages' => ':userName has not created any pages', 'profile_not_created_chapters' => ':userName has not created any chapters', 'profile_not_created_books' => ':userName has not created any books', + 'profile_not_created_shelves' => ':userName has not created any shelves', // Comments 'comment' => 'Comment', diff --git a/resources/views/users/profile.blade.php b/resources/views/users/profile.blade.php index f41754498..bfa749ed9 100644 --- a/resources/views/users/profile.blade.php +++ b/resources/views/users/profile.blade.php @@ -1,9 +1,5 @@ @extends('simple-layout') -{{--TODO - Include links to search based on this user being the creator for each entity type--}} -{{--Linking either the "Created content" items or as "View All" links next to headers--}} -{{--TODO - Add shelves?--}} - @section('body')
@@ -13,13 +9,13 @@
{{ trans('entities.recent_activity') }}
- @include('partials/activity-list', ['activity' => $activity]) + @include('partials.activity-list', ['activity' => $activity])
-
+
{{ $user->name }} @@ -33,19 +29,27 @@
-

{{ trans('entities.recently_created_pages') }}

+

+ {{ trans('entities.recently_created_pages') }} + @if (count($recentlyCreated['pages']) > 0) + {{ trans('common.view_all') }} + @endif +

@if (count($recentlyCreated['pages']) > 0) - @include('partials/entity-list', ['entities' => $recentlyCreated['pages']]) + @include('partials.entity-list', ['entities' => $recentlyCreated['pages'], 'showPath' => true]) @else

{{ trans('entities.profile_not_created_pages', ['userName' => $user->name]) }}

@endif
-

{{ trans('entities.recently_created_chapters') }}

+

+ {{ trans('entities.recently_created_chapters') }} + @if (count($recentlyCreated['chapters']) > 0) + {{ trans('common.view_all') }} + @endif +

@if (count($recentlyCreated['chapters']) > 0) - @include('partials/entity-list', ['entities' => $recentlyCreated['chapters']]) + @include('partials.entity-list', ['entities' => $recentlyCreated['chapters'], 'showPath' => true]) @else

{{ trans('entities.profile_not_created_chapters', ['userName' => $user->name]) }}

@endif
-

{{ trans('entities.recently_created_books') }}

+

+ {{ trans('entities.recently_created_books') }} + @if (count($recentlyCreated['books']) > 0) + {{ trans('common.view_all') }} + @endif +

@if (count($recentlyCreated['books']) > 0) - @include('partials/entity-list', ['entities' => $recentlyCreated['books']]) + @include('partials.entity-list', ['entities' => $recentlyCreated['books'], 'showPath' => true]) @else

{{ trans('entities.profile_not_created_books', ['userName' => $user->name]) }}

@endif
+ +
+

+ {{ trans('entities.recently_created_shelves') }} + @if (count($recentlyCreated['shelves']) > 0) + {{ trans('common.view_all') }} + @endif +

+ @if (count($recentlyCreated['shelves']) > 0) + @include('partials.entity-list', ['entities' => $recentlyCreated['shelves'], 'showPath' => true]) + @else +

{{ trans('entities.profile_not_created_shelves', ['userName' => $user->name]) }}

+ @endif +