Added content to user profile pages

This commit is contained in:
Dan Brown 2016-02-17 22:11:48 +00:00
parent 4442a2e6d1
commit 4d9726dbdd
7 changed files with 98 additions and 17 deletions

View File

@ -209,7 +209,13 @@ class UserController extends Controller
{
$user = $this->userRepo->getById($id);
$userActivity = $this->userRepo->getActivity($user);
$recentPages = $this->userRepo->getCreatedPages($user, 5, 0);
return view('users/profile', ['user' => $user, 'activity' => $userActivity, 'recentPages' => $recentPages]);
$recentlyCreated = $this->userRepo->getRecentlyCreated($user, 5, 0);
$assetCounts = $this->userRepo->getAssetCounts($user);
return view('users/profile', [
'user' => $user,
'activity' => $userActivity,
'recentlyCreated' => $recentlyCreated,
'assetCounts' => $assetCounts
]);
}
}

View File

@ -5,6 +5,7 @@ use BookStack\Page;
use BookStack\Role;
use BookStack\Services\EntityService;
use BookStack\User;
use Carbon\Carbon;
use Setting;
class UserRepo
@ -132,20 +133,26 @@ class UserRepo
}
/**
* Get the pages the the given user has created.
* Get the recently created content for this given user.
* @param User $user
* @param int $count
* @param int $page
* @return mixed
*/
public function getCreatedPages(User $user, $count = 20, $page = 0)
public function getRecentlyCreated(User $user, $count = 20)
{
return $this->entityService->page->where('created_by', '=', $user->id)->orderBy('created_at', 'desc')
->skip($page * $count)->take($count)->get();
return [
'pages' => $this->entityService->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')
->take($count)->get(),
'books' => $this->entityService->book->where('created_by', '=', $user->id)->orderBy('created_at', 'desc')
->take($count)->get()
];
}
/**
* Get asset created counts for the give user.
* @param User $user
* @return array
*/
public function getAssetCounts(User $user)
@ -156,4 +163,5 @@ class UserRepo
'books' => $this->entityService->book->where('created_by', '=', $user->id)->count(),
];
}
}

View File

@ -251,6 +251,13 @@ ol {
text-align: right;
}
.text-bigger {
font-size: 1.1em;
}
.text-large {
font-size: 1.6666em;
}
/**
* Grouping
*/

View File

@ -47,6 +47,13 @@ body.dragging, body.dragging * {
width: 80px;
height: 80px;
}
&.huge {
width: 120px;
height: 120px;
}
&.square {
border-radius: 3px;
}
}
// System wide notifications

View File

@ -58,10 +58,13 @@
</span>
<ul>
<li>
<a href="/settings/users/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-lg"></i>Edit Profile</a>
<a href="/user/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>View Profile</a>
</li>
<li>
<a href="/logout" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-lg"></i>Logout</a>
<a href="/settings/users/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>Edit Profile</a>
</li>
<li>
<a href="/logout" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>Logout</a>
</li>
</ul>
</div>

View File

@ -9,7 +9,7 @@
<div class="right" ng-non-bindable>
@if($activity->user)
{{$activity->user->name}}
<a href="/user/{{ $activity->user->id }}">{{$activity->user->name}}</a>
@else
A deleted user
@endif

View File

@ -4,18 +4,68 @@
<div class="container" ng-non-bindable>
<div class="row">
<div class="col-sm-8">
<div class="col-sm-7">
<div class="padded-top large"></div>
<img class="" src="{{$user->getAvatar(120)}}" alt="{{ $user->name }}">
<h3>{{ $user->name }}</h3>
<div class="row">
<div class="col-md-7">
<div class="clearfix">
<div class="padded-right float left">
<img class="avatar square huge" src="{{$user->getAvatar(120)}}" alt="{{ $user->name }}">
</div>
<div>
<h3 style="margin-top: 0;">{{ $user->name }}</h3>
<p class="text-muted">
User for {{ $user->created_at->diffForHumans(null, true) }}
</p>
</div>
</div>
</div>
<div class="col-md-5 text-bigger">
<div class="text-muted">Created Content</div>
<div class="text-book">
<i class="zmdi zmdi-book zmdi-hc-fw"></i> {{ $assetCounts['books'] }} {{ str_plural('Book', $assetCounts['books']) }}
</div>
<div class="text-chapter">
<i class="zmdi zmdi-collection-bookmark zmdi-hc-fw"></i> {{ $assetCounts['chapters'] }} {{ str_plural('Chapter', $assetCounts['chapters']) }}
</div>
<div class="text-page">
<i class="zmdi zmdi-file-text zmdi-hc-fw"></i> {{ $assetCounts['pages'] }} {{ str_plural('Page', $assetCounts['pages']) }}
</div>
</div>
</div>
<div class="col-sm-4">
<hr class="even">
<h3>Recently Created Pages</h3>
@if (count($recentlyCreated['pages']) > 0)
@include('partials/entity-list', ['entities' => $recentlyCreated['pages']])
@else
<p class="text-muted">{{ $user->name }} has not created any pages</p>
@endif
<hr class="even">
<h3>Recently Created Chapters</h3>
@if (count($recentlyCreated['chapters']) > 0)
@include('partials/entity-list', ['entities' => $recentlyCreated['chapters']])
@else
<p class="text-muted">{{ $user->name }} has not created any chapters</p>
@endif
<hr class="even">
<h3>Recently Created Books</h3>
@if (count($recentlyCreated['books']) > 0)
@include('partials/entity-list', ['entities' => $recentlyCreated['books']])
@else
<p class="text-muted">{{ $user->name }} has not created any books</p>
@endif
</div>
<div class="col-sm-4 col-sm-offset-1">
<h3>Recent Activity</h3>
@include('partials/activity-list', ['activity' => $activity])
</div>