Update admin dashboard, fix search and dropdown menu

This commit is contained in:
Daniel Supernault 2023-05-05 00:00:11 -06:00
parent 9c7b247819
commit dac0d08319
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
3 changed files with 78 additions and 12 deletions

View file

@ -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();
}
}

View file

@ -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);
}
}

View file

@ -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>