templates/base.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. {% set __route = app.request.attributes.get('_route') %}
  3. {% set isHome = (__route in ['home','homepage','app_homepage']) or (app.request.pathinfo == '/') %}
  4. {% set identityEnabled =
  5.     identity_active is defined
  6.         ? identity_active
  7.         : true
  8. %}
  9. <html>
  10.     <head>
  11.         <meta charset="UTF-8">
  12.         <meta http-equiv="x-ua-compatible" content="ie=edge">
  13.         {% block title %}{% endblock %}
  14.         {% block metatags %}{% endblock %}
  15.         <meta name="viewport" content="width=device-width, initial-scale=1">
  16.         {# Desktop icon #}
  17.         <link rel="shortcut icon" type="image/png" href="{{ siteConfig.faviconUrl ?? asset('favicon.ico') }}">
  18.         {# Android icon #}
  19.         <link rel="manifest" href='data:application/manifest+json,{"name": "{{ siteConfig.siteName }}", "short_name": "{{ siteConfig.siteName }}", "display": "standalone", "icons": [{"src": "{{ siteConfig.faviconUrl ?? asset(' favicon.ico') }}", "sizes": "192x192", "type": "image/png"}]}' />
  20.         {# iOS icon #}
  21.         <link rel="apple-touch-icon" sizes="180x180" href="{{ siteConfig.faviconUrl ?? asset('favicon.ico') }}">
  22.         {% set currentUrl = app.request.getUri() %}
  23.         {% if 'terrain' in currentUrl|lower %}
  24.             <!-- Privacy-friendly analytics by Plausible -->
  25.             <script async src="https://plausible.io/js/pa-8TVVwUNoiODOK4NQZpy5R.js"></script>
  26.             <script>
  27.             window.plausible = window.plausible || function() { (plausible.q = plausible.q || []).push(arguments) };
  28.             plausible.init = plausible.init || function(i) { plausible.o = i || {} };
  29.             plausible.init();
  30.             </script>
  31.         {% endif %}
  32.         {% block stylesheets %}
  33.             <!-- CSS here -->
  34.             {{ encore_entry_link_tags('app') }}
  35.             {{ encore_entry_link_tags('cookieconsent.min') }}
  36.             <link rel="preconnect" href="https://fonts.googleapis.com">
  37.             <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  38.             <link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,300;0,400;0,500;0,700;0,800;0,900;1,200&display=swap" rel="stylesheet">
  39.             <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.2/css/all.min.css" integrity="sha512-rqQltXRuHxtPWhktpAZxLHUVJ3Eombn3hvk9PHjV/N5DMUYnzKPC1i3ub0mEXgFzsaZNeJcoE0YHq0j/GFsdGg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  40.             <style id="theme-colors">
  41.                 :root {
  42.                   --page-background-color: {{ siteConfig.siteCustomization.pageBackgroundColor }};
  43.                   --page-foreground-color: {{ siteConfig.siteCustomization.pageForegroundColor }};
  44.                   --menu-background-color: {{ siteConfig.siteCustomization.menuBackgroundColor }};
  45.                   --menu-background-color-header-alpha: {{ siteConfig.siteCustomization.menuBackgroundColor }}80;
  46.                   --menu-background-color-silder-alpha: {{ siteConfig.siteCustomization.menuBackgroundColor }}cd;
  47.                   --menu-foreground-color: {{ siteConfig.siteCustomization.menuForegroundColor }};
  48.                   --page-title-color: {{ siteConfig.siteCustomization.pageTitleColor }};
  49.                   --button-background-color: {{ siteConfig.siteCustomization.buttonBackgroundColor }};
  50.                   --button-foreground-color: {{ siteConfig.siteCustomization.buttonForegroundColor }};
  51.                 }
  52.                 body {
  53.                     background-color:  var(--page-background-color) !important;
  54.                     color : var(--page-foreground-color) !important;
  55.                 }
  56.                 .bg-dark {
  57.                     background-color: transparent !important;
  58.                 } 
  59.                 .bloc-categ .MultiCarousel .MultiCarousel-inner .item>div {
  60.                     background-color:  var(--page-background-color) !important;
  61.                 }
  62.                 nav a, nav span, nav .navbar-nav .nav-item i {
  63.                     color: var(--page-foreground-color);
  64.                 }
  65.                 .login-nav__item.active a:after {
  66.                     background-color: {{ siteConfig.siteCustomization.pageTitleColor }} !important;
  67.                 }
  68.                 .modal-content {
  69.                     color: var(--page-title-color) !important;
  70.                     background-color: var(--page-background-color) !important;
  71.                 }
  72.                 h1, h2, h3, h4, h5, h6 {
  73.                     color: var(--page-title-color) !important;
  74.                 }
  75.                 .sub-title-categ {
  76.                 font-weight: 600;
  77.                 max-width: max-content;
  78.                 text-decoration: none;
  79.                 padding: 5px;
  80.                 border-radius: 7px;
  81.                 }
  82.                 .title-categ-fil-ariane{
  83.                 font-weight: 600;
  84.                 max-width: max-content;
  85.                 text-decoration: none;
  86.                 padding: 5px;
  87.                 border-radius: 7px;
  88.                 }
  89.                 /* Fil d'Ariane : toujours couleur du texte du corps */
  90.                 .title-categ{
  91.                     color: var(--button-foreground-color) !important;
  92.                 }
  93.                 .title-categ:hover {
  94.                    color: var(--button-background-color) !important;
  95.                    background-color: var(--button-foreground-color) !important;
  96.                 }
  97.                 .sub-title-categ {
  98.                     color: var(--page-foreground-color) !important;
  99.                 }
  100.                 .title-categ-fil-ariane{
  101.                     color: var(--page-foreground-color) !important;
  102.                 } 
  103.                 .title-categ-fil-ariane:hover {
  104.                    color: var(--page-background-color) !important;
  105.                    background-color: var(--page-foreground-color) !important;
  106.                 }
  107.                 .navbar-nav.p-2 .bi-chevron-right {
  108.                     color: var(--page-foreground-color) !important;
  109.                 }
  110.                 
  111.                 button:not(.btn-close),
  112.                 .btn:not(.btn-close) {
  113.                     background-color: var(--button-background-color);
  114.                     color: var(--button-foreground-color);
  115.                     border-color: var(--button-background-color);
  116.                 }
  117.                 button:not(.btn-close):hover{
  118.                     color: var(--button-background-color);
  119.                     background-color: var(--button-foreground-color);
  120.                     border-color: var(--button-background-color);
  121.                 }
  122.                 .container-footer .list-unstyled li a {
  123.                     border-color: var(--button-background-color) !important;
  124.                 }
  125.                 .dropdown-menu {
  126.                     background-color: var(--button-background-color) !important;
  127.                 }
  128.                 .dropdown-menu p, .dropdown-menu a, .dropdown-menu span, .dropdown-menu .dropdown-item{
  129.                     color: var(--button-foreground-color) !important;
  130.                 }
  131.                 button p,button span{
  132.                     color: var(--button-foreground-color) !important;
  133.                 }
  134.             
  135.                 input{
  136.                     border: 2px solid var(--button-background-color) !important;
  137.                 }
  138.                 /* css for modal cookieconsent */
  139.                 button.cc-link {
  140.                     background: transparent !important;
  141.                     color: var(--button-background-color) !important;
  142.                 }
  143.                 .cc_div .cc-link:hover {
  144.                     border: none;
  145.                 }
  146.                 /* end css for cookieconsent */
  147.                 .required:after {
  148.                     content:" *";
  149.                     color: red
  150.                 }
  151.                 .global-spinner {
  152.                     position: fixed;
  153.                     top: 0;
  154.                     left: 0;
  155.                     width: 100%;
  156.                     height: 100%;
  157.                     background-color: rgba(0, 0, 0, 0.5);
  158.                     display: flex;
  159.                     justify-content: center;
  160.                     align-items: center;
  161.                     z-index: 9999;
  162.                 }
  163.             </style>
  164.             <!-- CSS here -->
  165.             <meta http-equiv="Cache-control" content="public">
  166.         {% endblock %}
  167.     </head>
  168.     <body
  169.     lang="{{ app.request.locale }}"
  170.     data-is-home="{{ isHome ? '1' : '0' }}"
  171.     data-identity-enabled="{{ identityEnabled ? '1' : '0' }}"
  172.     data-anonymization-enabled="{{ siteConfig.isAnonymizationActive ? '1' : '0' }}"
  173.     data-anonymization-confirmed="{{ (app.user and app.user.isAnonymisationConfirmed()) ? '1' : '0' }}"
  174.     >
  175.         <div id="global-spinner" class="global-spinner" style="display: none;">
  176.             <div class="spinner-border text-primary" style="width: 3rem; height: 3rem;" role="status">
  177.                 <span class="visually-hidden">
  178.                     Chargement...
  179.                 </span>
  180.             </div>
  181.         </div>
  182.         {% block nav %}
  183.             {{- renderNav() -}}
  184.         {% endblock %}
  185.         {% for message in app.flashes('success') %}
  186.             <div class="alert alert-success alert-base" id="success-alert">
  187.                 {{ message|raw }}
  188.             </div>
  189.         {% endfor %}
  190.         {% for message in app.flashes('warning') %}
  191.             <div class="alert alert-warning alert-base" id="warning-alert">
  192.                 {{ message|raw }}
  193.             </div>
  194.         {% endfor %}
  195.         {% block body %}{% endblock %}
  196.         
  197.         {{- renderFooter() -}}
  198.         <!-- JS here -->
  199.         <script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.8.2/js/all.min.js" integrity="sha512-MNA4ve9aW825/nbJKWOW0eo0S5f2HWQYQEIw4TkgLYMgqk88gHpSHJuMkJhYMQWKE7LmJMBdJZMs5Ua19QbF8Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  200.         {% set isHome = app.request.pathinfo == '/' %}
  201.         {% if app.user and is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  202.             <script defer src="{{ asset('assets/js/identity-orchestrator.js') }}"></script>
  203.             <script defer src="{{ asset('assets/js/anonymization.js') }}"></script>
  204.         {% endif %}
  205.     </body>
  206.     {% block javascripts %}
  207.         <script>
  208.           const previewMode = {{ preview is defined and preview ? 'true' : 'false' }};
  209.           const session = "{{ app.session.id }}"
  210.            let cgu = true;
  211.         {% if app.user and app.user.isAcceptCgu == false %}
  212.             cgu = false;
  213.           {% endif %}
  214.         </script>
  215.         <!-- End variables -->
  216.         <!-- JS here -->
  217.         {{ encore_entry_script_tags('app') }}
  218.         <script defer>
  219.             const contact_path = '{{ path('contact') }}',
  220.                 title = 'Nous utilisons des cookies !',
  221.                 message = 'Ce site utilise des cookies pour vous offrir une meilleure expérience de navigation. En continuant à naviguer sur le site, vous acceptez notre utilisation des cookies.'
  222.         </script>
  223.        <script>
  224.                 (function() {
  225.                 var target = localStorage.getItem('targetPath');
  226.                 // Redirige uniquement si on est sur /admin
  227.                 if (window.location.pathname.startsWith('/admin') && target && window.location.pathname !== target) {
  228.                         localStorage.removeItem('targetPath');
  229.                         window.location.href = target;
  230.                 }
  231.                 })();
  232.         </script>
  233.     <script>
  234.     // Fade-out progressif des flash messages après 4 secondes
  235.     document.addEventListener('DOMContentLoaded', () => {
  236.         const flashes = document.querySelectorAll('.alert-warning');
  237.         flashes.forEach(flash => {
  238.             setTimeout(() => {
  239.                 flash.style.transition = 'opacity 0.5s ease';
  240.                 flash.style.opacity = '0';
  241.                 setTimeout(() => flash.remove(), 500);
  242.             }, 4000);
  243.         });
  244.     });
  245. </script>
  246.         {{ encore_entry_script_tags('contributorForm') }}
  247.         {{ encore_entry_script_tags('identityForm') }}
  248.         {{ encore_entry_script_tags('global-spinner') }}
  249.         {{ encore_entry_script_tags('cookieconsent-init') }}
  250.         {{ encore_entry_script_tags('messaging_get_token') }}
  251.         {{ encore_entry_script_tags('webPushNotifications') }}
  252.     {% include('partials/cookies.html.twig') %}
  253. {% endblock %}
  254. </html>