Homepage
- Add HomepageService with hero, trending (award-weighted), fresh uploads,
popular tags, creator spotlight (weekly uploads ranking), and news sections
- Add React components: HomePage, HomeHero, HomeTrending, HomeFresh,
HomeTags, HomeCreators, HomeNews (lazy-loaded below the fold)
- Wire home.blade.php with JSON props, SEO meta, JSON-LD, and hero preload
- Add HomePage.jsx to vite.config.js inputs
Profile page
- Hero banner with random user artwork as background + dark gradient overlay
- Favourites section uses real Artwork models + <x-artwork-card> for CDN URLs
- Newest artworks grid: gallery-grid → grid grid-cols-2 gap-4
Edit Profile page (user.blade.php)
- Add hero banner (featured wallpaper/photography via artwork_features,
content_type_id IN [2,3]) sourced in UserController
- Remove bg-deep from outer wrapper; card backgrounds: bg-panel → bg-nova-800
- Remove stray AI-generated tag fragment from template
Author profile links
- Fix all /@username routes in: HomepageService, MonthlyCommentatorsController,
LatestCommentsController, MyBuddiesController and corresponding blade views
Legacy view namespace
- Register View::addNamespace('legacy', resource_path('views/_legacy'))
in AppServiceProvider::boot()
- Convert all view('legacy.x') and @include('legacy.x') calls to legacy::x
- Migrate legacy views to resources/views/_legacy/ with namespace support
181 lines
12 KiB
PHP
181 lines
12 KiB
PHP
<nav class="navbar yamm navbar-skinbase navbar-fixed-top" role="navigation">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#mainToolbarNavCollapse">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
<span class="icon-bar"></span>
|
|
</button>
|
|
<a href="/" class="navbar-brand sb_toolbarLogo" title="SkinBase">SkinBase</a>
|
|
</div>
|
|
|
|
<div class="collapse navbar-collapse" id="mainToolbarNavCollapse">
|
|
<form class="hidden-xs navbar-form navbar-left" action="/search" method="get" id="search_box">
|
|
<input type="text" name="q" value="{{ request('q') }}">
|
|
<input type="hidden" name="group" value="all">
|
|
<button type="submit"><i class="fa fa-search fa-fw"></i></button>
|
|
</form>
|
|
|
|
<ul class="nav navbar-nav">
|
|
<li class="dropdown yamm-fw">
|
|
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
|
|
<i class="fa fa-cloud"></i> Browse <i class="fa fa-angle-down"></i>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<div class="yamm-content">
|
|
<div class="row">
|
|
<div class="col-xs-6 col-sm-3 col-md-3 menu_box">
|
|
<i class="fa fa-archive fa-fw"></i> Browse Artworks:<br>
|
|
<div class="divider"></div>
|
|
<ul class="submenu">
|
|
<li><a href="/browse"><i class="fa fa-cloud fa-fw"></i> All Artworks</a></li>
|
|
<li><a href="/photography"><i class="fa fa-photo fa-fw"></i> Photography</a></li>
|
|
<li><a href="/wallpapers"><i class="fa fa-photo fa-fw"></i> Wallpapers</a></li>
|
|
<li><a href="/skins"><i class="fa fa-photo fa-fw"></i> Skins</a></li>
|
|
<li><a href="/other"><i class="fa fa-photo fa-fw"></i> Other</a></li>
|
|
<li><a href="/featured-artworks"><i class="fa fa-trophy fa-fw"></i> Featured</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="col-xs-6 col-sm-3 col-md-3">
|
|
<i class="fa fa-eye fa-fw"></i> View:<br>
|
|
<div class="divider"></div>
|
|
<ul class="submenu">
|
|
<li><a href="/forum"><i class="fa fa-comments fa-fw"></i> Forum</a></li>
|
|
<li><a href="/chat"><i class="fa fa-comments fa-fw"></i> Chat</a></li>
|
|
<li><a href="/browse-categories"><i class="fa fa-cloud fa-fw"></i> Categories</a></li>
|
|
<li><a href="/latest-artworks"><i class="fa fa-trophy fa-fw"></i> Latest Uploads</a></li>
|
|
<li><a href="/daily-uploads"><i class="fa fa-trophy fa-fw"></i> Recent Uploads</a></li>
|
|
<li><a href="/today-in-history"><i class="fa fa-trophy fa-fw"></i> Today in History</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="col-xs-6 col-sm-3 col-md-3">
|
|
<i class="fa fa-users fa-fw"></i> Authors:<br>
|
|
<div class="divider"></div>
|
|
<ul class="submenu">
|
|
<li><a href="/interviews"><i class="fa fa-users fa-fw"></i> Interviews</a></li>
|
|
<li><a href="/Members/MembersPhotos/545"><i class="fa fa-users fa-fw"></i> Members Photos</a></li>
|
|
<li><a href="/top-authors"><i class="fa fa-users fa-fw"></i> Top Authors</a></li>
|
|
<li><a href="/latest-comments"><i class="fa fa-bar-chart fa-fw"></i> Latest Comments</a></li>
|
|
<li><a href="/monthly-commentators"><i class="fa fa-bar-chart fa-fw"></i> Monthly Top Comments</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="col-xs-6 col-sm-3 col-md-3">
|
|
<i class="fa fa-bar-chart fa-fw"></i> Statistics:<br>
|
|
<div class="divider"></div>
|
|
<ul class="submenu">
|
|
<li><a href="/today-downloads"><i class="fa fa-bar-chart fa-fw"></i> Today Downloads</a></li>
|
|
<li><a href="/top-favourites"><i class="fa fa-bar-chart fa-fw"></i> Top Favourites</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
|
|
<i class="fa fa-list-ul"></i> Categories <i class="fa fa-angle-down"></i>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="/photography"><i class="fa fa-camera"></i> Photography</a></li>
|
|
<li><a href="/wallpapers"><i class="fa fa-desktop"></i> Wallpapers</a></li>
|
|
<li><a href="/skins"><i class="fa fa-eye"></i> Skins</a></li>
|
|
<li><a href="/other"><i class="fa fa-file-o"></i> Others</a></li>
|
|
<li role="separator" class="divider"></li>
|
|
<li><a href="/browse-categories" class="btn_category"><i class="fa fa-list"></i> Categories List</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
|
|
<ul class="nav navbar-nav navbar-right">
|
|
@auth
|
|
@php
|
|
$userId = auth()->id();
|
|
try {
|
|
$uploadCount = \Illuminate\Support\Facades\DB::table('artworks')->where('user_id', $userId)->count();
|
|
} catch (\Throwable $e) {
|
|
$uploadCount = 0;
|
|
}
|
|
try {
|
|
$favCount = \Illuminate\Support\Facades\DB::table('favourites')->where('user_id', $userId)->count();
|
|
} catch (\Throwable $e) {
|
|
$favCount = 0;
|
|
}
|
|
try {
|
|
$msgCount = \Illuminate\Support\Facades\DB::table('messages')->where('reciever_id', $userId)->whereNull('read_at')->count();
|
|
} catch (\Throwable $e) {
|
|
$msgCount = 0;
|
|
}
|
|
try {
|
|
$noticeCount = \Illuminate\Support\Facades\DB::table('notification')->where('user_id', $userId)->where('new', 1)->count();
|
|
} catch (\Throwable $e) {
|
|
$noticeCount = 0;
|
|
}
|
|
try {
|
|
$profile = \Illuminate\Support\Facades\DB::table('user_profiles')->where('user_id', $userId)->first();
|
|
$avatarHash = $profile->avatar_hash ?? null;
|
|
} catch (\Throwable $e) {
|
|
$avatarHash = null;
|
|
}
|
|
$displayName = auth()->user()->name ?: (auth()->user()->username ?? '');
|
|
@endphp
|
|
|
|
<li class="hidden-xs hidden-sm menu_notice">
|
|
<a href="/upload" title="Upload new Artwork"><i class="fa fa-upload fa-fw"></i><br> {{ $uploadCount }}</a>
|
|
</li>
|
|
<li class="hidden-xs hidden-sm menu_notice">
|
|
<a href="/favourites/{{ $userId }}/{{ auth()->user()->username ?? '' }}" title="Your Favourite Artworks"><i class="fa fa-heart fa-fw"></i><br> {{ $favCount }}</a>
|
|
</li>
|
|
<li class="hidden-xs hidden-sm menu_notice">
|
|
<a href="/messages" title="Messages"><i class="fa fa-envelope fa-fw"></i><br> {{ $msgCount }}</a>
|
|
</li>
|
|
<li class="hidden-xs hidden-sm menu_notice">
|
|
<a href="/notices" title="Notices"><i class="fa fa-bell"></i><br> {{ $noticeCount }}</a>
|
|
</li>
|
|
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle c-white" data-toggle="dropdown" data-hover="dropdown" data-close-others="true">
|
|
<img src="{{ \App\Support\AvatarUrl::forUser((int) $userId, $avatarHash ?? null, 32) }}" alt="{{ $displayName }}" width="18">
|
|
<span class="username">{{ $displayName }}</span>
|
|
<i class="fa fa-angle-down"></i>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="/upload"><i class="fa fa-upload"></i> Upload</a></li>
|
|
<li><a href="{{ route('dashboard.artworks.index') }}"><i class="fa fa-cloud"></i> Edit Artworks</a></li>
|
|
<li role="presentation" class="divider"></li>
|
|
<li><a href="/statistics"><i class="fa fa-cog"></i> Statistics</a></li>
|
|
<li><a href="/mybuddies.php"><i class="fa fa-cog"></i> My Followes</a></li>
|
|
<li><a href="/buddies.php"><i class="fa fa-cog"></i> Who follows me</a></li>
|
|
<li role="presentation" class="divider"></li>
|
|
<li><a href="/recieved-comments"><i class="fa fa-cog"></i> Received Comments</a></li>
|
|
<li><a href="/favourites/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> My Favourites</a></li>
|
|
<li><a href="/gallery/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> My Gallery</a></li>
|
|
<li role="presentation" class="divider"></li>
|
|
<li><a href="/user"><i class="fa fa-cog"></i> Edit Profile</a></li>
|
|
<li><a href="/profile/{{ $userId }}/{{ auth()->user()->username ?? '' }}"><i class="fa fa-cog"></i> View My Profile</a></li>
|
|
<li class="dropdown-footer clearfix">
|
|
<form method="POST" action="/logout" style="margin:0;">
|
|
@csrf
|
|
<button type="submit" class="btn btn-link" style="padding: 3px 20px;"> <i class="fa fa-power-off"></i> Logout</button>
|
|
</form>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li class="hidden-xs hidden-sm menu_chat">
|
|
<span class="toggle_menu" title="Chat"><i class="fa fa-weixin fa-lg fa-fw"></i></span>
|
|
</li>
|
|
@else
|
|
<li class="dropdown"><a href="/signup" title="Signup for a new account" class="c-white"><i class="fa fa-unlock fa-fw"></i> Join</a></li>
|
|
<li class="dropdown"><a href="/login" title="Login to Skinbase account" class="c-white"><i class="fa fa-sign-in fa-fw"></i> Sign in</a></li>
|
|
@endauth
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|