Added content to user profile pages
This commit is contained in:
		
							parent
							
								
									4442a2e6d1
								
							
						
					
					
						commit
						4d9726dbdd
					
				| 
						 | 
					@ -209,7 +209,13 @@ class UserController extends Controller
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $user = $this->userRepo->getById($id);
 | 
					        $user = $this->userRepo->getById($id);
 | 
				
			||||||
        $userActivity = $this->userRepo->getActivity($user);
 | 
					        $userActivity = $this->userRepo->getActivity($user);
 | 
				
			||||||
        $recentPages = $this->userRepo->getCreatedPages($user, 5, 0);
 | 
					        $recentlyCreated = $this->userRepo->getRecentlyCreated($user, 5, 0);
 | 
				
			||||||
        return view('users/profile', ['user' => $user, 'activity' => $userActivity, 'recentPages' => $recentPages]);
 | 
					        $assetCounts = $this->userRepo->getAssetCounts($user);
 | 
				
			||||||
 | 
					        return view('users/profile', [
 | 
				
			||||||
 | 
					            'user' => $user,
 | 
				
			||||||
 | 
					            'activity' => $userActivity,
 | 
				
			||||||
 | 
					            'recentlyCreated' => $recentlyCreated,
 | 
				
			||||||
 | 
					            'assetCounts' => $assetCounts
 | 
				
			||||||
 | 
					        ]);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ use BookStack\Page;
 | 
				
			||||||
use BookStack\Role;
 | 
					use BookStack\Role;
 | 
				
			||||||
use BookStack\Services\EntityService;
 | 
					use BookStack\Services\EntityService;
 | 
				
			||||||
use BookStack\User;
 | 
					use BookStack\User;
 | 
				
			||||||
 | 
					use Carbon\Carbon;
 | 
				
			||||||
use Setting;
 | 
					use Setting;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UserRepo
 | 
					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 User $user
 | 
				
			||||||
     * @param int $count
 | 
					     * @param int $count
 | 
				
			||||||
     * @param int $page
 | 
					 | 
				
			||||||
     * @return mixed
 | 
					     * @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')
 | 
					        return [
 | 
				
			||||||
            ->skip($page * $count)->take($count)->get();
 | 
					            '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.
 | 
					     * Get asset created counts for the give user.
 | 
				
			||||||
 | 
					     * @param User $user
 | 
				
			||||||
     * @return array
 | 
					     * @return array
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public function getAssetCounts(User $user)
 | 
					    public function getAssetCounts(User $user)
 | 
				
			||||||
| 
						 | 
					@ -156,4 +163,5 @@ class UserRepo
 | 
				
			||||||
            'books' => $this->entityService->book->where('created_by', '=', $user->id)->count(),
 | 
					            'books' => $this->entityService->book->where('created_by', '=', $user->id)->count(),
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -251,6 +251,13 @@ ol {
 | 
				
			||||||
  text-align: right;
 | 
					  text-align: right;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.text-bigger {
 | 
				
			||||||
 | 
					  font-size: 1.1em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.text-large {
 | 
				
			||||||
 | 
					  font-size: 1.6666em;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Grouping
 | 
					 * Grouping
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,13 @@ body.dragging, body.dragging * {
 | 
				
			||||||
    width: 80px;
 | 
					    width: 80px;
 | 
				
			||||||
    height: 80px;
 | 
					    height: 80px;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  &.huge {
 | 
				
			||||||
 | 
					    width: 120px;
 | 
				
			||||||
 | 
					    height: 120px;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  &.square {
 | 
				
			||||||
 | 
					    border-radius: 3px;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// System wide notifications
 | 
					// System wide notifications
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,10 +58,13 @@
 | 
				
			||||||
                                </span>
 | 
					                                </span>
 | 
				
			||||||
                                <ul>
 | 
					                                <ul>
 | 
				
			||||||
                                    <li>
 | 
					                                    <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>
 | 
				
			||||||
                                    <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>
 | 
					                                    </li>
 | 
				
			||||||
                                </ul>
 | 
					                                </ul>
 | 
				
			||||||
                            </div>
 | 
					                            </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<div class="right" ng-non-bindable>
 | 
					<div class="right" ng-non-bindable>
 | 
				
			||||||
    @if($activity->user)
 | 
					    @if($activity->user)
 | 
				
			||||||
        {{$activity->user->name}}
 | 
					        <a href="/user/{{ $activity->user->id }}">{{$activity->user->name}}</a>
 | 
				
			||||||
    @else
 | 
					    @else
 | 
				
			||||||
        A deleted user
 | 
					        A deleted user
 | 
				
			||||||
    @endif
 | 
					    @endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,18 +4,68 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="container" ng-non-bindable>
 | 
					    <div class="container" ng-non-bindable>
 | 
				
			||||||
        <div class="row">
 | 
					        <div class="row">
 | 
				
			||||||
            <div class="col-sm-8">
 | 
					            <div class="col-sm-7">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <div class="padded-top large"></div>
 | 
					                <div class="padded-top large"></div>
 | 
				
			||||||
                <img class="" src="{{$user->getAvatar(120)}}" alt="{{ $user->name }}">
 | 
					 | 
				
			||||||
                <h3>{{ $user->name }}</h3>
 | 
					 | 
				
			||||||
                <p class="text-muted">
 | 
					 | 
				
			||||||
                    User for {{ $user->created_at->diffForHumans(null, true) }}
 | 
					 | 
				
			||||||
                </p>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <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>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class="col-sm-4">
 | 
					            <div class="col-sm-4 col-sm-offset-1">
 | 
				
			||||||
                <h3>Recent Activity</h3>
 | 
					                <h3>Recent Activity</h3>
 | 
				
			||||||
                @include('partials/activity-list', ['activity' => $activity])
 | 
					                @include('partials/activity-list', ['activity' => $activity])
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue