Browse Source

Update admin dashboard, fix search and dropdown menu

Daniel Supernault 2 years ago
parent
commit
dac0d08319
3 changed files with 78 additions and 12 deletions
  1. 23 0
      app/Services/AvatarService.php
  2. 10 0
      app/User.php
  3. 45 12
      resources/views/admin/partial/nav.blade.php

+ 23 - 0
app/Services/AvatarService.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Services;
+
+use Cache;
+use App\Profile;
+
+class AvatarService
+{
+	public static function get($profile_id)
+	{
+		$exists = Cache::get('avatar:' . $profile_id);
+		if($exists) {
+			return $exists;
+		}
+
+		$profile = Profile::find($profile_id);
+		if(!$profile) {
+			return config('app.url') . '/storage/avatars/default.jpg';
+		}
+		return $profile->avatarUrl();
+	}
+}

+ 10 - 0
app/User.php

@@ -7,6 +7,7 @@ use Illuminate\Notifications\Notifiable;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use App\Util\RateLimit\User as UserRateLimit;
+use App\Services\AvatarService;
 
 class User extends Authenticatable
 {
@@ -97,4 +98,13 @@ class User extends Authenticatable
         return $this->hasMany(AccountInterstitial::class);
     }
 
+    public function avatarUrl()
+    {
+    	if(!$this->profile_id || $this->status) {
+    		return config('app.url') . '/storage/avatars/default.jpg';
+    	}
+
+    	return AvatarService::get($this->profile_id);
+    }
+
 }

+ 45 - 12
resources/views/admin/partial/nav.blade.php

@@ -1,7 +1,8 @@
 <nav class="navbar navbar-top navbar-expand navbar-dark bg-primary border-bottom">
 		<div class="container-fluid">
 			<div class="collapse navbar-collapse" id="navbarSupportedContent">
-				<form class="navbar-search navbar-search-light form-inline mr-sm-3" id="navbar-search-main" method="get" action="/i/results">
+				<form class="navbar-search navbar-search-light form-inline mr-sm-3" id="navbar-search-main" method="get" action="/i/web">
+					<input type="hidden" name="src" value="ac">
 					<div class="form-group mb-0">
 						<div class="input-group input-group-alternative input-group-merge">
 							<div class="input-group-prepend">
@@ -35,25 +36,57 @@
 						<a class="nav-link pr-0" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
 							<div class="media align-items-center">
 								<span class="avatar avatar-sm rounded-circle">
-									<img alt="avatar" src="{{request()->user()->profile->avatarUrl()}}" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';">
+									<img alt="avatar" src="{{request()->user()->avatarUrl()}}" onerror="this.onerror=null;this.src='/storage/avatars/default.png?v=0';" width="36" height="36" style="object-fit: cover;">
 								</span>
 								<div class="media-body  ml-2  d-none d-lg-block">
-									<span class="mb-0 text-sm  font-weight-bold">{{request()->user()->username}}</span>
+									<span class="mb-0 text-sm font-weight-bold">{{request()->user()->username}}</span>
 								</div>
 							</div>
 						</a>
 						<div class="dropdown-menu  dropdown-menu-right ">
-							<div class="dropdown-header noti-title">
-								<h6 class="text-overflow m-0">Welcome!</h6>
-							</div>
-							<a href="/i/me" class="dropdown-item">
-								<i class="ni ni-single-02"></i>
-								<span>Profile</span>
+							<a href="/i/web" class="dropdown-item d-flex align-items-center">
+								<span style="width:30px;">
+									<i class="far fa-home text-light"></i>
+								</span>
+								<span class="font-weight-bold">Home</span>
 							</a>
-							<a href="/settings/home" class="dropdown-item">
-								<i class="ni ni-settings-gear-65"></i>
-								<span>Settings</span>
+
+							<a href="/i/web/discover" class="dropdown-item d-flex align-items-center">
+								<span style="width:30px;">
+									<i class="far fa-compass text-light"></i>
+								</span>
+								<span class="font-weight-bold">Discover</span>
+							</a>
+
+							<div class="dropdown-divider"></div>
+
+							<a href="/i/me" class="dropdown-item d-flex align-items-center">
+								<span style="width:30px;">
+									<i class="far fa-user text-light"></i>
+								</span>
+								<span class="font-weight-bold">Profile</span>
+							</a>
+							<a href="/settings/home" class="dropdown-item d-flex align-items-center">
+								<span style="width:30px;">
+									<i class="far fa-cog text-light"></i>
+								</span>
+								<span class="font-weight-bold">Settings</span>
+							</a>
+
+							<div class="dropdown-divider"></div>
+
+							<a
+								href="#"
+								class="dropdown-item d-flex align-items-center"
+								onclick="event.preventDefault();document.getElementById('logout-form').submit();">
+								<span style="width:30px;">
+									<i class="far fa-sign-out text-light"></i>
+								</span>
+								<span class="font-weight-bold">{{ __('navmenu.logout') }}</span>
 							</a>
+							<form id="logout-form" action="/logout" method="POST" style="display: none;">
+								@csrf
+							</form>
 						</div>
 					</li>
 				</ul>