templates/partials/navbar.html.twig line 1

Open in your IDE?
  1. {% import 'partials/avatar.html.twig' as avatar %}
  2. <nav class="navbar fixed-top navbar-expand-lg bg-dark-subtle double-border-bottom">
  3.     <div class="container">
  4.         <a class="navbar-brand" href="{{ path('app_home') }}">
  5.             <img src="{{ asset('images/logo.png') }}" alt="Logo HaloGari" class="img-fluid" style="max-width: 120px; height:auto;">
  6.         </a>
  7.         <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
  8.             <li class="nav-item align-self-center d-none d-lg-block">
  9.                 <div class="d-flex gap-2 align-items-center">
  10.                     <button class="installAppBtn px-1 btn btn-orange d-none nav-link" title="Installer HaloGari">
  11.                         <i class="bi bi-download"></i>
  12.                         Installer HaloGari
  13.                     </button>
  14.                     <button class="btnEnableNotifications nav-link  btn btn-vert d-none px-1">
  15.                         <i class="bi bi-bell-fill"></i>
  16.                         Activer les notifications
  17.                     </button>
  18.                 </div>
  19.             </li>
  20.             <li class="nav-item align-self-center d-none d-lg-block">
  21.                 <a class="btn nav-link" href="{{ path('app_chercher') }}" title="Chercher un trajet">
  22.                     <i class="text-vert bi bi-search"></i>
  23.                     Chercher un trajet
  24.                 </a>
  25.             </li>
  26.             <li class="nav-item align-self-center d-none d-lg-block">
  27.                 <a class="btn nav-link" href="{{ path('app_publier') }}">
  28.                     <i class="bi bi-plus-circle"></i>
  29.                     Publier un trajet
  30.                 </a>
  31.             </li>
  32.             {% if app.user %}
  33.                 <li class="nav-item align-self-center d-none d-lg-block position-relative mx-4">
  34.                     <a class="nav-link position-relative" href="{{ path('app_message') }}" title="Messages">
  35.                         <i class="bi bi-envelope-fill fs-5"></i>
  36.                         <span class="message-notif position-absolute start-100 translate-middle badge rounded-circle bg-danger" style="display: none; top: 20%;">
  37.                             0
  38.                         </span>
  39.                     </a>
  40.                 </li>
  41.                 <li class="nav-item dropdown align-self-center d-none d-lg-block position-relative me-3">
  42.                     <a class="nav-link dropdown-toggle no-caret position-relative" href="#" id="notifDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  43.                         <i class="bi bi-bell-fill fs-5"></i>
  44.                         <span class="notification-badge position-absolute start-100 translate-middle badge rounded-circle bg-danger" style="display: none; top: 20%;">
  45.                             0
  46.                         </span>
  47.                     </a>
  48.                     <ul class="dropdown-menu dropdown-menu-end shadow-sm p-2" id="notifDropdownMenu" aria-labelledby="notifDropdown" style="min-width: 300px;">
  49.                         {% include 'partials/_notifications_list.html.twig' with {
  50.             notifications: app.user.notifications|filter(notif => not notif.lu)
  51.         } %}
  52.                     </ul>
  53.                 </li>
  54.             {% endif %}
  55.             <li class="nav-item d-none d-lg-block align-items-center">
  56.                 {% if app.user is null %}
  57.                     <a class="btn nav-link" href="#" data-bs-toggle="modal" data-bs-target="#modalConnexion" title="Se connecter">
  58.                         <i class="bi bi-box-arrow-in-right"></i>
  59.                         Se connecter
  60.                     </a>
  61.                 {% else %}
  62.                     <a class="btn dropdown-toggle text-vert py-0" href="#" role="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">
  63.                         {{ avatar.formatSimple(app.user, 40) }}
  64.                     </a>
  65.                 {% endif %}
  66.             </li>
  67.         </ul>
  68.         {# Mobile buttons #}
  69.         {% if app.user %}
  70.             <div class="position-relative d-lg-none me-4 d-inline-block">
  71.                 <a class="nav-link" href="{{ path('app_message') }}" title="Messages">
  72.                     <i class="bi bi-envelope-fill fs-5"></i>
  73.                 </a>
  74.                 <span class="message-notif position-absolute top-0 start-100 translate-middle badge rounded-circle bg-danger" style="display: none;">
  75.                     0
  76.                 </span>
  77.             </div>
  78.             <div class="position-relative d-lg-none me-3 d-inline-block">
  79.                 <a class="nav-link" href="{{ path('app_notifications') }}" title="Notifications">
  80.                     <i class="bi bi-bell-fill fs-5"></i>
  81.                 </a>
  82.                 <span class="notification-badge position-absolute top-0 start-100 translate-middle badge rounded-circle bg-danger" style="display: none;">
  83.                     0
  84.                 </span>
  85.             </div>
  86.         {% endif %}
  87.         <a class="btn text-vert d-lg-none py-0 {% if app.user is not null %}dropdown-toggle{% endif %}" href="#" role="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">
  88.             {% if app.user is null %}
  89.                 <i class="bi bi-list fs-3"></i>
  90.             {% else %}
  91.                 {{ avatar.formatSimple(app.user, 40) }}
  92.             {% endif %}
  93.         </a>
  94.     </div>
  95. </nav>
  96. <div class="offcanvas offcanvas-end bg-dark-subtle" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
  97.     {% if app.user is null %}
  98.         <div class="offcanvas-header">
  99.             <div id="offcanvasRightLabel">
  100.                 <p><img src="{{ asset('images/logo.png') }}" alt="Logo HaloGari" class="img-fluid" style="max-width: 120px; height:auto;"></p>
  101.             </div>
  102.             <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
  103.         </div>
  104.         <div class="offcanvas-body">
  105.             <div class="list-group list-group-flush">
  106.                 <a href="{{ path('app_chercher') }}" class="list-group-item list-group-item-action bg-dark-subtle" title="Chercher un trajet">
  107.                     <i class="text-vert bi bi-search"></i>
  108.                     Chercher un trajet
  109.                 </a>
  110.                 <a href="{{ path('app_publier') }}" class="list-group-item list-group-item-action bg-dark-subtle" title="Publier un trajet">
  111.                     <i class="bi bi-plus-circle"></i>
  112.                     Publier un trajet
  113.                 </a>
  114.                 <a class="list-group-item list-group-item-action bg-dark-subtle" href="#" data-bs-toggle="modal" data-bs-target="#modalConnexion" title="Se connecter">
  115.                     <i class="bi bi-box-arrow-in-right"></i>
  116.                     Se connecter
  117.                 </a>
  118.                 <div class="list-group-item list-group-item-action bg-dark-subtle d-block d-lg-none">
  119.                     <div class="d-flex justify-content-center gap-2 flex-wrap">
  120.                         <button class="installAppBtn px-1 btn btn-orange d-none" title="Installer HaloGari">
  121.                             <i class="bi bi-download"></i>
  122.                             Installer HaloGari
  123.                         </button>
  124.                         <button class="btnEnableNotifications btn btn-vert d-none">
  125.                             <i class="bi bi-bell-fill"></i>
  126.                             Activer les notifications
  127.                         </button>
  128.                     </div>
  129.                 </div>
  130.             </div>
  131.         </div>
  132.     {% else %}
  133.         <div class="offcanvas-header">
  134.             <div id="offcanvasRightLabel">
  135.                 <p><img src="{{ asset('images/logo.png') }}" alt="Logo HaloGari" class="img-fluid" style="max-width: 120px; height:auto;"></p>
  136.                 <h5>
  137.                     Bonjour
  138.                     {% if app.user is not null %}
  139.                         {{ app.user.prenom|e }},
  140.                     {% endif %}
  141.                 </h5>
  142.             </div>
  143.             <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
  144.         </div>
  145.         <div class="offcanvas-body">
  146.             <div class="list-group list-group-flush">
  147.                 <a href="{{ path('app_chercher') }}" class="list-group-item list-group-item-action bg-dark-subtle d-block d-lg-none">
  148.                     <i class="text-vert bi bi-search"></i>
  149.                     Chercher un trajet
  150.                 </a>
  151.                 <a href="{{ path('app_publier') }}" class="list-group-item list-group-item-action bg-dark-subtle d-block d-lg-none">
  152.                     <i class="bi bi-plus-circle"></i>
  153.                     Publier un trajet
  154.                 </a>
  155.                 <a href="{{ path('app_profile', { id: app.user.id }) }}" class="list-group-item list-group-item-action bg-dark-subtle">
  156.                     <i class="bi bi-person"></i>
  157.                     Mon profil
  158.                 </a>
  159.                 <a href="{{ path('app_mes_trajets') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  160.                     <i class="bi bi-signpost-2"></i>
  161.                     Mes trajets
  162.                 </a>
  163.                 <a href="{{ path('app_mes_reservations') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  164.                     <i class="bi bi-calendar-check"></i>
  165.                     Mes réservations
  166.                 </a>
  167.                 <a href="{{ path('app_mes_paiements') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  168.                     <i class="bi bi-credit-card"></i>
  169.                     Mes paiements
  170.                 </a>
  171.                 <a href="{{ path('app_documents') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  172.                     <i class="bi bi-file-earmark-text"></i>
  173.                     Mes documents
  174.                 </a>
  175.                 <a href="{{ path('app_parametres') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  176.                     <i class="bi bi-gear"></i>
  177.                     Paramètres
  178.                 </a>
  179.                 <a href="{{ path('app_logout') }}" class="list-group-item list-group-item-action bg-dark-subtle">
  180.                     <i class="bi bi-box-arrow-right"></i>
  181.                     Déconnexion
  182.                 </a>
  183.                 <div class="list-group-item list-group-item-action bg-dark-subtle text-center d-block d-lg-none">
  184.                     <div class="d-flex justify-content-center gap-2 flex-wrap">
  185.                         <button class="installAppBtn px-1 btn btn-orange d-none" title="Installer HaloGari">
  186.                             <i class="bi bi-download"></i>
  187.                             Installer HaloGari
  188.                         </button>
  189.                         <button class="btnEnableNotifications btn btn-vert">
  190.                             <i class="bi bi-bell-fill"></i>
  191.                             Activer les notifications
  192.                         </button>
  193.                     </div>
  194.                 </div>
  195.             </div>
  196.         </div>
  197.     {% endif %}
  198. </div>
  199. <main class="flex-grow-1
  200.                                                                                                                         {% if app.request.attributes.get('_route') == 'app_home' %}
  201.                                                                                                                         pt-0
  202.                                                                                                                         {% else %}
  203.                                                                                                                         pt-5
  204.                                                                                                                         {% endif %}
  205.                                                                                                                           pt-md-5">