{% if app.user %} {% if current_route == 'suggestion.index' %} {# Header spécifique pour la page des suggestions mobile : bouton burger + icône d'avertissement #} <div style="position: fixed; top: 15px; right: 5px; z-index: 1050;"> <div class="d-flex align-items-center gap-2"> {# Icône d'avertissement si alerte LinkedIn nécessaire #} {% if showMobileReconnectAlert is defined and showMobileReconnectAlert %} <span class="fa-stack fs-20" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-trigger="click" data-bs-content="Afin que les messages soient envoyés, veuillez vous connecter depuis votre ordinateur. Vous avez reçu un lien de connexion par e-mail." data-bs-original-title="<i class='fa-brands fa-linkedin me-2'></i>Connexion requise depuis votre ordinateur" data-bs-html="true" data-bs-custom-class="alert-popover"> <i class="fa-solid fa-circle fa-stack-2x" style="color: #ffc107;"></i> <i class="fa-solid fa-triangle-exclamation fa-stack-1x fa-inverse"></i> </span> {% endif %} {# Bouton burger #} <a class="" data-bs-toggle="offcanvas" href="#mobileNavi" role="button" aria-controls="mobileNavi"> <span class="fa-stack fs-20"> <i class="fa-solid fa-circle fa-stack-2x" style="color: #0B3A3C;"></i> <i class="fa-solid fa-bars fa-stack-1x fa-inverse"></i> </span> </a> </div> </div> {% else %} {# Header standard pour toutes les autres pages #} <div class="fixed-top bg-white"> <div class="d-flex align-items-center"> <div class="p-2"> <img src="{{ app.user.photo }}" class="border rounded-circle" style="width: 50px; height: 50px;"></div> <div class="p-2 flex-fill"> Bienvenue sur bambboo {% if app.user.firstname is not empty %} <span class="ubuntu-bold d-block"> {{ app.user.firstname ~ ' ' ~ app.user.lastname|slice(0, 1)|upper }} . </span> {% endif %} </div> <div class="p-2"> <a class="" data-bs-toggle="offcanvas" href="#mobileNavi" role="button" aria-controls="mobileNavi"> <span class="fa-stack fs-20"> <i class="fa-solid fa-circle fa-stack-2x" style="color: #0B3A3C;"></i> <i class="fa-solid fa-bars fa-stack-1x fa-inverse"></i> </span> </a> </div> </div> </div> {% endif %} {% endif %} {% if app.user %} <div class="offcanvas offcanvas-end" tabindex="-1" id="mobileNavi" aria-labelledby="offcanvasExampleLabel"> <div class="offcanvas-header"> <a class="btn-close me-3" data-bs-dismiss="offcanvas" aria-label="Close"> <span class="fa-stack fs-20"> <i class="fa-solid fa-circle fa-stack-2x" style="color: #0B3A3C;"></i> <i class="fa-solid fa-times fa-stack-1x fa-inverse"></i> </a> </button> </div> <div class="offcanvas-body d-flex flex-column p-0"> <div class="px-2 flex-grow-1 overflow-auto"> <!-- Alerte de reconnexion LinkedIn si nécessaire --> {% if showMobileReconnectAlert is defined and showMobileReconnectAlert %} <div class="alert alert-warning d-flex align-items-center fs-12 mb-3" role="alert"> <div> <strong class="fs-13"> <i class="fa-brands fa-linkedin me-2 fs-14"></i> Connexion requise depuis votre ordinateur </strong> <br/> <span class="fs-12"> Afin que les messages soient envoyés, veuillez vous connecter depuis votre ordinateur. Vous avez reçu un lien de connexion par e-mail. </span> </div> </div> {% endif %} {% if is_granted('ROLE_RECRUITER') %} <span class="text-uppercase ubuntu-bold fs-16 ps-3"> Espace recruteur </span> <div class="list-group list-group-flush border-0 mt-3 mb-5 fs16"> <a href="{{ path('user.dashboard') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center {% if current_route == 'user.dashboard' %} active {% endif %}"> <i class="fa-solid fa-chart-simple text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Statistiques </span> </a> <a href="{{ path('application.index') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center {% if current_route == 'application.index' %} active {% endif %}"> <i class="fa-regular fa-ballot-check text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Candidats </span> </a> </div> {% endif %} <span class="text-uppercase ubuntu-bold fs-16 ps-3"> Espace coopteur </span> <div class="list-group list-group-flush border-0 mt-3 fs16"> <a href="{{ path('user.dashboard-cooptor') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center"> <i class="fa-solid fa-house text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Tableau de bord </span> </a> <a href="{{ path('suggestion.index') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center"> <i class="fa-sharp fa-solid fa-wand-magic-sparkles text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Profils détectés </span> </a> {% if app.user and app.user.identityUid %} <a href="{{ path('application.mine') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center"> <i class="fa-solid fa-user text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Mes recommandations </span> </a> <a href="{{ path('application.my-recruitments') }}" class="list-group-item list-group-item-action border-0 d-flex align-items-center"> <i class="fa-solid fa-handshake-simple text-darkgreen me-2" style="width: 1.25rem; text-align: center;"></i> <span> Mes recrutements </span> </a> {% endif %} </div> <div class="px-3 flex-shrink-0 mt-auto border-top bg-white py-2"> <ul class="list-unstyled mb-0"> <li class="p-2 fs-16"> <a href="javascript:void(0)" class="text-decoration-none text-dark d-flex align-items-center" data-bs-toggle="modal" data-bs-target="#modal-support" data-bs-dismiss="offcanvas" data-support-source="mobile_navi" aria-label="Ouvrir la modal Contacter le support" role="button"> <i class="fa-regular fa-circle-question me-2" style="width: 1.25rem; text-align: center;"></i> <span> Aide & Support </span> </a> </li> <li class="p-2 fs-16"> <a href="/logout" class="text-decoration-none text-dark d-flex align-items-center"> <i class="fa-sharp fa-solid fa-arrow-right-from-bracket text-brickhouse me-2" style="width: 1.25rem; text-align: center;"></i> <span> Se déconnecter </span> </a> </li> </ul> </div> </div> </div> </div> {% endif %} {# Styles pour la popover d'alerte personnalisée #} <style> .alert-popover { --bs-popover-max-width: calc(100vw - 30px); --bs-popover-border-color: #ffeaa7; --bs-popover-header-bg: #fff3cd; --bs-popover-header-color: #856404; --bs-popover-body-bg: #fff3cd; --bs-popover-body-color: #856404; --bs-popover-body-padding-x: 1rem; --bs-popover-body-padding-y: 0.75rem; --bs-popover-arrow-color: #fff3cd; --bs-popover-arrow-outer-color: #ffeaa7; } </style> {# Script pour initialiser les popovers #} <script> document.addEventListener('DOMContentLoaded', function() { // Initialiser tous les popovers var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { return new bootstrap.Popover(popoverTriggerEl); }); }); </script>