]> BookStack Code Mirror - bookstack/commitdiff
Added user avatars. Fixes #20
authorDan Brown <redacted>
Sun, 23 Aug 2015 12:41:35 +0000 (13:41 +0100)
committerDan Brown <redacted>
Sun, 23 Aug 2015 12:41:35 +0000 (13:41 +0100)
app/User.php
resources/assets/sass/_tables.scss
resources/assets/sass/styles.scss
resources/views/base.blade.php
resources/views/pages/revisions.blade.php
resources/views/partials/activity-item.blade.php
resources/views/users/delete.blade.php
resources/views/users/edit.blade.php
resources/views/users/index.blade.php

index 2e37fe484d439f204f166caf2f4c884638bdec07..731b792f56413b06476ec4dd8454ed6e3fdcb328 100644 (file)
@@ -32,4 +32,16 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
      * @var array
      */
     protected $hidden = ['password', 'remember_token'];
+
+    /**
+     * Returns the user's avatar,
+     * Uses Gravatar as the avatar service.
+     * @param int $size
+     * @return string
+     */
+    public function getAvatar($size = 50)
+    {
+        $emailHash = md5(strtolower(trim($this->email)));
+        return '//www.gravatar.com/avatar/' . $emailHash . '?s=' . $size . '&d=identicon';
+    }
 }
