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.                 
  108.                 button:not(.btn-close),
  109.                 .btn:not(.btn-close) {
  110.                     background-color: var(--button-background-color);
  111.                     color: var(--button-foreground-color);
  112.                     border-color: var(--button-background-color);
  113.                 }
  114.                 button:not(.btn-close):hover{
  115.                     color: var(--button-background-color);
  116.                     background-color: var(--button-foreground-color);
  117.                     border-color: var(--button-background-color);
  118.                 }
  119.                 .container-footer .list-unstyled li a {
  120.                     border-color: var(--button-background-color) !important;
  121.                 }
  122.                 .dropdown-menu {
  123.                     background-color: var(--button-background-color) !important;
  124.                 }
  125.                 .dropdown-menu p, .dropdown-menu a, .dropdown-menu span, .dropdown-menu .dropdown-item{
  126.                     color: var(--button-foreground-color) !important;
  127.                 }
  128.                 button p,button span{
  129.                     color: var(--button-foreground-color) !important;
  130.                 }
  131.             
  132.                 input{
  133.                     border: 2px solid var(--button-background-color) !important;
  134.                 }
  135.                 /* css for modal cookieconsent */
  136.                 button.cc-link {
  137.                     background: transparent !important;
  138.                     color: var(--button-background-color) !important;
  139.                 }
  140.                 .cc_div .cc-link:hover {
  141.                     border: none;
  142.                 }
  143.                 /* end css for cookieconsent */
  144.                 .required:after {
  145.                     content:" *";
  146.                     color: red
  147.                 }
  148.                 .global-spinner {
  149.                     position: fixed;
  150.                     top: 0;
  151.                     left: 0;
  152.                     width: 100%;
  153.                     height: 100%;
  154.                     background-color: rgba(0, 0, 0, 0.5);
  155.                     display: flex;
  156.                     justify-content: center;
  157.                     align-items: center;
  158.                     z-index: 9999;
  159.                 }
  160.             </style>
  161.             <!-- CSS here -->
  162.             <meta http-equiv="Cache-control" content="public">
  163.         {% endblock %}
  164.     </head>
  165.     <body
  166.     lang="{{ app.request.locale }}"
  167.     data-is-home="{{ isHome ? '1' : '0' }}"
  168.     data-identity-enabled="{{ identityEnabled ? '1' : '0' }}"
  169.     data-anonymization-enabled="{{ siteConfig.isAnonymizationActive ? '1' : '0' }}"
  170.     data-anonymization-confirmed="{{ (app.user and app.user.isAnonymisationConfirmed()) ? '1' : '0' }}"
  171.     >
  172.         <div id="global-spinner" class="global-spinner" style="display: none;">
  173.             <div class="spinner-border text-primary" style="width: 3rem; height: 3rem;" role="status">
  174.                 <span class="visually-hidden">
  175.                     Chargement...
  176.                 </span>
  177.             </div>
  178.         </div>
  179.         {% block nav %}
  180.             {{- renderNav() -}}
  181.         {% endblock %}
  182.         {% for message in app.flashes('success') %}
  183.             <div class="alert alert-success alert-base" id="success-alert">
  184.                 {{ message|raw }}
  185.             </div>
  186.         {% endfor %}
  187.         {% for message in app.flashes('warning') %}
  188.             <div class="alert alert-warning alert-base" id="warning-alert">
  189.                 {{ message|raw }}
  190.             </div>
  191.         {% endfor %}
  192.         {% block body %}{% endblock %}
  193.         {{- renderFooter() -}}
  194.         <!-- JS here -->
  195.         <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>
  196.         {% set isHome = app.request.pathinfo == '/' %}
  197.         {% if app.user and is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  198.             <script defer src="{{ asset('assets/js/identity-orchestrator.js') }}"></script>
  199.             <script defer src="{{ asset('assets/js/anonymization.js') }}"></script>
  200.         {% endif %}
  201.     </body>
  202.     {% block javascripts %}
  203.         <script>
  204.           const previewMode = {{ preview is defined and preview ? 'true' : 'false' }};
  205.           const session = "{{ app.session.id }}"
  206.            let cgu = true;
  207.         {% if app.user and app.user.isAcceptCgu == false %}
  208.             cgu = false;
  209.         {% endif %}
  210.         </script> 
  211.         <!-- End variables -->
  212.         <!-- JS here -->
  213.         {{ encore_entry_script_tags('app') }}
  214.         <script defer>
  215.             const contact_path = '{{ path('contact') }}',
  216.                 title = 'Nous utilisons des cookies !',
  217.                 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.'
  218.         </script>
  219.        
  220.         <script>
  221.     // Fade-out progressif des flash messages après 4 secondes
  222.     document.addEventListener('DOMContentLoaded', () => {
  223.         const flashes = document.querySelectorAll('.alert-warning');
  224.         flashes.forEach(flash => {
  225.             setTimeout(() => {
  226.                 flash.style.transition = 'opacity 0.5s ease';
  227.                 flash.style.opacity = '0';
  228.                 setTimeout(() => flash.remove(), 500);
  229.             }, 4000);
  230.         });
  231.     });
  232. </script>
  233.         {{ encore_entry_script_tags('contributorForm') }}
  234.         {{ encore_entry_script_tags('identityForm') }}
  235.         {{ encore_entry_script_tags('global-spinner') }}
  236.         {{ encore_entry_script_tags('cookieconsent-init') }}
  237.         {{ encore_entry_script_tags('messaging_get_token') }}
  238.         {{ encore_entry_script_tags('webPushNotifications') }}
  239.     {% include('partials/cookies.html.twig') %}
  240. {% endblock %}
  241. </html>