templates/admin/baseAdmin.html.twig line 1

Open in your IDE?
  1. <!doctype html>
  2. <html lang="fr">
  3. <head>
  4.     <meta charset="utf-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1">
  6.     <title>{% block title %}{{ controller_name|default('Gestion Stock') }}{% endblock %}</title>
  7.     
  8.     <!-- Preload critical assets -->
  9.     <link rel="preload" href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" as="style">
  10.     <link rel="preload" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" as="style">
  11.     
  12.     <!-- Favicon -->
  13.     <link href="{{ asset('image/logo_nav.png')}}" rel="icon" type="image/png">
  14.     
  15.     <!-- CSS Libraries -->
  16.     <link href="{{ asset('assets/vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
  17.     <link href="{{ asset('assets/css/sidebars.css')}}" rel="stylesheet">
  18.     <link href="{{ asset('assets/css/portal.css') }}" rel="stylesheet">
  19.     
  20.     <!-- Icon Libraries with integrity checks -->
  21.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.6.1/font/bootstrap-icons.css">
  22.     <link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css" integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p" crossorigin="anonymous">
  23.     
  24.     {% block stylesheets %}{% endblock %}
  25.     
  26.     <!-- Inline Critical CSS -->
  27.     <style>
  28.         :root {
  29.             --primary: #009cde;
  30.             --primary-dark: #0077a8;
  31.             --secondary: #6c757d;
  32.             --dark: #2c3e50;
  33.             --light: #f8f9fa;
  34.             --success: #28a745;
  35.             --danger: #dc3545;
  36.             --warning: #ffc107;
  37.             --info: #17a2b8;
  38.             --navbar-height: 60px;
  39.             --transition: all 0.25s cubic-bezier(0.645, 0.045, 0.355, 1);
  40.         }
  41.         
  42.         body {
  43.             padding-top: var(--navbar-height);
  44.             font-family: 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
  45.             line-height: 1.6;
  46.             color: #333;
  47.             background-color: #f5f7fa;
  48.             min-height: 100vh;
  49.         }
  50.         
  51.         /* Enhanced Navbar */
  52.         .navbar {
  53.             background: linear-gradient(135deg, var(--dark) 0%, var(--primary-dark) 100%);
  54.             height: var(--navbar-height);
  55.             box-shadow: var(--shadow-lg);
  56.             padding: 0 2rem;
  57.             position: fixed;
  58.             top: 0;
  59.             width: 100%;
  60.             z-index: 1030;
  61.             backdrop-filter: blur(10px);
  62.             -webkit-backdrop-filter: blur(10px);
  63.             border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  64.         }
  65.         
  66.         .navbar-container {
  67.             max-width: 1400px;
  68.             margin: 0 auto;
  69.             padding: 0 15px;
  70.         }
  71.         
  72.         .navbar-brand {
  73.             font-weight: 700;
  74.             letter-spacing: 0.5px;
  75.             display: flex;
  76.             align-items: center;
  77.             padding: 0.5rem 0;
  78.             transition: var(--transition);
  79.         }
  80.         
  81.         .navbar-brand img {
  82.             height: 30px;
  83.             width: auto;
  84.             margin-right: 10px;
  85.             transition: var(--transition);
  86.         }
  87.         
  88.         .navbar-brand:hover {
  89.             transform: translateY(-1px);
  90.         }
  91.         
  92.         .nav-item {
  93.             position: relative;
  94.             margin: 0 2px;
  95.         }
  96.         
  97.         .nav-link {
  98.             font-weight: 500;
  99.             padding: 0.75rem 1rem;
  100.             color: rgba(255,255,255,0.9) !important;
  101.             transition: var(--transition);
  102.             border-radius: 4px;
  103.             display: flex;
  104.             align-items: center;
  105.         }
  106.         
  107.         .nav-link i {
  108.             margin-right: 8px;
  109.             width: 20px;
  110.             text-align: center;
  111.         }
  112.         
  113.         .nav-link:hover, 
  114.         .nav-link:focus,
  115.         .nav-link.active {
  116.             color: white !important;
  117.             background-color: rgba(255,255,255,0.15);
  118.             transform: translateY(-1px);
  119.         }
  120.         
  121.         /* Dropdown Enhancements */
  122.         .dropdown-menu {
  123.             border: none;
  124.             box-shadow: 0 5px 20px rgba(0,0,0,0.15);
  125.             border-radius: 8px;
  126.             margin-top: 8px;
  127.             padding: 0.5rem 0;
  128.             min-width: 220px;
  129.             border-top: 3px solid var(--primary);
  130.         }
  131.         
  132.         .dropdown-item {
  133.             padding: 0.6rem 1.5rem;
  134.             transition: var(--transition);
  135.             font-weight: 500;
  136.             display: flex;
  137.             align-items: center;
  138.         }
  139.         
  140.         .dropdown-item i {
  141.             width: 20px;
  142.             margin-right: 10px;
  143.             color: var(--primary);
  144.         }
  145.         
  146.         .dropdown-item:hover, 
  147.         .dropdown-item:focus {
  148.             background-color: rgba(0, 156, 222, 0.1);
  149.             color: var(--primary);
  150.             padding-left: 1.75rem;
  151.         }
  152.         
  153.         /* User Menu Specific */
  154.         .user-menu .dropdown-toggle::after {
  155.             margin-left: 0.5em;
  156.             vertical-align: 0.15em;
  157.         }
  158.         
  159.         .user-menu .dropdown-menu {
  160.             left: auto !important;
  161.             right: 0 !important;
  162.         }
  163.         
  164.         /* Main Content Area */
  165.         main {
  166.             padding: 2rem 0;
  167.             min-height: calc(100vh - var(--navbar-height));
  168.         }
  169.         
  170.         /* Buttons & Interactive Elements */
  171.         .btn {
  172.             transition: var(--transition);
  173.             font-weight: 500;
  174.             letter-spacing: 0.5px;
  175.         }
  176.         
  177.         .btn-ease {
  178.             background-color: var(--primary);
  179.             border-color: var(--primary);
  180.             border-radius: 30px;
  181.             padding: 0.5rem 1.5rem;
  182.         }
  183.         
  184.         .btn-ease:hover {
  185.             background-color: var(--primary-dark);
  186.             border-color: var(--primary-dark);
  187.             transform: translateY(-2px);
  188.             box-shadow: 0 4px 15px rgba(0, 156, 222, 0.3);
  189.         }
  190.         
  191.         /* Specific Button States */
  192.         .btn-download:hover {
  193.             background-color: #e0b000;
  194.             transform: translateY(-2px);
  195.             box-shadow: 0 4px 12px rgba(224, 176, 0, 0.3);
  196.         }
  197.         
  198.         .btn-edit:hover, 
  199.         .btn-add:hover {
  200.             background-color: #0aa8c8;
  201.             transform: translateY(-2px);
  202.             box-shadow: 0 4px 12px rgba(13, 202, 240, 0.3);
  203.         }
  204.         
  205.         .btn-save:hover {
  206.             background-color: #5cd34b;
  207.             transform: translateY(-2px);
  208.             box-shadow: 0 4px 12px rgba(124, 247, 107, 0.3);
  209.         }
  210.         
  211.         .btn-cancel:hover {
  212.             background-color: #e0b000;
  213.             transform: translateY(-2px);
  214.             box-shadow: 0 4px 12px rgba(224, 176, 0, 0.3);
  215.         }
  216.         
  217.         /* Responsive Adjustments */
  218.         @media (max-width: 992px) {
  219.             .navbar-collapse {
  220.                 background-color: var(--dark);
  221.                 padding: 1rem;
  222.                 margin-top: 0.5rem;
  223.                 border-radius: 8px;
  224.                 box-shadow: 0 5px 15px rgba(0,0,0,0.1);
  225.             }
  226.             
  227.             .nav-item {
  228.                 margin: 2px 0;
  229.             }
  230.             
  231.             .dropdown-menu {
  232.                 margin-top: 0;
  233.                 box-shadow: none;
  234.                 border-left: 3px solid var(--primary);
  235.                 border-top: none;
  236.             }
  237.         }
  238.         .main-wrapper {
  239.             min-height: calc(100vh - var(--navbar-height));
  240.             display: flex;
  241.             flex-direction: column;
  242.         }
  243.         main {
  244.             flex: 1;
  245.             overflow-y: auto; /* Autorise le scroll si le contenu dépasse */
  246.             padding: 2rem 0;
  247.         }
  248.         .nav-link:hover, .nav-link:focus, .nav-link {
  249.         color: #c0c5d3ff !important;
  250.         
  251.         transform: translateY(-1px);
  252.         }
  253.     </style>
  254. </head>
  255. <body>
  256.     <!-- Navigation Bar -->
  257.     {# <header class="navbar navbar-expand-lg navbar-dark">
  258.         <div class="navbar-container container-fluid">
  259.             {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') %}
  260.                 <a class="navbar-brand" href="{{ path('admin')}}">
  261.                     <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">
  262.                     Espace Admin
  263.                 </a>
  264.             {% else %}
  265.                 <a class="navbar-brand" href="{{ path('account')}}">
  266.                     <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">
  267.                     Espace User
  268.                 </a>
  269.             {% endif %}
  270.             
  271.             <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-label="Toggle navigation">
  272.                 <span class="navbar-toggler-icon"></span>
  273.             </button>
  274.             <div class="collapse navbar-collapse" id="mainNavbar">
  275.                 <ul class="navbar-nav me-auto">
  276.                     <!-- Gestion Carburant -->
  277.                     {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}
  278.                     <li class="nav-item dropdown">
  279.                         <a class="nav-link dropdown-toggle" href="#" id="carburantDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  280.                             <i class="fas fa-gas-pump"></i> Gestion Carburant
  281.                         </a>
  282.                         <ul class="dropdown-menu" aria-labelledby="carburantDropdown">
  283.                             {% if is_granted('ROLE_ADMIN') %}
  284.                             <li><a class="dropdown-item" href="{{ path('user_index')}}"><i class="fas fa-users"></i> Utilisateurs</a></li>
  285.                             {% endif %}
  286.                             <li><a class="dropdown-item" href="{{path('dkv_index_plus')}}"><i class="fas fa-file-excel"></i> Excel DKV</a></li>
  287.                             <li><a class="dropdown-item" href="{{path('transaction_total')}}"><i class="fas fa-file-excel"></i> Excel Total</a></li>
  288.                             <li><a class="dropdown-item" href="{{path('transaction_leclerc')}}"><i class="fas fa-file-excel"></i> Excel Leclerc</a></li>
  289.                             <li><a class="dropdown-item" href="{{path('app_cart_total')}}"><i class="fas fa-file-excel"></i> Excel Cartes</a></li>
  290.                         </ul>
  291.                     </li>
  292.                     {% endif %}
  293.                     
  294.                     <!-- Gestion Client -->
  295.                     {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CLIENT') %}
  296.                     <li class="nav-item dropdown">
  297.                         <a class="nav-link dropdown-toggle" href="#" id="clientDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  298.                             <i class="fas fa-users-cog"></i> Gestion Client
  299.                         </a>
  300.                         <ul class="dropdown-menu" aria-labelledby="clientDropdown">
  301.                             <li><a class="dropdown-item" href="{{path('ane_import_excel')}}"><i class="fas fa-file-import"></i> Excel ANE</a></li>
  302.                         </ul>
  303.                     </li>
  304.                     {% endif %}
  305.                     
  306.                     <!-- Gestion Factures -->
  307.                     {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_FACTURES') %}
  308.                     <li class="nav-item dropdown">
  309.                         <a class="nav-link dropdown-toggle" href="#" id="facturesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  310.                             <i class="fas fa-file-invoice-dollar"></i> Gestion Factures
  311.                         </a>
  312.                         <ul class="dropdown-menu" aria-labelledby="facturesDropdown">
  313.                             <li><a class="dropdown-item" href="{{path('devis_liste')}}"><i class="fas fa-file-signature"></i> Devis</a></li>
  314.                             <li><a class="dropdown-item" href="{{path('fiche_mission_index')}}"><i class="fas fa-clipboard-check"></i> Fiches Mission</a></li>
  315.                             <li><a class="dropdown-item" href="{{path('facture_index')}}"><i class="fas fa-calculator"></i> Fiches calcul</a></li>
  316.                             <li><a class="dropdown-item" href="{{path('facturefiche_index')}}"><i class="fas fa-file-invoice"></i> Factures</a></li>
  317.                         </ul>
  318.                     </li>
  319.                     {% endif %}
  320.                 </ul>
  321.                 
  322.                 <!-- User Menu -->
  323.                 <ul class="navbar-nav">
  324.                     <li class="nav-item dropdown user-menu">
  325.                         <a class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  326.                             <i class="fas fa-user-circle me-2"></i>
  327.                             <span>{{app.user.firstname}}</span>
  328.                         </a>
  329.                         <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
  330.                             <li><a class="dropdown-item" href="{{path('account')}}"><i class="fas fa-user-cog"></i> Profil</a></li>
  331.                             <li><hr class="dropdown-divider"></li>
  332.                             <li><a class="dropdown-item" href="{{path('app_logout')}}"><i class="fas fa-sign-out-alt"></i> Déconnexion</a></li>
  333.                         </ul>
  334.                     </li>
  335.                 </ul>
  336.             </div>
  337.         </div>
  338.     </header> #}
  339. <header class="navbar navbar-expand-lg navbar-dark">
  340.     {# <div class="navbar-container container-fluid"> #}
  341.     <div class="container-fluid">
  342.         {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') %}
  343.             <a class="navbar-brand" href="{{ path('admin') }}">
  344.                 <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">
  345.                 Espace Admin
  346.             </a>
  347.         {% else %}
  348.             <a class="navbar-brand" href="{{ path('account') }}">
  349.                 <img src="{{ asset('assets/img/bnb-bnb-logo.png') }}" alt="Logo" loading="lazy">
  350.                 Espace User
  351.             </a>
  352.         {% endif %}
  353.         
  354.         <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNavbar" aria-label="Toggle navigation">
  355.             <span class="navbar-toggler-icon"></span>
  356.         </button>
  357.         <div class="collapse navbar-collapse" id="mainNavbar">
  358.             <ul class="navbar-nav me-auto">
  359.                 <!-- Gestion des Cartes -->
  360.                 {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}
  361.                 <li class="nav-item dropdown">
  362.                     <a class="nav-link dropdown-toggle" href="#" id="cartesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  363.                         <i class="fas fa-credit-card"></i> Gestion des Cartes
  364.                     </a>
  365.                     <ul class="dropdown-menu" aria-labelledby="cartesDropdown">
  366.                         <li><a class="dropdown-item" href="{{ path('app_carte_uta') }}"><i class="fas fa-file-excel"></i> Cartes UTA</a></li>
  367.                         <li><a class="dropdown-item" href="{{ path('app_cart_total') }}"><i class="fas fa-file-excel"></i> Cartes ANE + Total</a></li>
  368.                     </ul>
  369.                 </li>
  370.                 {% endif %} #}
  371.                 <!-- Gestion Carburant -->
  372.                 {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}
  373.                 <li class="nav-item dropdown">
  374.                     <a class="nav-link dropdown-toggle" href="#" id="carburantDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  375.                         <i class="fas fa-gas-pump"></i> Gestion Utilisateurs
  376.                     </a>
  377.                     <ul class="dropdown-menu" aria-labelledby="carburantDropdown">
  378.                         {% if is_granted('ROLE_ADMIN') %}
  379.                         <li><a class="dropdown-item" href="{{ path('user_index') }}"><i class="fas fa-users"></i> Utilisateurs</a></li>
  380.                         {% endif %}
  381.                        
  382.                         
  383.                     </ul>
  384.                 </li>
  385.                 {% endif %}
  386.                 {# {% if is_granted('ROLE_COMMU') 
  387.                 or is_granted('ROLE_COMMER') 
  388.                 or is_granted('ROLE_ADMIN') 
  389.                 or is_granted('ROLE_ATELIER') 
  390.                 or is_granted('ROLE_GESTION_CARBURANT') 
  391.                 %}
  392.                     <li class="nav-item dropdown">
  393.                         <a class="nav-link dropdown-toggle" href="#" id="analyseDataDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  394.                             <i class="fas fa-chart-line"></i> Analyse Data
  395.                         </a>
  396.                         <ul class="dropdown-menu" aria-labelledby="analyseDataDropdown">
  397.                         
  398.                              <li>
  399.                                 <a class="dropdown-item" href="{{ path('analyse_mensuel') }}">
  400.                                     <i class="fas fa-chart-bar"></i> Analyse Mensuel TOTAL
  401.                                 </a>
  402.                             </li> 
  403.                          
  404.                             <li>
  405.                                 <a class="dropdown-item" href="{{ path('analyse_mensuel_dkv') }}" tabindex="-1" aria-disabled="true">
  406.                                     <i class="fas fa-chart-bar"></i> Analyse Mensuel DKV 
  407.                                 </a>
  408.                             </li>
  409.                             <li>
  410.                                 <a class="dropdown-item" href="{{ path('analyse_mensuel_leclerc') }}"  tabindex="-1" aria-disabled="true">
  411.                                     <i class="fas fa-chart-bar"></i> Analyse Mensuel LECLERC 
  412.                                 </a>
  413.                             </li>
  414.                     
  415.                         </ul>
  416.                     </li>
  417.                 {% endif %} #}
  418.                 <!-- Gestion Client -->
  419.                 {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CLIENT') %}
  420.                 <li class="nav-item dropdown">
  421.                     <a class="nav-link dropdown-toggle" href="#" id="clientDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  422.                         <i class="fas fa-users-cog"></i> Gestion Client
  423.                     </a>
  424.                     <ul class="dropdown-menu" aria-labelledby="clientDropdown">
  425.                         <li><a class="dropdown-item" href="{{ path('ane_import_excel') }}"><i class="fas fa-file-import"></i> Excel ANE</a></li>
  426.                     </ul>
  427.                 </li>
  428.                 {% endif %} #}
  429.                 
  430.                 <!-- Gestion Factures -->
  431.                 {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_FACTURES') %}
  432.                 <li class="nav-item dropdown">
  433.                     <a class="nav-link dropdown-toggle" href="#" id="facturesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  434.                         <i class="fas fa-file-invoice-dollar"></i> Gestion Factures
  435.                     </a>
  436.                     <ul class="dropdown-menu" aria-labelledby="facturesDropdown">
  437.                         <li><a class="dropdown-item" href="{{ path('devis_liste') }}"><i class="fas fa-file-signature"></i> Devis</a></li>
  438.                         <li><a class="dropdown-item" href="{{ path('fiche_mission_index') }}"><i class="fas fa-clipboard-check"></i> Fiches Mission</a></li>
  439.                         <li><a class="dropdown-item" href="{{ path('facture_index') }}"><i class="fas fa-calculator"></i> Fiches calcul</a></li>
  440.                         <li><a class="dropdown-item" href="{{ path('facturefiche_index') }}"><i class="fas fa-file-invoice"></i> Factures</a></li>
  441.                     </ul>
  442.                 </li>
  443.                 {% endif %} #}
  444.                 {# {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_GESTION_CARBURANT') %}
  445.                     <li class="nav-item dropdown">
  446.                         <a class="nav-link dropdown-toggle" href="#" id="banqueDonneesDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  447.                             <i class="fas fa-database"></i> Banque des données
  448.                         </a>
  449.                         <ul class="dropdown-menu" aria-labelledby="banqueDonneesDropdown">
  450.                             <li>
  451.                                 <a class="dropdown-item" href="{{ path('cartes_import') }}">
  452.                                     <i class="fas fa-credit-card"></i> Cartes essence
  453.                                 </a>
  454.                             </li>
  455.                              
  456.                         </ul>
  457.                     </li>
  458.                 {% endif %} #}
  459. <!-- Gestion Feuilles de Route -->
  460. {# {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}
  461. <li class="nav-item dropdown">
  462.     <a class="nav-link dropdown-toggle" href="#" id="feuillesRouteDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  463.         <i class="fas fa-clipboard-list"></i> Feuilles de Route
  464.     </a>
  465.     <ul class="dropdown-menu" aria-labelledby="feuillesRouteDropdown">
  466.         <li><a class="dropdown-item" href="{{ path('upload_multiple') }}"><i class="fas fa-upload"></i> Télécharger feuilles</a></li>
  467.         <!-- Vous pouvez ajouter d'autres options pour le traitement par la suite -->
  468.         <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-eye"></i> Consulter feuilles</a></li>
  469.         <li><a class="dropdown-item" href="#"><i class="fas fa-check-circle"></i> Validation</a></li>
  470.         <li><hr class="dropdown-divider"></li>
  471.         <li><a class="dropdown-item" href="#"><i class="fas fa-chart-bar"></i> Statistiques</a></li>
  472.     </ul>
  473. </li>
  474. {% endif %} #}
  475. {% if is_granted('ROLE_COMMU') or is_granted('ROLE_COMMER') or is_granted('ROLE_ADMIN') or is_granted('ROLE_ATELIER') or is_granted('ROLE_GESTION_CARBURANT') %}
  476. <!-- Menu Feuilles de Route -->
  477. <li class="nav-item dropdown">
  478.     <a class="nav-link dropdown-toggle" href="#" id="feuillesRouteDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  479.         <i class="fas fa-clipboard-list"></i> Feuilles de Route
  480.     </a>
  481.     <ul class="dropdown-menu" aria-labelledby="feuillesRouteDropdown">
  482.         <!-- Section Téléchargement -->
  483.         <li class="dropdown-header">
  484.             <i class="fas fa-upload"></i> Téléchargement
  485.         </li>
  486.         <li><a class="dropdown-item" href="{{ path('upload_multiple') }}"><i class="fas fa-file-upload"></i> Importer feuilles</a></li>
  487.         
  488.         <!-- Section Consultation -->
  489.         <li class="dropdown-header">
  490.             <i class="fas fa-eye"></i> Consultation
  491.         </li>
  492.         <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-list"></i> Liste des feuilles</a></li>
  493.         
  494.         <!-- NOUVELLES FONCTIONNALITÉS -->
  495.         <li class="dropdown-header">
  496.             <i class="fas fa-user-tie"></i> Gestion Heures
  497.         </li>
  498.         <li>
  499.             <a class="dropdown-item" href="{{ path('timesheet_index') }}">
  500.                 <i class="fas fa-search"></i> Rechercher chauffeur
  501.             </a>
  502.         </li>
  503.         <li>
  504.             <a class="dropdown-item" href="{{ path('timesheet_index') }}">
  505.                 <i class="fas fa-file-export"></i> Télécharger heures travail
  506.             </a>
  507.         </li>
  508.         
  509.         <!-- Section Validation -->
  510.         <li class="dropdown-header">
  511.             <i class="fas fa-check-circle"></i> Validation
  512.         </li>
  513.         <li><a class="dropdown-item" href="{{ path('upload_list') }}"><i class="fas fa-check"></i> Valider feuilles</a></li>
  514.         {# <li><a class="dropdown-item" href="#"><i class="fas fa-history"></i> Historique validation</a></li> #}
  515.         
  516.         <!-- Section Rapports -->
  517.         {# <li class="dropdown-header">
  518.             <i class="fas fa-chart-bar"></i> Rapports
  519.         </li>
  520.         <li><a class="dropdown-item" href="#"><i class="fas fa-chart-line"></i> Statistiques</a></li> #}
  521.     </ul>
  522. </li>
  523. {% endif %}
  524. <!-- Menu Configuration (séparé) -->
  525. {% if is_granted('ROLE_ADMIN') or is_granted('ROLE_GESTION_HEURES') %}
  526. <li class="nav-item dropdown">
  527.     <a class="nav-link dropdown-toggle" href="#" id="configDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  528.         <i class="fas fa-cogs"></i> Configuration
  529.     </a>
  530.     <ul class="dropdown-menu" aria-labelledby="configDropdown">
  531.         <!-- Section Forfaits -->
  532.         <li class="dropdown-header">
  533.             <i class="fas fa-business-time"></i> Gestion des Forfaits
  534.         </li>
  535.         <li>
  536.             <a class="dropdown-item" href="{{ path('admin_forfait_config_index') }}">
  537.                 <i class="fas fa-sliders-h"></i> Configurations Forfaits
  538.             </a>
  539.         </li>
  540.         <li>
  541.             <a class="dropdown-item" href="{{ path('admin_forfait_config_new') }}">
  542.                 <i class="fas fa-plus-circle"></i> Nouvelle configuration
  543.             </a>
  544.         </li>
  545.         
  546.         <!-- Section Vacations -->
  547.         <li class="dropdown-header">
  548.             <i class="fas fa-clock"></i> Valeurs Vacations
  549.         </li>
  550.     
  551.         <li>
  552.             <a class="dropdown-item" href="#">
  553.                 <i class="fas fa-history"></i> Historique modifications
  554.             </a>
  555.         </li>
  556.     </ul>
  557. </li>
  558. {% endif %}
  559.             </ul>
  560.             
  561.             <!-- User Menu -->
  562.             <ul class="navbar-nav">
  563.                 <li class="nav-item dropdown user-menu">
  564.                     <a class="nav-link dropdown-toggle d-flex align-items-center" href="#" id="userDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  565.                         <i class="fas fa-user-circle me-2"></i>
  566.                         <span>{{ app.user.firstname }}</span>
  567.                     </a>
  568.                     <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
  569.                         <li><a class="dropdown-item" href="{{ path('account') }}"><i class="fas fa-user-cog"></i> Profil</a></li>
  570.                         <li><hr class="dropdown-divider"></li>
  571.                         <li><a class="dropdown-item" href="{{ path('app_logout') }}"><i class="fas fa-sign-out-alt"></i> Déconnexion</a></li>
  572.                     </ul>
  573.                 </li>
  574.             </ul>
  575.         </div>
  576.     </div>
  577. </header>
  578.     <!-- Main Content -->
  579.     <main class="main-wrapper">
  580.         {% block content %}{% endblock %}
  581.         {% block body %}{% endblock %}
  582.     </main>
  583.     <!-- JavaScript Libraries -->
  584.     <script src="{{ asset('assets/vendor/bootstrap/js/bootstrap.bundle.min.js') }}" defer></script>
  585.     
  586.     {% block javascripts %}{% endblock %}
  587. </body>
  588. </html>