index 768eb18e60698210df90924b29688abb067c3222..fe01976ec304f601398a97d16c5472d4ad8bbde9 100644 (file)
@@ -8,6 +8,7 @@ table.table {
     text-align: left;
     border: none;
     padding: $-xs $-xs;
+    vertical-align: middle;
   }
   th {
     font-weight: bold;
index 308dbd1ebd305886c0ffebebdfdff104842eccc2..aea2360a31fa9790695910d84188025c82206bfa 100644 (file)
@@ -46,7 +46,7 @@ header {
 }
 
 .logo-container {
-  padding: $-l $-s;
+  padding: $-l $-s 0 $-s;
   color: #CCC;
   .logo {
     display: block;
@@ -59,6 +59,15 @@ header {
   }
 }
 
+.user-overview {
+  margin-top: $-m;
+  .user-name {
+    display: inline-block;
+    vertical-align: top;
+    padding: $-m $-s;
+  }
+}
+
 
 .search-box {
   input {
@@ -432,4 +441,15 @@ body.dragging, body.dragging * {
   padding: $-s 0;
   color: #888;
   border-bottom: 1px solid #EEE;
+  font-size: 0.9em;
+  .left {
+    float: left;
+  }
+  .left + .right {
+    margin-left: 30px + $-s;
+  }
+}
+
+.avatar {
+  border-radius: 100%;
 }
\ No newline at end of file
index e6c601ef3fcb59ee80ce4516f3080068e44ab24e..cf3957b78c3071012eac2b79a2990f2e3da2273d 100644 (file)
             <div class="padded row clearfix">
                 <div class="col-md-12 logo-container">
                     <a href="/" class="logo">BookStack</a>
-                    <div><i class="zmdi zmdi-account"></i> {{ Auth::user()->name }}</div>
+                    <div class="user-overview">
+                        <img class="avatar" src="{{Auth::user()->getAvatar(50)}}" alt="{{ Auth::user()->name }}">
+                        <span class="user-name">
+                            {{ Auth::user()->name }}
+                        </span>
+                    </div>
                 </div>
             </div>
         </header>
index 03ed0cea73d12635c2c1eca9db95511a54ae0b9a..74e66f5e21493160ce8e53c101e4daab3f69998a 100644 (file)
             <table class="table">
                 <tr>
                     <th>Name</th>
-                    <th>Created By</th>
+                    <th colspan="2">Created By</th>
                     <th>Revision Date</th>
                     <th>Actions</th>
                 </tr>
                 @foreach($page->revisions as $revision)
                     <tr>
                         <td>{{$revision->name}}</td>
-                        <td>{{$revision->createdBy->name}}</td>
+                        <td style="line-height: 0;"><img class="avatar" src="{{ $revision->createdBy->getAvatar(30) }}" alt="{{$revision->createdBy->name}}"></td>
+                        <td> {{$revision->createdBy->name}}</td>
                         <td><small>{{$revision->created_at->format('jS F, Y H:i:s')}} ({{$revision->created_at->diffForHumans()}})</small></td>
                         <td>
                             <a href="{{$revision->getUrl()}}" target="_blank">Preview</a>
index 1fa823309138ca5f50b66e941c78bc1390376481..78168ea9653ca35973acd63c905f9d25d2a7afa8 100644 (file)
@@ -1,16 +1,26 @@
 
 {{--Requires an Activity item with the name $activity passed in--}}
 
-@if($activity->user) {{$activity->user->name}} @endif
+@if($activity->user)
+    <div class="left">
+        <img class="avatar" src="{{ $activity->user->getAvatar(30) }}" alt="{{$activity->user->name}}">
+    </div>
+@endif
 
-{{ $activity->getText() }}
+<div class="right">
+    @if($activity->user)
+        {{$activity->user->name}}
+    @endif
 
-@if($activity->entity())
-    <a href="{{ $activity->entity()->getUrl() }}">{{ $activity->entity()->name }}</a>
-@endif
+    {{ $activity->getText() }}
+
+    @if($activity->entity())
+        <a href="{{ $activity->entity()->getUrl() }}">{{ $activity->entity()->name }}</a>
+    @endif
 
-@if($activity->extra) "{{$activity->extra}}" @endif
+    @if($activity->extra) "{{$activity->extra}}" @endif
 
-<br>
+    <br>
 
-<span class="text-muted"><small><i class="zmdi zmdi-time"></i>{{ $activity->created_at->diffForHumans() }}</small></span>
\ No newline at end of file
+    <span class="text-muted"><small><i class="zmdi zmdi-time"></i>{{ $activity->created_at->diffForHumans() }}</small></span>
+</div>
index 279fbdb30d86c84f499fe7410cf5e7f59e98cd71..2c07daef6658987d8511882e17104b7ea693690d 100644 (file)
@@ -10,7 +10,7 @@
         <form action="/users/{{$user->id}}" method="POST">
             {!! csrf_field() !!}
             <input type="hidden" name="_method" value="DELETE">
-            <a href="/user/{{$user->id}}" class="button muted">Cancel</a>
+            <a href="/users/{{$user->id}}" class="button muted">Cancel</a>
             <button type="submit" class="button neg">Confirm</button>
         </form>
     </div>
index 5e164e90e534ec17418ca0db9768427a21be2498..1e23a1c3bcbd6e5cc553761e964931d2c1ac6238 100644 (file)
         </div>
     </div>
 
-    <div class="page-content">
-        <h1>Edit User</h1>
-
-        <form action="/users/{{$user->id}}" method="post">
-            {!! csrf_field() !!}
-            <input type="hidden" name="_method" value="put">
-            @include('users/form', ['model' => $user])
-        </form>
+    <div class="row">
+        <div class="page-content">
+            <div class="row">
+                <div class="col-md-6">
+                    <h1>Edit User</h1>
+                    <form action="/users/{{$user->id}}" method="post">
+                        {!! csrf_field() !!}
+                        <input type="hidden" name="_method" value="put">
+                        @include('users/form', ['model' => $user])
+                    </form>
+                </div>
+                <div class="col-md-6">
+                    <h1>&nbsp;</h1>
+                    <div class="shaded padded margin-top">
+                        <p>
+                            <img class="avatar" src="{{ $user->getAvatar(80) }}" alt="{{ $user->name }}">
+                        </p>
+                        <p class="text-muted">You can change your profile picture at <a href="http://en.gravatar.com/">Gravatar</a>.</p>
+                    </div>
+                </div>
+            </div>
+        </div>
     </div>
 
+
 @stop
index f29ad79b75964cf996f0a5fbc9f20648c86e3bf6..2fd51decdfc1dfc465d5cd72145e8088be0b3b96 100644 (file)
         <h1>Users</h1>
         <table class="table">
             <tr>
+                <th></th>
                 <th>Name</th>
                 <th>Email</th>
             </tr>
             @foreach($users as $user)
                 <tr>
+                    <td style="line-height: 0;"><img class="avatar" src="{{$user->getAvatar(40)}}" alt="{{$user->name}}"></td>
                     <td><a href="/users/{{$user->id}}">{{$user->name}}</a></td>
                     <td>{{$user->email}}</td>
                 </tr>
Morty Proxy This is a proxified and sanitized view of the page, visit original site.