ldc-legaulois/resources/views/bo/layouts/header.blade.php
2024-03-28 10:32:03 +01:00

118 lines
8 KiB
PHP

<header class="navbar @auth('backend') navbar-expand-md @else navbar-expand @endauth position-fixed fixed-top bg-body-tertiary shadow-sm"
id="top-navbar">
<div class="container-fluid">
{{-- BUTTON MENU NAVIGATION --}}
@auth('backend')
<button class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#menuNavigation" type="button" aria-controls="menuNavigation"
aria-expanded="false" aria-label="{{ __('Afficher/Masquer le menu de navigation') }}">
<i class="fa-solid fa-ellipsis-vertical fa-lg"></i>
</button>
@endauth
<a class="navbar-brand fs-4 fw-bold @canAny(['isConceptor', 'viewAny'], \App\Models\User::class) border-md-end @endcan me-md-2 pe-md-3 m-0 p-0"
data-bs-toggle="tooltip" data-bs-placement="bottom" href="{{ route('fo.home.show') }}"
title="{{ __('Accéder au front du projet') }}" target="_blank">
{{ config('app.name', 'Laravel') }}
</a>
{{-- BUTTON MENU USER --}}
@auth('backend')
<button class="navbar-toggler" data-bs-toggle="offcanvas" data-bs-target="#menuUser" type="button" aria-controls="menuUser"
aria-expanded="false" aria-label="{{ __('Afficher/Masquer le menu d\'utilisateur') }}">
<span class="navbar-toggler-icon fa-sm"></span>
</button>
@endauth
{{-- MENU USER --}}
<div class="offcanvas offcanvas-end" id="menuUser" aria-labelledby="menuUserContent" tabindex="-1">
<div class="offcanvas-header border border-top-0 border-start-0 border-end-0 border-2 border-secondary">
<h5 class="offcanvas-title" id="menuUserContent">{{ __('Menu utilisateur') }}</h5>
<button class="btn-close" data-bs-dismiss="offcanvas" type="button" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<!-- Left Side Of Navbar -->
@canAny(['isConceptor', 'viewAny'], \App\Models\User::class)
<ul class="navbar-nav me-auto">
@can('viewAny', \App\Models\User::class)
<li class="nav-item">
<a class="nav-link d-flex align-items-center h-100 @if (request()->routeIs('bo.users.*')) active @endif"
data-bs-toggle="tooltip" href="{{ route('bo.users.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => Str::plural(__('models.classes.user'))]) }}">
{{ Str::of(__('models.classes.user'))->plural()->ucfirst() }}
</a>
</li>
@endcan
@can('isConceptor')
<li class="nav-item">
<a class="nav-link d-flex align-items-center h-100 @if (request()->routeIs('bo.activity_logs.*')) active @endif"
data-bs-toggle="tooltip" href="{{ route('bo.activity_logs.index') }}"
title="{{ __('crud.helpers.list_all', ['model' => trans_choice('models.classes.activity_log', '*')]) }}">
{{ Str::of(trans_choice('models.classes.activity_log', '*'))->ucfirst() }}
</a>
</li>
@endcan
</ul>
@endcan
<!-- Right Side Of Navbar -->
<ul class="navbar-nav ms-auto">
<!-- Bootstrap themes -->
<li class="nav-item dropdown @auth('backend') border-md-end @endauth">
<button class="btn nav-link dropdown-toggle d-flex align-items-center h-100 flex-row border-0 pe-3"
data-bs-toggle="dropdown" type="button" aria-expanded="false" aria-label="Changer les couleurs de l'interface du back-office">
<span class="fa-solid fa-paint-roller"></span>
</button>
<form class="dropdown-menu dropdown-menu-end text-center" id="theme-selector" action="{{ route('bo.theme.set') }}"
method="POST">
@push('scripts')
<script @if (!empty($nonce)) nonce="{{ $nonce }}" @endif>
document.addEventListener('DOMContentLoaded', function() {
const themeSelector = document.getElementById('theme-selector');
if (themeSelector) {
themeSelector.addEventListener('change', function() {
this.submit();
});
}
});
</script>
@endpush
@csrf
@php $theme = intval(Cache::get('theme')); @endphp
@foreach (\App\Enums\Theme\BootstrapThemeEnum::toArray() as $key => $bootstrapTheme)
<input class="d-none form-check-input" id="theme{{ $key }}" name="theme" type="radio"
value="{{ $bootstrapTheme->value }}">
<label class="dropdown-item w-100 text-decoration-none @if ($bootstrapTheme->value === intval(Cache::get('theme'))) active @endif p-2"
for="theme{{ $key }}" role="button">
{{ Str::of($bootstrapTheme->label)->ucFirst() }}
</label>
@endforeach
</form>
</li>
<!-- Authentication Links -->
@auth('backend')
<li class="nav-item dropdown">
<button class="btn nav-link dropdown-toggle d-flex align-items-center h-100 ps-md-3 flex-row border-0" id="navbarDropdown"
data-bs-toggle="dropdown" type="button">
<div class="d-flex flex-column align-items-start align-items-md-end lh-1">
<span
class="fw-bold">{{ auth('backend')->user()->first_name }}&nbsp;{{ auth('backend')->user()->last_name }}</span>
<small class="text-secondary-body">{{ Str::of(auth('backend')->user()->role->label())->ucFirst() }}</small>
</div>
</button>
<div class="dropdown-menu dropdown-menu-end m-0 text-center" aria-labelledby="navbarDropdown">
<a class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip" data-bs-placement="left"
href="{{ route('bo.users.edit',auth('backend')->user()->getKey()) }}" title="{{ __('Accéder à son profile') }}">
{{ __('Profile') }}
</a>
<hr class="dropdown-divider m-0">
<form class="m-0 text-center" id="logout-form" action="{{ route('bo.logout') }}" method="POST">
@csrf
<button class="dropdown-item w-100 text-decoration-none p-2" data-bs-toggle="tooltip" data-bs-placement="left"
type="submit" title="{{ __('Se déconnecter du back-office') }}">
{{ __('Déconnexion') }}
</button>
</form>
</div>
</li>
@endauth
</ul>
</div>
</div>
</div>
</header>