templates/base.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. {% if app.request.locale == 'en'  %}
  3. <html dir="ltr" lang="en" data-lg="en">
  4. {% elseif app.request.locale == 'fr'%}
  5. <html dir="ltr" lang="fr" data-lg="fr">
  6. {% endif %}
  7. <head>
  8.     <meta charset="utf-8">
  9.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  10.     {# Tell the browser to be responsive to screen width #}
  11.     <meta name="viewport" content="width=device-width, initial-scale=1">
  12.     <meta name="description" content="">
  13.     <meta name="author" content="">
  14.     {# Favicon icon #}
  15.     <link rel="icon" type="image/png" sizes="32x32" href="{{ asset('/favicon-32x32.png') }}">
  16.     <title>MainChain {% block title %}{% endblock %}</title>
  17.     <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  18.     <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  19.     <!--[if lt IE 9]>
  20.     <script src="{{ asset('libs/html5shiv/3.7.0/html5shiv.js') }}"></script>
  21.     <script src="{{ asset('libs/respond/1.4.2/respond.min.js') }}"></script>
  22.     <![endif]-->
  23.     {% block stylesheets %}
  24.         <link href="{{ asset('css/import.css') }}" rel="stylesheet" />
  25.         <link href="{{ asset('css/style.css') }}" rel="stylesheet" />
  26.         <link href="{{ asset('css/app.css') }}" rel="stylesheet" />
  27.         <link href="{{ asset('css/bootstrap-datepicker-1.9.0.css') }}" rel="stylesheet" />
  28.         <link href="{{ asset('libs/datatables.net-dt-2.0.3/css/datatables-dt-2.0.3.min.css') }}" rel="stylesheet" />
  29.         <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />
  30.         {% if app.request.attributes.get('_route') == 'dashboard' %}
  31.             <link href="{{ asset('libs/morris.js/morris.css') }}" rel="stylesheet" />
  32.             <link href="{{ asset('libs/daterangepicker/daterangepicker.css') }}" rel="stylesheet" />
  33.         {% endif %}
  34.     {% endblock %}
  35. </head>
  36. <body>
  37. {# ============================================================== #}
  38. {# Main wrapper - style you can find in pages.scss #}
  39. {# ============================================================== #}
  40. <div id="main-wrapper" data-theme="light" data-layout="vertical" data-navbarbg="skin6" data-sidebartype="full"
  41.      data-sidebar-position="fixed" data-header-position="fixed" data-boxed-layout="full">
  42.     {# ============================================================== #}
  43.     {# Topbar header - style you can find in pages.scss #}
  44.     {# ============================================================== #}
  45.     <header class="topbar" data-navbarbg="skin6">
  46.         <nav class="navbar top-navbar navbar-expand-md">
  47.             <div class="navbar-header" data-logobg="skin6">
  48.                 {# This is for the sidebar toggle which is visible on mobile only #}
  49.                 <a class="nav-toggler waves-effect waves-light d-block d-md-none" href="javascript:void(0)">
  50.                     <i class="ti-menu ti-close"></i></a>
  51.                 {# ============================================================== #}
  52.                 {# Logo #}
  53.                 {# ============================================================== #}
  54.                 <div class="navbar-brand">
  55.                     {# Logo icon #}
  56.                     <a href="{{ path('home') }}">
  57.                         <b class="logo-icon">
  58.                             {# Dark Logo icon #}
  59.                             <img src="{{ asset('img/logo-icon.png') }}" width="45" alt="homepage" class="dark-logo" />
  60.                             {# Light Logo icon #}
  61.                             <img src="{{ asset('/images/logo-icon.png') }}" alt="homepage" class="light-logo" />
  62.                         </b>
  63.                         {# End Logo icon #}
  64.                         {# Logo text #}
  65.                         <span class="logo-text">
  66.                             <img src="{{ asset('img/logo-text.png') }}" width="132" alt="homepage" class="dark-logo" />
  67.                         </span>
  68.                     </a>
  69.                 </div>
  70.                 {# ============================================================== #}
  71.                 {# End Logo #}
  72.                 {# ============================================================== #}
  73.                 {# ============================================================== #}
  74.                 {# Toggle which is visible on mobile only #}
  75.                 {# ============================================================== #}
  76.                 <a class="topbartoggler d-block d-md-none waves-effect waves-light" href="javascript:void(0)"
  77.                    data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
  78.                    aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  79.                     <i class="ti-more"></i>
  80.                 </a>
  81.                 <a class="topbartogglerclose d-none waves-effect waves-light" href="javascript:void(0)"
  82.                    data-bs-target="#navbarSupportedContent"
  83.                    aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  84.                     <i class="ti-close" style="padding: 0 15px"></i>
  85.                 </a>
  86.             </div>
  87.             {# ============================================================== #}
  88.             {# End Logo #}
  89.             {# ============================================================== #}
  90.             <div class="navbar-collapse collapse" id="navbarSupportedContent">
  91.                 {# ============================================================== #}
  92.                 {# toggle and nav items #}
  93.                 {# ============================================================== #}
  94.                 <a id="miniSidebar" class="d-none d-md-block" href="" style="background-color: #f9fbfd; :hover { background-color: #f9fbfd; }"><i class="fas fa-chevron-left d-none d-md-block"></i></a>
  95.                 <ul class="navbar-nav float-left mr-auto ml-3 pl-1 col-4">
  96.                     {# ============================================================== #}
  97.                     {# create new #}
  98.                     {# ============================================================== #}
  99.                     {% set route = app.request.attributes.get('_route') %}
  100.                     {% set route_params = app.request.attributes.get('_route_params') %}
  101.                     {% set params = route_params|merge(app.request.query.all) %}
  102.                     {% for locale in locales  %}
  103.                         {% if locale != app.request.locale %}
  104.                             {#<a class="dropdown-item" href="{{ path(route, params|merge({ _locale: locale })) }}">
  105.                                         {% set fullLocalTerm = '' %}
  106.                                         {% if locale == 'fr' %}
  107.                                             {% set fullLocalTerm = 'Français' %}
  108.                                         {% elseif locale == 'en'%}
  109.                                             {% set fullLocalTerm = 'English' %}
  110.                                         {% endif %}
  111.                                         {{ fullLocalTerm }}
  112.                                         </a>#}
  113.                         {% endif %}
  114.                     {% endfor %}
  115.                     {% if app.request.locale == 'en'  %}
  116.                         {% set locale =  'fr' %}
  117.                         {% set value =  'on' %}
  118.                         {% set title =  'Changer la langue pour : Français' %}
  119.                     {% elseif app.request.locale == 'fr'%}
  120.                         {% set locale =  'en' %}
  121.                         {% set value =  'off' %}
  122.                         {% set title =  'Change the language to : English' %}
  123.                     {% endif  %}
  124.                     {% block bubble_nav %}
  125.                     {% endblock %}
  126.                 </ul>
  127.                 {#                ============================================================== #}
  128.                 {#                Right side toggle and nav items #}
  129.                 {#                ============================================================== #}
  130.                 <ul class="navbar-nav d-flex justify-content-end col-6">
  131.                     {#                ============================================================== #}
  132.                     {#                    Search #}
  133.                     {#                ============================================================== #}
  134.                     {% set b_key = app.session.get('b_key', 0) %}
  135.                     {% set profiles = app.user.getProfiles() %}
  136.                     <div class="bubble-info">
  137.                         <div class="bubble-credits">
  138.                             {% if profiles[b_key].is_sa != 1 %}
  139.                                 {% set bubble_info = bubble_service.getBubbleCreditInfo(app.user, app.user.profiles[b_key].b_id) %}
  140.                                 {% if (bubble_info.number_credit) and profiles[b_key].is_ind != 1 %}
  141.                                     {% if profiles[b_key].is_op != 1 %}
  142.                                         <li class="nav-item dropdown float-right">
  143.                                             <a class="nav-link dropdown-toggle dropdown-toggle-credit" style="padding-top: 0px !important" data-btn="not_cancelled" href="javascript:void(0)" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  144.                                                 <div class="bubble-credits-block">
  145.                                                     <span class="number-credit">
  146.                                                         {{ bubble_info.number_credit | number_format(2) }}
  147.                                                         {% if bubble_info.number_credit == 1 %}
  148.                                                             {% trans %}crédit{% endtrans %}
  149.                                                         {% else %}
  150.                                                             {% trans %}crédits{% endtrans %}
  151.                                                         {% endif %}
  152.                                                     </span>
  153.                                                     <span><i data-feather="chevron-down" class="svg-icon"></i></span>
  154.                                                 </div>
  155.                                             </a>
  156.                                             <div class="dropdown-menu dropdown-credits user-dd animated flipInY">
  157.                                                 <div class="bubble-credits-block" style="display: flex;">
  158.                                                     <span>{{ ((bubble_info.number_credit)*(bubble_info.credit_value)) | number_format(2) }}</span>
  159.                                                     <span style="margin-left: 5px;">€</span>
  160.                                                 </div>
  161.                                             </div>
  162.                                         </li>
  163.                                     {% endif %}
  164.                                 {% endif %}
  165.                                 {% if (bubble_info.number_credit) and profiles[b_key].is_ind == 1 %}
  166.                                     {% set ind_id = app.user.uId %}
  167.                                     <div class="bubble-credits-block"><b>Compteur {{ bubble_info.ind_name }}</b> : <span class="number-credit indus-credit">
  168.                                         {{ (bubble_info.balance is iterable)  ?  bubble_info.balance[0]['balance'] : bubble_info.balance | number_format(2) }} €
  169.                                     </span></div>
  170.                                 {% endif %}
  171.                             {% endif %}
  172.                         </div>
  173.                     </div>
  174.                     {#                ============================================================== #}
  175.                     {#                    User profile and search #}
  176.                     {#                ============================================================== #}
  177.                     <div class="bubble-info col-12">
  178.                         <div class="bubble-profile col-12">
  179.                             <li class="nav-item dropdown float-right col-12">
  180.                                 <a class="d-flex align-items-center justify-content-end nav-link dropdown-toggle dropdown-toggle-profile text-truncate col-12" data-btn="not_cancelled" href="javascript:void(0)" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  181.                                     {% set username = app.user.username|split('@') %}
  182.                                     <span class="bubble-profile-block text-truncate" style="font-size: 16px; padding-right : 5px;">
  183.                                         {{ app.user.uFname ? app.user.uFname : '' }} {{ app.user.uLname ? app.user.uLname : username[0] }}
  184.                                     </span>
  185.                                     <img src="{{asset('img/signup6.jpg')}}" alt="user"
  186.                                             {% set b_key = app.session.get('b_key', 0) %}
  187.                                             {% set profiles = app.user.getProfiles() %}
  188.                                             {% if app.user.getIsSa == 1  %}
  189.                                                 class="d-block rounded-circle icon-sa" data-bs-toggle="tooltip" title="SUPER ADMIN"
  190.                                             {% elseif profiles[b_key].is_ba == 1  %}
  191.                                                 class="d-block rounded-circle icon-ba" data-bs-toggle="tooltip" title="Administrateur"
  192.                                             {% elseif profiles[b_key].is_op == 1  %}
  193.                                                 class="d-block rounded-circle icon-op" data-bs-toggle="tooltip" title="Opérateur"
  194.                                             {% elseif profiles[b_key].is_ind == 1  %}
  195.                                                 class="d-block rounded-circle icon-ind" data-bs-toggle="tooltip" title="Industriel"
  196.                                             {% elseif profiles[b_key].is_vp == 1  %}
  197.                                                 class="d-block rounded-circle icon-va" data-bs-toggle="tooltip" title="Validateur de plan"
  198.                                             {% elseif profiles[b_key].is_vp == 1  %}
  199.                                                 class="d-block rounded-circle icon-va" data-bs-toggle="tooltip" title="Validateur d'impression"
  200.                                             {% elseif profiles[b_key].is_man == 1  %}
  201.                                                 class="d-block rounded-circle icon-man" data-bs-toggle="tooltip" title="Fabricant"
  202.                                             {% elseif profiles[b_key].is_fm == 1  %}
  203.                                                 class="d-block rounded-circle icon-sm" data-bs-toggle="tooltip" title="Responsable de formation"
  204.                                             {% elseif profiles[b_key].is_om == 1  %}
  205.                                                 class="d-block rounded-circle icon-sm" data-bs-toggle="tooltip" title="Responsable délégué"
  206.                                             {% endif %} width="40">
  207.                                 </a>
  208.                                 {# <div class="dropdown-menu dropdown-profile user-dd animated flipInY">
  209.                                     <a class="dropdown-item" href="{{ path('user_update') }}">
  210.                                         <i data-feather="edit" class="svg-icon mr-2 ml-1"></i>
  211.                                         {% trans %}Mon compte{% endtrans %}
  212.                                     </a>
  213.                                     <a class="dropdown-item text-danger" href="{{ path('logout') }}">
  214.                                         <i data-feather="power" class="svg-icon mr-2 ml-1"></i>
  215.                                         {% trans %}Déconnexion{% endtrans %}
  216.                                     </a>
  217.                                 </div> #}
  218.                             </li>
  219.                         </div>
  220.                     </div>
  221.                     {% if profiles[b_key].is_sa != 1 %}
  222.                         <div class="nav-item dropdown" style="display: flex; align-items: center;">
  223.                             <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  224.                                 <i data-feather="settings" class="svg-icon" style="width: 21px; height: 21px"></i>
  225.                             </a>
  226.                             <div class="dropdown-menu dropdown-parameters dropdown-menu-end" aria-labelledby="navbarDropdown">
  227.                                 {% if (profiles[b_key].user.read == 1) or (profiles[b_key].user.create == 1) %}
  228.                                     {% if profiles[b_key].user.read == 1 %}
  229.                                         <a class="dropdown-item" href="{{ path('bubble_user_list') }}">{% trans %}Voir les utilisateurs{% endtrans %}</a>
  230.                                     {% endif %}
  231.                                     {% if profiles[b_key].user.create == 1 %}
  232.                                         <a class="dropdown-item" href="{{ path('bubble_user_add') }}">{% trans %}Ajouter un utilisateur{% endtrans %}</a>
  233.                                     {% endif %}
  234.                                     <div class="dropdown-divider"></div>
  235.                                 {% endif %}
  236.                                 {% if (profiles[b_key].industrial.read == 1) or (profiles[b_key].industrial.create == 1) %}
  237.                                     {% if profiles[b_key].industrial.read == 1 %}
  238.                                         <a class="dropdown-item" href="{{ path('industrial_list') }}">{% trans %}Voir les industriels{% endtrans %}</a>
  239.                                     {% endif %}
  240.                                     {% if profiles[b_key].industrial.create == 1 %}
  241.                                         <a class="dropdown-item" href="{{ path('industrial_add') }}">{% trans %}Ajouter un industriel{% endtrans %}</a>
  242.                                     {% endif %}
  243.                                     <div class="dropdown-divider"></div>
  244.                                 {% endif %}
  245.                                 {% if profiles[b_key].token.read == 1 %}
  246.                                     <a class="dropdown-item" href="{{ path('api_data') }}">{% trans %}Accès API MainChain{% endtrans %}</a>
  247.                                 {% endif %}
  248.                             </div>
  249.                         </div>
  250.                     {% endif %}
  251.                     {# ============================================================== #}
  252.                     {# Change language French <--> English #}
  253.                     {# ============================================================== #}
  254.                     {% if app.request.locale == 'en'  %}
  255.                         {% set locale = 'fr' %}
  256.                         {% set title = 'Changer la langue pour : Français' %}
  257.                     {% elseif app.request.locale == 'fr'%}
  258.                         {% set locale = 'en' %}
  259.                         {% set title = 'Change the language to : English' %}
  260.                     {% endif  %}
  261.                 </ul>
  262.             </div>
  263.         </nav>
  264.     </header>
  265.     {# ============================================================== #}
  266.     {# End Topbar header #}
  267.     {# ============================================================== #}
  268.     {# ============================================================== #}
  269.     {# Left Sidebar - style you can find in sidebar.scss #}
  270.     {# ============================================================== #}
  271.     <aside class="left-sidebar" data-sidebarbg="skin6">
  272.         {# Sidebar scroll #}
  273.         <div class="scroll-sidebar" data-sidebarbg="skin6">
  274.             {# Sidebar navigation #}
  275.             <nav class="sidebar-nav">
  276.                 <ul id="sidebarnav">
  277.                     {% if app.user.getIsSa != 1  %}
  278.                         <div class="group-nav" id="menu1000">
  279.                             <ol style="list-style-type: none; padding: 0 0 0 4px;">
  280.                                 <li id="item1000" class="sidebar-item {% if 'home' in app.request.attributes.get('_route') %} selected {% endif %}">
  281.                                     <a class="sidebar-link dropdown-item" href="{{ path('home') }}" aria-expanded="false">
  282.                                         <i style="width: 22px; height: 22px;" data-feather="home" class="feather-icon"></i>
  283.                                         <span class="hide-menu" style="text-transform: capitalize; font-size: 14px;">{% trans %}Accueil{% endtrans %}</span>
  284.                                     </a>
  285.                                 </li>
  286.                             </ol>
  287.                         </div>
  288.                     {% endif %}
  289.                     {# PARTIE BULLE POUR SUPER ADMIN #}
  290.                     {% if app.user.getIsSa == 1  %}
  291.                         <li class="nav-small-cap"><span class="hide-menu">{% trans %}Gestion des bulles{% endtrans %}</span></li>
  292.                         <li class="sidebar-item {% if app.request.attributes.get('_route') == 'bubble' %} selected {% endif %}">
  293.                             <a class="sidebar-link" href="{{ path('bubble') }}" aria-expanded="false">
  294.                                 <i data-feather="cloud" class="feather-icon"></i>
  295.                                 <span class="hide-menu">{% trans %}Mes bulles{% endtrans %}</span>
  296.                             </a>
  297.                         </li>
  298.                         <li class="sidebar-item {% if '/bubble/add' in app.request.attributes.get('_route') %} selected {% endif %}">
  299.                             <a class="sidebar-link" href="{{ path('bubble_add') }}" aria-expanded="false">
  300.                                 <i data-feather="plus-square" class="feather-icon"></i>
  301.                                 <span class="hide-menu">{% trans %}Créer une bulle{% endtrans %}</span>
  302.                             </a>
  303.                         </li>
  304.                     {% endif %}
  305.                     {#  NAV SITE  #}
  306.                     {% if app.user.getIsSa != 1  %}
  307.                         {% set profiles = app.user.getProfiles() %}
  308.                         {% set b_key = app.session.get('b_key', 0) %}
  309.                         {# BLOCk IMPRESSIONS >>> #}
  310.                         {% if profiles[b_key].job_order.read == 1 or profiles[b_key].job_order.create == 1 or profiles[b_key].history.read == 1 or profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1  or profiles[b_key].is_op == 1  %}
  311.                             <div class="group-nav" id="menu1">
  312.                             <span class="nav-small-cap" style="color: #818181">
  313.                                 <a href="#" class="hide-menu dropdown-btn">
  314.                                     <i style="color: #9eabc0;">
  315.                                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-layers">
  316.                                             <polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/>
  317.                                         </svg>
  318.                                     </i>
  319.                                 </a>
  320.                                 <li style="padding-left: 0" class="sidebar-item hide-item {% if 'all_job_order_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  321.                                     {% if profiles[b_key].job_order.read == 1 %}
  322.                                         <a style="padding-left: 2px" class="sidebar-link" href="{{ path('all_job_order_list') }}" aria-expanded="false">
  323.                                         <span class="hide-menu"style="text-transform: capitalize; font-size: 14px;">{% trans %}Impressions{% endtrans %}</span>
  324.                                     </a>
  325.                                     {% else %}
  326.                                         <a class="sidebar-item hide-item">
  327.                                         <span class="hide-menu"style="text-transform: capitalize; font-size: 14px;">{% trans %}Impressions{% endtrans %}</span>
  328.                                     </a>
  329.                                     {% endif %}
  330.                                 </li>
  331.                             </span>
  332.                                 <div class="dropdown-container">
  333.                                     <ol style="list-style-type: none;">
  334.                                         {# ORDRES D'IMPRESSIONS - Créer >>> #}
  335.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1  or profiles[b_key].is_op == 1 or profiles[b_key].job_order.create == 1 %}
  336.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  337.                                                 Créer
  338.                                             </li>
  339.                                         {% endif %}
  340.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1  or profiles[b_key].is_op == 1 %}
  341.                                             <li id="item1" class="sidebar-item hide-item {% if 'production_order_received' in app.request.attributes.get('_route') %} selected {% endif %}">
  342.                                                 <a class="sidebar-link dropdown-item" href="{{ path('production_order_received') }}" aria-expanded="false">
  343.                                                     <span class="hide-menu">{% trans %}Production à décliner{% endtrans %}</span>
  344.                                                 </a>
  345.                                             </li>
  346.                                         {% endif %}
  347.                                         {% if profiles[b_key].job_order.create == 1 %}
  348.                                             <li id="item2" class="sidebar-item hide-item  {% if 'plan_create_job_order' in app.request.attributes.get('_route') %} selected {% endif %}">
  349.                                                 <a class="sidebar-link dropdown-item" href="{{ path('plan_create_job_order', {'plan_id' : 'null', 'production_order_id': 'null'}) }}" aria-expanded="false">
  350.                                                     <span class="hide-menu">{% trans %}Impression catalogue{% endtrans %}</span>
  351.                                                 </a>
  352.                                             </li>
  353.                                         {% endif %}
  354.                                         {# <<< ORDRES D'IMPRESSIONS - Créer #}
  355.                                         {# ORDRES D'IMPRESSIONS - Gérer / Imprimer >>> #}
  356.                                         {% if profiles[b_key].job_order.read == 1 or profiles[b_key].job_order.create == 1 %}
  357.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  358.                                                 Gérer / Imprimer
  359.                                             </li>
  360.                                         {% endif %}
  361.                                         {% if profiles[b_key].job_order.read == 1 %}
  362.                                             <li id="item3" class="sidebar-item hide-item {% if 'crm_job_order_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  363.                                                 <a class="sidebar-link dropdown-item" href="{{ path('crm_job_order_list') }}" aria-expanded="false">
  364.                                                     <span class="hide-menu">{% trans %}Ordres d'impression{% endtrans %}</span>
  365.                                                 </a>
  366.                                             </li>
  367.                                         {% endif %}
  368.                                         {% if profiles[b_key].job_order.create == 1 %}
  369.                                             <li id="item4" class="sidebar-item hide-item  {% if 'non_catalog_file' in app.request.attributes.get('_route') %} selected {% endif %}">
  370.                                                 <a class="sidebar-link dropdown-item" href="{{ path('non_catalog_file') }}" aria-expanded="false">
  371.                                                     <span class="hide-menu">{% trans %}Impression hors catalogue{% endtrans %}</span>
  372.                                                 </a>
  373.                                             </li>
  374.                                         {% endif %}
  375.                                         {# <<< ORDRES D'IMPRESSIONS - Gérer / Imprimer #}
  376.                                         {# ORDRES D'IMPRESSIONS - Valider >>> #}
  377.                                         {% if profiles[b_key].job_order.read == 1 %}
  378.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  379.                                                 Valider
  380.                                             </li>
  381.                                         {% endif %}
  382.                                         {% if profiles[b_key].job_order.read == 1 %}
  383.                                             <li id="item5" class="sidebar-item hide-item {% if 'finished_job_order_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  384.                                                 <a class="sidebar-link dropdown-item" href="{{ path('finished_job_order_list') }}" aria-expanded="false">
  385.                                                     <span class="hide-menu">{% trans %}Contrôle qualité{% endtrans %}</span>
  386.                                                 </a>
  387.                                             </li>
  388.                                         {% endif %}
  389.                                         {# <<< ORDRES D'IMPRESSIONS - Valider #}
  390.                                         {# ORDRES D'IMPRESSIONS - Historique >>> #}
  391.                                         {% if profiles[b_key].history.read == 1 %}
  392.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  393.                                                 Historique
  394.                                             </li>
  395.                                         {% endif %}
  396.                                         {% if profiles[b_key].history.read == 1 %}
  397.                                             <li id="item6" class="sidebar-item hide-item  {% if 'print_logs' in app.request.attributes.get('_route') %} selected {% endif %}">
  398.                                                 <a class="sidebar-link dropdown-item" href="{{ path('print_logs') }}" aria-expanded="false">
  399.                                                     <span class="hide-menu">{% trans %}Historique{% endtrans %}</span>
  400.                                                 </a>
  401.                                             </li>
  402.                                         {% endif %}
  403.                                         {# <<< ORDRES D'IMPRESSIONS - Historique #}
  404.                                     </ol>
  405.                                 </div>
  406.                             </div>
  407.                         {% endif %}
  408.                         {# <<< BLOCk IMPRESSIONS #}
  409.                         {# BLOCk PRODUCTIONS >>> #}
  410.                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_ba == 1 or profiles[b_key].is_op == 1 %}
  411.                             <div class="group-nav" id="menu2">
  412.                             <span class="nav-small-cap" style="padding: 0 0 0 -2px;">
  413.                                 <a href="#" class="hide-menu dropdown-btn">
  414.                                     <i class="fa fa-cubes" aria-hidden="true" style="font-size: 24px; color: #9eabc0"></i>
  415.                                 </a>
  416.                                 <li style="padding-left: 0" class="sidebar-item hide-item {% if 'production_order_generic' in app.request.attributes.get('_route') %} selected {% endif %}">
  417.                                     <a style="padding-left: 2px" class="sidebar-link" href="{{ path('production_order_generic') }}" aria-expanded="false">
  418.                                         <span class="hide-menu"style="text-transform: capitalize; font-size: 14px; ">{% trans %}Productions{% endtrans %}</span>
  419.                                     </a>
  420.                                 </li>
  421.                             </span>
  422.                                 <div class="dropdown-container">
  423.                                     <ol style="list-style-type: none;">
  424.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_ba == 1 %}
  425.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  426.                                                 Créer
  427.                                             </li>
  428.                                         {% endif %}
  429.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_ba == 1 %}
  430.                                             <li id="item7" class="sidebar-item hide-item {% if 'plan_create_production_order' in app.request.attributes.get('_route') %} selected {% endif %}">
  431.                                                 <a class="sidebar-link dropdown-item" href="{{ path('plan_create_production_order', {'plan_id' : 'null'}) }}" aria-expanded="false">
  432.                                                     <span class="hide-menu">{% trans %}Production à initier{% endtrans %}</span>
  433.                                                 </a>
  434.                                             </li>
  435.                                         {% endif %}
  436.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_ba == 1 or profiles[b_key].is_op == 1 %}
  437.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  438.                                                 Gérer / Suivre
  439.                                             </li>
  440.                                         {% endif %}
  441.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_ba == 1 %}
  442.                                             <li id="item8" class="sidebar-item hide-item  {% if 'get_production_order' in app.request.attributes.get('_route') %} selected {% endif %}">
  443.                                                 <a class="sidebar-link dropdown-item" href="{{ path('get_production_order') }}" aria-expanded="false">
  444.                                                     <span class="hide-menu">{% trans %}Ordres générés{% endtrans %}</span>
  445.                                                 </a>
  446.                                             </li>
  447.                                         {% endif %}
  448.                                         {% if profiles[b_key].is_om == 1 or profiles[b_key].is_fm == 1 or profiles[b_key].is_op == 1 %}
  449.                                             <li id="item9" class="sidebar-item hide-item {% if 'production_order_received' in app.request.attributes.get('_route') %} selected {% endif %}">
  450.                                                 <a class="sidebar-link dropdown-item" href="{{ path('production_order_received') }}" aria-expanded="false">
  451.                                                     <span class="hide-menu">{% trans %}Ordres reçus{% endtrans %}</span>
  452.                                                 </a>
  453.                                             </li>
  454.                                         {% endif %}
  455.                                     </ol>
  456.                                 </div>
  457.                             </div>
  458.                         {% endif %}
  459.                         {# <<< BLOCk PRODUCTIONS #}
  460.                         {# BLOCk IMPRIMANTES >>> #}
  461.                         {% if profiles[b_key].planning.read == 1 or profiles[b_key].printer.read == 1%}
  462.                             <div class="group-nav" id="menu3">
  463.                             <span class="nav-small-cap" style="color: #818181">
  464.                                 <a href="#" class="hide-menu dropdown-btn">
  465.                                     <span style="padding: 0 0 0 2px">
  466.                                         <svg width="28px" height="26px" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
  467.                                           <rect x="8" y="12" width="48" height="40" rx="4" fill="#B0BEC5"/> <rect x="12" y="16" width="40" height="28" fill="#FFFFFF"/>
  468.                                           <path d="M16 48L24 32H40L48 48H16Z" fill="#999999"/> <rect x="22" y="26" width="20" height="2" rx="1" fill="#B0BEC5"/>
  469.                                           <rect x="22" y="30" width="20" height="2" rx="1" fill="#B0BEC5"/> <rect x="12" y="46" width="4" height="2" rx="1" fill="#B0BEC5"/>
  470.                                           <rect x="48" y="46" width="4" height="2" rx="1" fill="#B0BEC5"/> <rect x="14" y="52" width="36" height="2" fill="#90A4AE"/>
  471.                                           <rect x="14" y="58" width="36" height="2" fill="#90A4AE"/> <circle cx="18" cy="8" r="2" fill="#B0BEC5"/>
  472.                                           <circle cx="24" cy="8" r="2" fill="#B0BEC5"/> <rect x="32" y="6" width="14" height="4" rx="2" fill="#B0BEC5"/>
  473.                                         </svg>
  474.                                     </span>
  475.                                 </a>
  476.                                 <li style="padding-left: 0" class="sidebar-item hide-item {% if 'printer_l_planning' in app.request.attributes.get('_route') %} selected {% endif %}">
  477.                                     <a style="padding-left: 2px" class="sidebar-link" href="{{ path('printer_l_planning') }}" aria-expanded="false">
  478.                                         <span class="hide-menu"style="text-transform: capitalize; font-size: 14px;">{% trans %}Imprimantes{% endtrans %}</span>
  479.                                     </a>
  480.                                 </li>
  481.                                 {# <a class="sidebar-item hide-item">
  482.                                     <span class="hide-menu" style="text-transform: capitalize; padding: 0 0 0 4px; font-size: 14px; color: #818181">{% trans %}Imprimantes{% endtrans %}</span>
  483.                                 </a> #}
  484.                             </span>
  485.                                 <div class="dropdown-container">
  486.                                     <ol style="list-style-type: none;">
  487.                                         {% if profiles[b_key].printer.read == 1 or profiles[b_key].planning.read == 1 %}
  488.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  489.                                                 Gérer
  490.                                             </li>
  491.                                         {% endif %}
  492.                                         {% if profiles[b_key].printer.read == 1 %}
  493.                                             <li id="item10" class="sidebar-item hide-item {% if 'printer_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  494.                                                 <a class="sidebar-link dropdown-item" href="{{ path('printer_list') }}" aria-expanded="false">
  495.                                                     <span class="hide-menu">{% trans %}Liste des imprimantes{% endtrans %}</span>
  496.                                                 </a>
  497.                                             </li>
  498.                                         {% endif %}
  499.                                         {% if profiles[b_key].planning.read == 1%}
  500.                                             <li id="item11" class="sidebar-item hide-item  {% if 'production_planning' in app.request.attributes.get('_route') %} selected {% endif %}">
  501.                                                 <a class="sidebar-link dropdown-item" href="{{ path('production_planning') }}" aria-expanded="false">
  502.                                                     <span class="hide-menu">{% trans %}Planning d'impressions{% endtrans %}</span>
  503.                                                 </a>
  504.                                             </li>
  505.                                         {% endif %}
  506.                                     </ol>
  507.                                 </div>
  508.                             </div>
  509.                         {% endif %}
  510.                         {# <<< BLOCk IMPRIMANTES #}
  511.                         {# BLOCk CATALOGUE >>> #}
  512.                         {% if profiles[b_key].plan.read == 1 %}
  513.                             <div class="group-nav" id="menu4">
  514.                             <span class="nav-small-cap" style="padding: 0px 33px !important; color: #818181">
  515.                                 <a href="#" class="hide-menu dropdown-btn">
  516.                                     <span style="color: #9eabc0">
  517.                                         <svg xmlns="http://www.w3.org/2000/svg" width="26" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file-text">
  518.                                             <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/>
  519.                                             <line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/>
  520.                                         </svg>
  521.                                     </span>
  522.                                 </a>
  523.                                 <li style="padding-left: 0" class="sidebar-item hide-item {% if 'plan_l_gen' in app.request.attributes.get('_route') %} selected {% endif %}">
  524.                                     <a style="padding-left: 2px" class="sidebar-link" href="{{ path('plan_l_gen') }}" aria-expanded="false">
  525.                                         <span class="hide-menu"style="text-transform: capitalize; font-size: 14px;">{% trans %}Catalogue{% endtrans %}</span>
  526.                                     </a>
  527.                                 </li>
  528.                             </span>
  529.                                 <div class="dropdown-container">
  530.                                     <ol style="list-style-type: none;">
  531.                                         {% if profiles[b_key].plan.read == 1 %}
  532.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  533.                                                 Gérer
  534.                                             </li>
  535.                                         {% endif %}
  536.                                         {% if profiles[b_key].plan.read == 1 %}
  537.                                             <li id="item12" class="sidebar-item hide-item {% if 'plan_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  538.                                                 <a class="sidebar-link dropdown-item" href="{{ path('plan_list') }}" aria-expanded="false">
  539.                                                     <span class="hide-menu">{% trans %}Catalogue de fichiers{% endtrans %}</span>
  540.                                                 </a>
  541.                                             </li>
  542.                                         {% endif %}
  543.                                     </ol>
  544.                                 </div>
  545.                             </div>
  546.                         {% endif %}
  547.                         {# <<< BLOCk CATALOGUE #}
  548.                         {# BLOCk ADMINISTRATION >>> #}
  549.                         {% if profiles[b_key].industrial.read == 1 or profiles[b_key].industrial.create == 1 or profiles[b_key].user.read == 1 or profiles[b_key].user.create == 1 or profiles[b_key].structures.read == 1 or profiles[b_key].structures.create == 1 or profiles[b_key].site.read == 1 or profiles[b_key].site.create == 1 %}
  550.                             <div class="group-nav" id="menu5">
  551.                             <span class="nav-small-cap" style="padding: 0px 33px !important; color: #818181">
  552.                                 <a href="#" class="hide-menu dropdown-btn">
  553.                                     <i class="fas fa-edit" style="color: #9eabc0; font-size: 18px"></i>
  554.                                 </a>
  555.                                 <a class="sidebar-item hide-item">
  556.                                     <span class="hide-menu" style="text-transform: capitalize; padding: 0 0 0 1px; font-size: 14px;">{% trans %}Administration{% endtrans %}</span>
  557.                                 </a>
  558.                             </span>
  559.                                 <div class="dropdown-container">
  560.                                     <ol style="list-style-type: none;">
  561.                                         {% if profiles[b_key].user.create == 1 or profiles[b_key].structures.create == 1 or profiles[b_key].site.create == 1 or profiles[b_key].industrial.create == 1 %}
  562.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  563.                                                 Créer
  564.                                             </li>
  565.                                         {% endif %}
  566.                                         {% if profiles[b_key].user.create == 1 %}
  567.                                             <li id="item13" class="sidebar-item hide-item {% if 'bubble_user_add' in app.request.attributes.get('_route') %} selected {% endif %}">
  568.                                                 <a class="sidebar-link dropdown-item" href="{{ path('bubble_user_add') }}" aria-expanded="false">
  569.                                                     <span class="hide-menu">{% trans %}Un utilisateur{% endtrans %}</span>
  570.                                                 </a>
  571.                                             </li>
  572.                                         {% endif %}
  573.                                         {% if profiles[b_key].structures.create == 1 %}
  574.                                             <li id="item14" class="sidebar-item hide-item {% if 'organizations_add' in app.request.attributes.get('_route') %} selected {% endif %}">
  575.                                                 <a class="sidebar-link dropdown-item" href="{{ path('organizations_add') }}" aria-expanded="false">
  576.                                                     <span class="hide-menu">{% trans %}Une organisation{% endtrans %}</span>
  577.                                                 </a>
  578.                                             </li>
  579.                                         {% endif %}
  580.                                         {% if profiles[b_key].structures.create == 1 %}
  581.                                             <li id="item15" class="sidebar-item hide-item {% if 'formation_add' in app.request.attributes.get('_route') %} selected {% endif %}">
  582.                                                 <a class="sidebar-link dropdown-item" href="{{ path('formation_add') }}" aria-expanded="false">
  583.                                                     <span class="hide-menu">{% trans %}Une formation{% endtrans %}</span>
  584.                                                 </a>
  585.                                             </li>
  586.                                         {% endif %}
  587.                                         {% if profiles[b_key].site.create == 1 %}
  588.                                             <li id="item16" class="sidebar-item hide-item {% if 'site_add' in app.request.attributes.get('_route') %} selected {% endif %}">
  589.                                                 <a class="sidebar-link dropdown-item" href="{{ path('site_add') }}" aria-expanded="false">
  590.                                                     <span class="hide-menu">{% trans %}Un site{% endtrans %}</span>
  591.                                                 </a>
  592.                                             </li>
  593.                                         {% endif %}
  594.                                         {% if profiles[b_key].industrial.create == 1 %}
  595.                                             <li id="item17" class="sidebar-item hide-item {% if 'industrial_add' in app.request.attributes.get('_route') %} selected {% endif %}">
  596.                                                 <a class="sidebar-link dropdown-item" href="{{ path('industrial_add') }}" aria-expanded="false">
  597.                                                     <span class="hide-menu">{% trans %}Un industriel{% endtrans %}</span>
  598.                                                 </a>
  599.                                             </li>
  600.                                         {% endif %}
  601.                                         {% if profiles[b_key].user.read == 1 or profiles[b_key].structures.read == 1 or profiles[b_key].industrial.read == 1 or profiles[b_key].site.read == 1 %}
  602.                                             <li class="items-subtitle sidebar-item hide-item" style="text-align: left; font-weight: bold; padding: 12px 0 0 30px;">
  603.                                                 Gérer
  604.                                             </li>
  605.                                         {% endif %}
  606.                                         {% if profiles[b_key].user.read == 1 %}
  607.                                             <li id="item18" class="sidebar-item hide-item {% if 'bubble_user_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  608.                                                 <a class="sidebar-link dropdown-item" href="{{ path('bubble_user_list') }}" aria-expanded="false">
  609.                                                     <span class="hide-menu">{% trans %}Liste des utilisateurs{% endtrans %}</span>
  610.                                                 </a>
  611.                                             </li>
  612.                                         {% endif %}
  613.                                         {% if profiles[b_key].structures.read == 1 %}
  614.                                             <li id="item19" class="sidebar-item hide-item {% if 'organizations_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  615.                                                 <a class="sidebar-link dropdown-item" href="{{ path('organizations_list') }}" aria-expanded="false">
  616.                                                     <span class="hide-menu">{% trans %}Liste des organisations{% endtrans %}</span>
  617.                                                 </a>
  618.                                             </li>
  619.                                         {% endif %}
  620.                                         {% if profiles[b_key].structures.read == 1 %}
  621.                                             <li id="item20" class="sidebar-item hide-item {% if 'formation_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  622.                                                 <a class="sidebar-link dropdown-item" href="{{ path('formation_list') }}" aria-expanded="false">
  623.                                                     <span class="hide-menu">{% trans %}Liste des formations{% endtrans %}</span>
  624.                                                 </a>
  625.                                             </li>
  626.                                         {% endif %}
  627.                                         {% if profiles[b_key].site.read == 1 %}
  628.                                             <li id="item21" class="sidebar-item hide-item {% if 'site_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  629.                                                 <a class="sidebar-link dropdown-item" href="{{ path('site_list') }}" aria-expanded="false">
  630.                                                     <span class="hide-menu">{% trans %}Liste des sites{% endtrans %}</span>
  631.                                                 </a>
  632.                                             </li>
  633.                                         {% endif %}
  634.                                         {% if profiles[b_key].industrial.read == 1 %}
  635.                                             <li id="item22" class="sidebar-item hide-item {% if 'industrial_list' in app.request.attributes.get('_route') %} selected {% endif %}">
  636.                                                 <a class="sidebar-link dropdown-item" href="{{ path('industrial_list') }}" aria-expanded="false">
  637.                                                     <span class="hide-menu">{% trans %}Liste des industriels{% endtrans %}</span>
  638.                                                 </a>
  639.                                             </li>
  640.                                         {% endif %}
  641.                                     </ol>
  642.                                 </div>
  643.                             </div>
  644.                         {% endif %}
  645.                         {# <<< BLOCk ADMINISTRATION #}
  646.                         {# BLOCk INDICATEURS >>> #}
  647.                         {% if profiles[b_key].dashboard.read == 1 %}
  648.                             <div class="group-nav" id="menu1001">
  649.                                 <ol style="list-style-type: none; padding: 0 0 0 3px;">
  650.                                     <li id="item1001" class="sidebar-item {% if 'dashboard' in app.request.attributes.get('_route') %} selected {% endif %}">
  651.                                         <a class="sidebar-link dropdown-item" href="{{ path('dashboard') }}" aria-expanded="false">
  652.                                             <i style="color: #9eabc0">
  653.                                                 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bar-chart-2">
  654.                                                     <line x1="18" y1="20" x2="18" y2="10"/>
  655.                                                     <line x1="12" y1="20" x2="12" y2="4"/>
  656.                                                     <line x1="6" y1="20" x2="6" y2="14"/>
  657.                                                 </svg>
  658.                                             </i>
  659.                                             <span class="hide-menu" style="text-transform: capitalize; padding: 0 0 0 2px; font-size: 14px;">{% trans %}Indicateurs{% endtrans %}</span>
  660.                                         </a>
  661.                                     </li>
  662.                                 </ol>
  663.                             </div>
  664.                         {% endif %}
  665.                         {# <<< BLOCk INDICATEUR #}
  666.                         {#  END NAV SITE  #}
  667.                     {%  endif %}
  668.                     <li class="nav-small-cap"><span class="hide-menu">{% trans %}Aide{% endtrans %}</span></li>
  669.                     <div class="group-nav" id="menu1002">
  670.                         <ol style="list-style-type: none; padding: 0 0 0 3px;">
  671.                             <li id="item1002" class="sidebar-item {% if 'contact' in app.request.attributes.get('_route') %} selected {% endif %}">
  672.                                 <a class="sidebar-link dropdown-item" href="{{ path('contact') }}" aria-expanded="false">
  673.                                     <i data-feather="message-square" class="feather-icon"></i>
  674.                                     <span class="hide-menu" style="text-transform: capitalize; padding: 0 0 0 2px; font-size: 14px;">{% trans %}Assistance{% endtrans %}</span>
  675.                                 </a>
  676.                             </li>
  677.                         </ol>
  678.                     </div>
  679.                     <div class="group-nav" id="menu1003">
  680.                         <ol style="list-style-type: none; padding: 0 0 0 3px;">
  681.                             <li id="item1003" class="sidebar-item {% if 'logout' in app.request.attributes.get('_route') %} selected {% endif %}">
  682.                                 <a class="sidebar-link dropdown-item" href="{{ path('logout') }}" aria-expanded="false">
  683.                                     <i data-feather="log-out" class="feather-icon"></i>
  684.                                     <span class="hide-menu" style="text-transform: capitalize; padding: 0 0 0 2px; font-size: 14px;">{% trans %}Déconnexion{% endtrans %}</span>
  685.                                 </a>
  686.                             </li>
  687.                         </ol>
  688.                     </div>
  689.                 </ul>
  690.             </nav>
  691.             {# End Sidebar navigation #}
  692.             <div class="creditArea">
  693.                 <div class="version">MainChain v{{ MC_VERSION }}</div>
  694.                 <a target="_blank" href="https://www.vistory.com">
  695.                     <span>Copyright ©{{ "now"|date("Y") }} Vistory</span>
  696.                 </a>
  697.             </div>
  698.         </div>
  699.     </aside>
  700.     {# ============================================================== #}
  701.     {# End Left Sidebar - style you can find in sidebar.scss #}
  702.     {# ============================================================== #}
  703.     {# ============================================================== #}
  704.     {# Page wrapper #}
  705.     {# ============================================================== #}
  706.     <div class="page-wrapper">
  707.         {# ============================================================== #}
  708.         {# Bread crumb and right sidebar toggle #}
  709.         {# ============================================================== #}
  710.         {% block breadcrumb %}
  711.         {% endblock %}
  712.         {# ============================================================== #}
  713.         {# End Bread crumb and right sidebar toggle #}
  714.         {# ============================================================== #}
  715.         {# ============================================================== #}
  716.         {# Container fluid  #}
  717.         {# ============================================================== #}
  718.         <div class="container-fluid">
  719.             {% for message in app.flashes('success') %}
  720.                 <div class="alert alert-success alert-dismissible bg-success text-white border-0 fade show" role="alert">
  721.                     <button type="button" class="close" data-bs-dismiss="alert" aria-label="Close">
  722.                         <span aria-hidden="true">×</span>
  723.                     </button>
  724.                     {{ message | raw }}
  725.                 </div>
  726.             {% endfor %}
  727.             {% for message in app.flashes('errors') %}
  728.                 <div class="alert alert-danger alert-dismissible border-0 fade show" role="alert">
  729.                     <button type="button" class="close" data-bs-dismiss="alert" aria-label="Close">
  730.                         <span aria-hidden="true">×</span>
  731.                     </button>
  732.                     {{ message | raw }}
  733.                 </div>
  734.             {% endfor %}
  735.             {% for message in app.flashes('warning') %}
  736.                 <div class="alert alert-warning alert-dismissible bg-warning text-white border-0 fade show" role="alert">
  737.                     <button type="button" class="close" data-bs-dismiss="alert" aria-label="Close">
  738.                         <span aria-hidden="true">×</span>
  739.                     </button>
  740.                     {{ message | raw }}<br>
  741.                 </div>
  742.             {% endfor %}
  743.             {% for message in app.flashes('info') %}
  744.                 <div class="alert alert-info alert-dismissible bg-info text-white border-0 fade show" role="alert">
  745.                     <button type="button" class="close" data-bs-dismiss="alert" aria-label="Close">
  746.                         <span aria-hidden="true">×</span>
  747.                     </button>
  748.                     {{ message | raw }}
  749.                 </div>
  750.             {% endfor %}
  751.             {% block content %}
  752.             {% endblock %}
  753.         </div>
  754.         {# ============================================================== #}
  755.         {# End Container fluid #}
  756.         {# ============================================================== #}
  757.         {# ============================================================= #}
  758.         {# footer #}
  759.         {# ============================================================== #}
  760.         <footer class="footer text-center text-muted"></footer>
  761.         {# ============================================================== #}
  762.         {# End footer #}
  763.         {# ============================================================== #}
  764.     </div>
  765.     {# ============================================================== #}
  766.     {# End Page wrapper #}
  767.     {# ============================================================== #}
  768. </div>
  769. {% block javascripts %}
  770.     <script src="{{ asset('js/jquery-3.6.1.js') }}"></script>
  771.     <script src="{{ asset('js/app.js') }}"></script>
  772.     <script src="{{ asset('utils/string-cleaner-utils.js') }}"></script>
  773.     {# custom JS #}
  774.     <script src="{{ asset('js/perfect-scrollbar.jquery.min.js') }}"></script>
  775.     <script src="{{ asset('js/feather.min.js') }}"></script>
  776.     <script src="{{ asset('js/custom.js') }}"></script>
  777.     <script src="{{ asset('libs/bootstrap/dist/js/bootstrap.js') }}"></script>
  778.     <script src="{{ asset('libs/bootstrap/dist/js/bootstrap.bundle.js') }}"></script>
  779.     <script src="{{ asset('js/dompurify-3.0.3-purify.min.js') }}"></script>
  780.     <script type="text/javascript" nonce="fb36db628485fc3a388a259581f9057d">
  781.         {# Display Navbar collaps #}
  782.         $('.topbartoggler').on('click', function(){
  783.             console.log('here')
  784.             $('.topbartoggler').addClass('d-none')
  785.             $('.topbartoggler').removeClass('d-block')
  786.             $('.topbartogglerclose').addClass('d-block d-md-none')
  787.             $('.navbar-collapse ').addClass('d-flex')
  788.             $('.navbar-collapse ').css('transition', 'height 0.35s ease')
  789.             $('.navbar-collapse ').removeClass('d-none')
  790.         })
  791.         $('.topbartogglerclose').on('click', function(){
  792.             $('.topbartogglerclose').addClass('d-none')
  793.             $('.topbartogglerclose').removeClass('d-block')
  794.             $('.topbartoggler').addClass('d-block d-md-none')
  795.             $('.navbar-collapse ').css('transition', 'height 0.35s ease')
  796.             $('.navbar-collapse ').addClass('d-none')
  797.             $('.navbar-collapse ').removeClass('show')
  798.             $('.navbar-collapse ').removeClass('d-flex')
  799.         })
  800.         {# Show items on over #}
  801.         $('.scroll-sidebar').on('mouseover', function(){
  802.             var sidebartype = $('#main-wrapper').data('sidebartype')
  803.             if('.mini-sidebar'){
  804.                 $('.hide-item').css('display', 'block')
  805.             }
  806.         })
  807.         $('.page-wrapper').on('mouseover', function(){
  808.             $('.scroll-sidebar ').scrollTop(0);
  809.         })
  810.         $(document).on('click', function(e) {
  811.             // Vérifie si le clic est en dehors de la div et du bouton
  812.             if (!$(e.target).closest('.scroll-sidebar').length && !$(e.target).is('.ti-close')) {
  813.                 if($('#main-wrapper').hasClass('show-sidebar')){
  814.                     $('#main-wrapper').removeClass('show-sidebar')
  815.                     $('.ti-close').addClass('ti-menu')
  816.                 }
  817.             }
  818.         });
  819.         const dropdownToggle = document.querySelector('.dropdown-toggle-credit');
  820.         const dropdownCredits = document.querySelector('.dropdown-credits');
  821.         dropdownToggle.addEventListener('mouseover', () => {
  822.             dropdownCredits.style.display = 'block';
  823.         });
  824.         dropdownToggle.addEventListener('mouseleave', () => {
  825.             dropdownCredits.style.display = 'none';
  826.         });
  827.         $('.mc-form-control').each(function(){
  828.             if($(this).val().length > 0){
  829.                 $(this).next('.mc-label').addClass('mc-label-fixed');
  830.             }
  831.         });
  832.     </script>
  833.     <script type="text/javascript" src="https://cdn.datatables.net/plug-ins/1.10.24/i18n/French.json"></script>
  834.     <script type="text/javascript" src="{{ asset('/extra-libs/c3/d3.min.js') }}"></script>
  835.     <script type="text/javascript" src="{{ asset('/extra-libs/c3/c3.min.js') }}"></script>
  836.     <script type="text/javascript" src="{{ asset('/extra-libs/jvector/jquery-jvectormap-2.0.2.min.js') }}"></script>
  837.     <script type="text/javascript" src="{{ asset('/extra-libs/jvector/jquery-jvectormap-world-mill-en.js') }}"></script>
  838.     {# Select2 #}
  839.     <script type="text/javascript" src="{{ asset('js/select2.min.js')}}"></script>
  840.     <script type="text/javascript" src="{{ asset('js/app-style-switcher.js') }}"></script>
  841.     <script type="text/javascript" src="{{ asset('js/printers.js') }}"></script>
  842.     <script type="text/javascript" src="{{ asset('js/sidebarmenu.js') }}"></script>
  843.     <script type="text/javascript" src="{{ asset('libs/datatables.net-dt-2.0.3/js/datatables-dt-2.0.3.min.js') }}"></script>
  844.     {# Sweetalert #}
  845.     <script type="text/javascript" src="{{ asset('js/sweetalert.min.js') }}"></script>
  846.     <script src="{{ asset('js/app-style-switcher.js') }}" ></script>
  847.     {# Dashboard page including libraries #}
  848.     {% if app.request.attributes.get('_route') == 'dashboard' %}
  849.     <script type="text/javascript" src="{{ asset('libs/raphael/2.0.2/raphael_2.0.2.js') }}"></script>
  850.     <script type="text/javascript" src="{{ asset('libs/morris.js/morris.min.js') }}"></script>
  851.     <script type="text/javascript" src="{{ asset('libs/daterangepicker/moment.min.js') }}" ></script>
  852.     <script type="text/javascript" src="{{ asset('libs/daterangepicker/daterangepicker.js') }}" ></script>
  853.     {% endif %}
  854.     {# ****** SIDEBAR WITH DROPDOWN >>> ****** #}
  855.     <script>
  856.         $(document).ready(function() {
  857.             // Restore the state from localStorage
  858.             var activeMenu = localStorage.getItem('activeMenu');
  859.             var selectedItem = localStorage.getItem('selectedItem');
  860.             if (activeMenu) {
  861.                 var $activeGroupNav = $('#' + activeMenu);
  862.                 $activeGroupNav.addClass('active');
  863.                 $activeGroupNav.find('.dropdown-container').show();
  864.             }
  865.             /*if (selectedItem) {
  866.                 $('#' + selectedItem).addClass('selected');
  867.             }*/
  868.             // Handle dropdown button click
  869.             $('.dropdown-btn').on('click', function(e) {
  870.                 e.preventDefault();
  871.                 var $this = $(this);
  872.                 var $dropdownContent = $this.next('.dropdown-container');
  873.                 var $groupNav = $this.closest('.group-nav');
  874.                 // Close all other dropdowns
  875.                 $('.group-nav.active').not($groupNav).removeClass('active').find('.dropdown-container').slideUp();
  876.                 // Toggle the current dropdown
  877.                 $dropdownContent.slideToggle();
  878.                 $groupNav.toggleClass('active');
  879.                 // Store the state in localStorage
  880.                 if ($groupNav.hasClass('active')) {
  881.                     localStorage.setItem('activeMenu', $groupNav.attr('id'));
  882.                 } else {
  883.                     localStorage.removeItem('activeMenu');
  884.                 }
  885.             });
  886.             $('.dropdown-container').css('padding-left', '20px');
  887.             // Handle item click
  888.             // Handle window resize
  889.             $(window).on('resize', function() {
  890.                 if ($(window).width() < 768) {
  891.                     // Hide text and show icons only
  892.                     $('.left-sidebar .sidebar-nav .hide-menu').hide();
  893.                     $('.dropdown-container').slideUp();
  894.                 } else {
  895.                     // Show text and dropdown content if the menu was active
  896.                     $('.left-sidebar .sidebar-nav .hide-menu').show();
  897.                     $('.group-nav.active .dropdown-container').show();
  898.                 }
  899.                 const dropdownItem = $('.dropdown-item');
  900.                 const item1000EltIconSvg = $('#item1000 i svg');
  901.                 const item1000EltIconSvgTxt = $('#item1000 .hide-menu');
  902.                 const item1001EltIconSvg = $('#item1001 i svg');
  903.                 const item1001EltIconSvgTxt = $('#item1001 .hide-menu');
  904.                 const item1002EltIconSvg = $('#item1002 i svg');
  905.                 const item1002EltIconSvgTxt = $('#item1002 .hide-menu');
  906.                 const item1003EltIconSvg = $('#item1003 i svg');
  907.                 const item1003EltIconSvgTxt = $('#item1003 .hide-menu');
  908.                 if ($(window).width() > 767 && $(window).width() < 1170) {
  909.                     dropdownItem.css('padding-left', '8px');
  910.                     item1000EltIconSvg.show();
  911.                     item1000EltIconSvg.css('padding-left', '0px');
  912.                     item1000EltIconSvgTxt.hide();
  913.                     item1001EltIconSvg.show();
  914.                     item1001EltIconSvg.css('padding-left', '0px');
  915.                     item1001EltIconSvgTxt.hide();
  916.                     item1002EltIconSvg.show();
  917.                     item1002EltIconSvg.css('padding-left', '0px');
  918.                     item1002EltIconSvgTxt.hide();
  919.                     item1003EltIconSvg.show();
  920.                     item1003EltIconSvg.css('padding-left', '0px');
  921.                     item1003EltIconSvgTxt.hide();
  922.                 } else {
  923.                     $('.group-nav .dropdown-item').each(function() {
  924.                         $(this).css('cssText', 'padding-left: 30px !important;');
  925.                     });
  926.                     item1000EltIconSvg.show();
  927.                     item1000EltIconSvgTxt.show();
  928.                     item1001EltIconSvg.show();
  929.                     item1001EltIconSvgTxt.show();
  930.                     item1002EltIconSvg.show();
  931.                     item1002EltIconSvgTxt.show();
  932.                     item1003EltIconSvg.show();
  933.                     item1003EltIconSvgTxt.show();
  934.                 }
  935.             });
  936.             // Trigger resize event on page load
  937.             $(window).trigger('resize');
  938.             // Close dropdowns when clicking on specific links
  939.             $('#item1000 a, #item1001 a, #item1002 a, #item1003 a').on('click', function(e) {
  940.                 // Remove 'active' class and hide the dropdown
  941.                 $('.group-nav.active').removeClass('active').find('.dropdown-container').slideUp();
  942.                 // Clear the activeMenu state in localStorage
  943.                 localStorage.removeItem('activeMenu');
  944.             });
  945.             var $liElement = $('#item1000');
  946.             // Check if the class contains "selected"
  947.             if ($liElement.hasClass('selected')) {
  948.                 // Remove 'active' class and hide the dropdown
  949.                 $('.group-nav.active').removeClass('active').find('.dropdown-container').slideUp();
  950.                 // Clear the activeMenu state in localStorage
  951.                 localStorage.removeItem('activeMenu');
  952.             }
  953.         });
  954.     </script>
  955.     {# ****** <<< SIDEBAR WITH DROPDOWN ****** #}
  956. {% endblock %}
  957. {% block modal %}{% endblock %}
  958. </body>
  959. </html>