templates/home.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block body %}
  3.     <!-- Header project Zinvaziv -->
  4.     <div class="banner is-header">
  5.         <div class="container">
  6.             <div class="d-flex justify-content-center align-items-center bg-transparent text-white text-center">
  7.                 <div class="row">
  8.                     <h1 class="banner-title text-uppercase">Le projet Zinvaziv</h1>
  9.                     <div class="col-lg-12 banner-content">
  10.                         <p class="paragraph-line-spacing">
  11.                             Le programme « Ansamb kont zinvaziv » met en lien les professionnels de l’élagage / des
  12.                             espaces verts et les particuliers souhaitant faire retirer gratuitement les espèces exotiques
  13.                             interdites de leur jardin.
  14.                         </p>
  15.                     </div>
  16.                     <div class="col-lg-6 mx-auto banner-button">
  17.                         <div class="row">
  18.                             {% if app.user %}
  19.                                 {% if 'ROLE_ADMIN' in app.user.roles %}
  20.                                     <div class="col-lg-6 col-md-12 col-sm-12">
  21.                                         <a class="btn btn-grey" href="{{ path('company.create') }}">
  22.                                             CREER UN PROFESSIONNEL
  23.                                         </a>
  24.                                     </div>
  25.                                     <div class="col-lg-6 col-md-12 col-sm-12">
  26.                                         <a class="btn btn-grey" href="{{ path('admin.company.list') }}">
  27.                                             VOIR LES PROFESSIONNELS
  28.                                         </a>
  29.                                     </div>
  30.                                 {% elseif 'ROLE_COMPANY' in app.user.roles %}
  31.                                     {% if app.user.companies.count == 0 %}
  32.                                         <div class="col-lg-12">
  33.                                             <a class="btn btn-grey" href="{{ path('demand.create') }}">
  34.                                                 CRÉER MON DOSSIER ÉLAGUEUR
  35.                                             </a>
  36.                                         </div>
  37.                                     {% else %}
  38.                                         <div class="col-lg-12">
  39.                                             <a class="btn btn-grey" href="{{ path('company.update', { company: app.user.companies.first.id, step: 1 }) }}">
  40.                                                 MON ENTREPRISE
  41.                                             </a>
  42.                                         </div>
  43.                                     {% endif %}
  44.                                 {% else %}
  45.                                     <div class="col-lg-12">
  46.                                         <a class="btn btn-grey" href="{{ path('demand.list') }}">GÉRER MES DEMANDES</a>
  47.                                     </div>
  48.                                 {% endif %}
  49.                             {% else %}
  50.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  51.                                     <a class="btn btn-grey" href="{{ path('register') }}">PARTICULIERS</a>
  52.                                 </div>
  53.                                 <div class="col-lg-6 col-md-6 mt-3 mt-md-0 mt-lg-0 mt-xl-0 mt-xxl-0 col-sm-12">
  54.                                     <a class="btn btn-grey" href="{{ path('register', {type: 1}) }}">
  55.                                         PROFESSIONNELS
  56.                                     </a>
  57.                                 </div>
  58.                             {% endif %}
  59.                         </div>
  60.                     </div>
  61.                     <div class="d-flex justify-content-center icon-bottom">
  62.                         <a href=#zinvaziv><img class="mb-3" src="{{ asset('build/images/arrow.svg') }}" alt="Arrow"/></a>
  63.                     </div>
  64.                 </div>
  65.             </div>
  66.         </div>
  67.     </div>
  68.     <div class="container my-5">
  69.         <p class="my-5 text-center text-uppercase bold-dark-green-title">
  70.             <strong id="zinvaziv">ALON MET ANSAMB KONT ZINVAZIV !</strong>
  71.         </p>
  72.         <div class="row position-relative">
  73.             <div class="col-lg-6 px-5">
  74.                 <p class="h6 text-center paragraph-line-spacing">
  75.                     Les réunionnais sont très attachés à leur jardin dans lequel ils aiment associer différentes espèces végétales
  76.                     et introduire de nouvelles espèces, qui sont souvent des espèces exotiques. Malheureusement, certaines de
  77.                     ces espèces exotiques sont envahissantes. Lorsqu’elles se retrouvent dans le milieu naturel, les espèces
  78.                     exotiques envahissantes causent de sérieux dégâts sur les espèces indigènes et endémiques de La Réunion,
  79.                     en se multipliant rapidement et en accaparant les ressources. Certaines sont si dangereuses pour les écosystèmes
  80.                     réunionnais qu’elles ont été interdites à la Réunion par arrêté ministériel ! Très souvent, les jardins
  81.                     représentent une porte de sortie des espèces exotiques envahissantes vers les milieux naturels.
  82.                 </p>
  83.             </div>
  84.             <div class="col-lg-6 px-5">
  85.                 {#<div id="map" class="w-full h-[300px] lg:h-[400px]"
  86.                      data-map-init="" data-map-demands="{% for demand in demands %}{{ demand.latitude }}:{{ demand.longitude }}:{{ demand.id }}:{% if demand.demandTrees.first %}{% set tree_image_path = demand.demandTrees.first.tree ? get_download_url(get_first_treeFile_by_type(demand.demandTrees.first.tree, constant('App\\Entity\\TreeFile::PHOTO')).file.path) : 'build/images/invasive_species_2.png' %}{% else %}{% set tree_image_path = 'build/images/invasive_species_2.png' %}{% endif %}{{ asset(tree_image_path) }}:{{ demand.demandTrees.count }}{{ not loop.last ? '|' }}{% endfor %}">
  87.                 </div>
  88.                 {% for demand in demands %}
  89.                     <div id="demand-modal-{{ demand.id }}" class="card mt-2 shadow-sm demand-modal">
  90.                         <div class="card-body">
  91.                             <div class="card-title">
  92.                                 <strong>{{ demand.id }}</strong>
  93.                                 <button type="button" class="btn-close float-end" data-demand-modal-close="" aria-label="Close"></button>
  94.                             </div>
  95.                             <div>
  96.                                 {% for demandTree in demand.demandTrees %}
  97.                                     {% set tree = demandTree.tree %}
  98.                                     <div class="d-flex align-items-center">
  99.                                         {% set treePhotoFile = tree ? get_first_treeFile_by_type(tree, constant('App\\Entity\\TreeFile::PHOTO')) : null %}
  100.                                         {% if treePhotoFile %}
  101.                                             <img src="{{ get_download_url(treePhotoFile.file.path) }}" alt="tree" class="w-25 h-25">
  102.                                         {% else %}
  103.                                             <img src="{{ asset('build/images/invasive_species_2.png') }}" alt="tree" class="w-25 h-25">
  104.                                         {% endif %}
  105.                                         <div class="ms-2">
  106.                                             <strong>{{ tree ? tree.frenchName : 'Inconnu' }}</strong>
  107.                                         </div>
  108.                                     </div>
  109.                                 {% endfor %}
  110.                             </div>
  111.                         </div>
  112.                     </div>
  113.                 {% endfor %}#}
  114.                 <button class="border-0 bg-white">
  115.                     <img data-repartition-demandes-modal-open="" alt="Carte répartition des demandes d'abattage" src="{{ asset(repartition_demands_map_path) }}" width="500" height="450"/>
  116.                 </button>
  117.                 <div id="repartition-demandes-modal" class="card mt-2 shadow-sm position-absolute top-0 start-0 w-100">
  118.                     <div class="card-body">
  119.                         <div class="card-title">
  120.                             <strong>Répartition des demandes d'abattage</strong>
  121.                             <button type="button" class="btn-close float-end" data-repartition-demandes-modal-close="" aria-label="Close"></button>
  122.                         </div>
  123.                         <div class="d-flex justify-content-center">
  124.                             <img alt="Carte répartition des demandes d'abattage" src="{{ asset(repartition_demands_map_path) }}" width="1000" height="800" />
  125.                         </div>
  126.                     </div>
  127.                 </div>
  128.             </div>
  129.         </div>
  130.         <p class="h5 text-center mx-5 mt-5 paragraph-line-spacing">
  131.             <strong>
  132.                 C’est pour cela que le programme « Ansamb kont zinvaziv » vise à informer les Réunionnais sur ces
  133.                 espèces exotiques envahissantes, les accompagner pour faire retirer gratuitement les espèces
  134.                 exotiques interdites de leur jardin avant qu’elles n’impactent le milieu naturel. Ce programme vise
  135.                 également à encourager la plantation d’espèces endémiques et indigènes dans nos jardins. Ainsi,
  136.                 nous proposons une plante endémique ou indigène en remplacement des arbres interdits enlevés de
  137.                 vos jardins.
  138.             </strong>
  139.         </p>
  140.         <p class="h6 text-center mx-5 mt-5 paragraph-line-spacing">
  141.             Concrètement, le programme « Ansamb kont zinvaziv » met en lien les professionnels de l’élagage / des espaces
  142.             verts et les particuliers souhaitant faire retirer gratuitement les espèces exotiques interdites de leur jardin.
  143.         </p>
  144.         <p class="h5 text-center mx-5 mt-3 paragraph-line-spacing">
  145.             Le programme « Ansamb kont zinvaziv » comprend 2 volets :
  146.         </p>
  147.     </div>
  148.     <!-- Catégories d'arbres -->
  149.     <div class="container">
  150.         <div class="row mt-5 mb-5 justify-content-lg-around">
  151.             <div class="col-lg-4 text-center mt-5 mb-5">
  152.                 <div class="card-custom is-tree text-white ">
  153.                     <div class="card-hover-transition">
  154.                         <div class="row justify-content-center align-items-center p-2">
  155.                             <div class="col-lg-12 card-hover-title">
  156.                                 <p>ARBRES DE PLUS DE 3M</p>
  157.                             </div>
  158.                             <div class="col-lg-12 card-hover-contain">
  159.                                 <strong>
  160.                                     Faites gratuitement abattre les arbres exotiques interdits présents dans votre jardin.
  161.                                 </strong>
  162.                                 <p>
  163.                                     « Ansamb kont zinvaziv » vous permet de bénéficier d’une prise en charge à 100 %
  164.                                     pour l’abattage d’un ou de plusieurs arbres exotiques envahissants interdits par un
  165.                                     professionnel de l’élagage référencé sur cette plateforme. Pour cela, inscrivez-vous
  166.                                     et laissez-vous guider !
  167.                                 </p>
  168.                                 <small>
  169.                                     Prise en charge dans la limite du financement disponible.
  170.                                     Attention à bien vous renseigner sur les conditions d’application de la prise en charge.
  171.                                 </small>
  172.                             </div>
  173.                             <div class="col-lg-12 card-hover-action mt-2">
  174.                                 <a class="btn btn-outline-green" href="{{ path('tree.list-invasive', {'category' : constant('App\\Entity\\Tree::TREE_TYPE'), '_fragment' : 'section-espece-invasive'}) }}">
  175.                                     En savoir plus
  176.                                 </a>
  177.                             </div>
  178.                         </div>
  179.                     </div>
  180.                 </div>
  181.             </div>
  182.             <div class="col-lg-4 text-center mt-5 mb-5">
  183.                 <div class="card-custom is-plant text-white ">
  184.                     <div class="card-hover-transition">
  185.                         <div class="row justify-content-center align-items-center p-2">
  186.                             <div class="col-lg-12 card-hover-title">
  187.                                 <p>ARBUSTES ET PLANTES</p>
  188.                             </div>
  189.                             <div class="col-lg-12 card-hover-contain">
  190.                                 <strong>
  191.                                     Eliminez gratuitement les plantes et les arbustes à massifs exotiques envahissants
  192.                                     interdits présents dans votre jardin
  193.                                 </strong>
  194.                                 <p>
  195.                                     « Ansamb kont zinvaziv » vous permet de bénéficier d’une prise en charge à 100 %
  196.                                     pour la coupe et l’arrachage de plantes et d’arbustes envahissants interdits, par un
  197.                                     professionnel d’entretien des espaces verts référencé sur cette plateforme.
  198.                                     Pour cela, inscrivez-vous et laissez-vous guider !
  199.                                 </p>
  200.                                 <small>
  201.                                     La prise en charge des arbustes et plantes à massifs interdits n’est pour le moment
  202.                                     pas opérationnelle.
  203.                                 </small>
  204.                             </div>
  205.                             <div class="col-lg-12 card-hover-action mt-2">
  206.                                 <a class="btn btn-outline-green" href="{{ path('tree.list-invasive', {'category' : constant('App\\Entity\\Tree::BUSH_AND_PLANT_TYPE')}) }}">
  207.                                     En savoir plus
  208.                                 </a>
  209.                             </div>
  210.                         </div>
  211.                     </div>
  212.                 </div>
  213.             </div>
  214.         </div>
  215.     </div>
  216.     <!-- Référencement professionnel -->
  217.     <div class="banner is-ref-pro">
  218.         <div class="container h-100">
  219.             <div class="d-flex h-100 align-items-center text-white">
  220.                 <div class="row">
  221.                     <div class="col-lg-12">
  222.                         <h1 class="banner-title">REFERENCEMENT PROFESSIONNEL</h1>
  223.                         <p>
  224.                             Le programme «Ansamb kont zinvaziv» encourage financièrement les particuliers à éliminer de
  225.                             leur jardin les espèces exotiques interdites et crée de nouvelles opportunités pour les
  226.                             professionnels de l’élagage et des espaces verts pour relancer leur activité impactée par la
  227.                             crise sanitaire. La plateforme zinvaziv.re permet, pour cela, de mettre directement en lien
  228.                             les particuliers ayant besoin d’un appui à la gestion des espèces de flore invasive interdite
  229.                             et les professionnels qui proposent cette prestation et qui sont référencés sur zinvaziv.re.
  230.                             En étant référencé comme professionnel du programme, vous serez sollicités pour des demandes
  231.                             de devis concernant des opérations d’élagage ou d’arrachage d’espèces exotiques interdites à
  232.                             La Réunion. Vous devez faire partie du réseau des professionnels affiliés au programme afin
  233.                             de pouvoir proposer la prise en charge de votre prestation par le programme «Ansamb kont zinvaziv».
  234.                         </p>
  235.                         <div>
  236.                             <a class="btn btn-orange" href="{{ path('professional') }}">ESPACE PROFESSIONEL</a>
  237.                         </div>
  238.                     </div>
  239.                 </div>
  240.             </div>
  241.         </div>
  242.     </div>
  243.     <!-- Programme -->
  244.     <div class="container">
  245.         <div class="program row mt-5 justify-content-lg-around">
  246.             <div class="col-lg-12 text-center program-title">
  247.                 <h1 class="banner-title"><strong>LE PORTEUR ET LE FINANCEUR DU PROJET</strong></h1>
  248.             </div>
  249.             <div class="col-xl-3 col-lg-6 col-md-12 col-sm-12 text-center mt-5">
  250.                 <div class="program-content border border-dark d-flex flex-column">
  251.                     <img class="program-img rounded mx-auto d-block mt-5"
  252.                          src="{{ asset('build/images/ave2mLogo.png') }}"
  253.                          alt="Logo AVE2M">
  254.                     <span class="program-label"><strong>AVE<small>2</small>M</strong></span>
  255.                     <div class="program-text">
  256.                         Association pour la Valorisation de l’Entre-Deux Monde, agit, entre autres, pour la lutte contre
  257.                         les espèces exotiques envahissantes (faune et flore) sur l’ensemble du territoire réunionnais.
  258.                         L’association sensibilise et accompagne les particuliers à la préservation de la biodiversité,
  259.                         et à la nécessité de réduire l’emprise des espèces exotiques envahissantes sur les milieux.
  260.                     </div>
  261.                     <div class="mt-auto">
  262.                         <a href="https://ave2m.com/" class="btn btn-orange rounded-pill">DÉCOUVRIR</a>
  263.                     </div>
  264.                 </div>
  265.             </div>
  266.             <div class="col-xl-3 col-lg-6 col-md-12 col-sm-12 text-center mt-5">
  267.                 <div class="program-content border border-dark h-100 d-flex flex-column">
  268.                     <img class="program-img rounded mx-auto d-block mt-5"
  269.                          src="{{ asset('build/images/logo_prefet_reunion.png') }}"
  270.                          alt="Logo DEAL">
  271.                     <span class="program-label"><strong>DEAL</strong></span>
  272.                     <div class="program-text">
  273.                         Sous l’autorité du préfet, la DEAL (Direction de l’Environnement, de l’Aménagement et du Logement)
  274.                         a pour mission de mettre en œuvre localement les politiques de l’État impulsées par le ministère
  275.                         de la Transition écologique (MTE), le ministère de la Cohésion des territoires et des Relations
  276.                         avec les collectivités territoriales (MCTRCT), le ministère de la Mer (MMer).
  277.                     </div>
  278.                     <div class="mt-auto">
  279.                         <a href="http://www.reunion.developpement-durable.gouv.fr/" class="btn btn-orange rounded-pill">DÉCOUVRIR</a>
  280.                     </div>
  281.                 </div>
  282.             </div>
  283.         </div>
  284.     </div>
  285.     {% if published_demands is not empty %}
  286.         <div class="d-flex align-items-center justify-content-center mt-5">
  287.             <div class="container-fluid">
  288.                 <h1 class="banner-title text-black text-center"><strong>LES COMMENTAIRES DES PARTICULIERS</strong></h1>
  289.                 <div class="articles mt-5">
  290.                     <div class="row justify-content-center">
  291.                         {% for demand in published_demands %}
  292.                             <div class="col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-3 mb-3">
  293.                                 <div class="article">
  294.                                     <div class="article-header">
  295.                                         <h2 class="article-title">{{ demand.demandInformation.firstname }} {{ demand.demandInformation.lastname|slice(0, 1) }}.</h2>
  296.                                         <div class="article-meta">
  297.                                             <div class="row">
  298.                                                 <div class="col-6 col-lg-6">
  299.                                                     {% set posted_feedback_status = get_demand_status(demand, constant('App\\Entity\\Demand::USER_POSTED_FEEDBACK_STATUS')) %}
  300.                                                     <i class="far fa-calendar fa-fw"></i> {{ posted_feedback_status ? posted_feedback_status.createdAt|format_datetime('short','none') }}
  301.                                                 </div>
  302.                                             </div>
  303.                                         </div>
  304.                                     </div>
  305.                                     <div class="article-body">
  306.                                         <p class="align-self-center">{{ demand.comment|nl2br }}</p>
  307.                                     </div>
  308.                                     <div class="article-footer">
  309.                                     </div>
  310.                                 </div>
  311.                             </div>
  312.                         {% endfor %}
  313.                     </div>
  314.                 </div>
  315.             </div>
  316.         </div>
  317.     {% endif %}
  318.     {% if news is not empty %}
  319.         <div class="banner is-footer d-flex align-items-center justify-content-center mt-5">
  320.             <div class="container-fluid">
  321.                 <h1 class="banner-title text-white text-center"><strong>NOS DERNIÈRES ACTUALITÉS</strong></h1>
  322.                 <div class="articles mt-5">
  323.                     <div class="row justify-content-center">
  324.                         {% for news in news %}
  325.                             <div class="col-sm-12 col-md-6 col-lg-4 col-xl-3 col-xxl-3 mb-3">
  326.                                 <div class="article">
  327.                                     <div class="article-header">
  328.                                         <h2 class="article-title">{{ news.title }}</h2>
  329.                                         <div class="article-meta">
  330.                                             <div class="row">
  331.                                                 <div class="col-6 col-lg-6">
  332.                                                     <i class="far fa-calendar fa-fw"></i> {{ news.createdAt|format_datetime('short','none') }}
  333.                                                 </div>
  334.                                             </div>
  335.                                         </div>
  336.                                     </div>
  337.                                     <div class="article-body">
  338.                                         <p class="align-self-center">{{ news.content|nl2br }}</p>
  339.                                     </div>
  340.                                     <div class="article-footer">
  341.                                     <span class="text-decoration-underline text-primary">
  342.                                         <a href="{{ news.externalLink }}">En savoir plus</a>
  343.                                     </span>
  344.                                     </div>
  345.                                 </div>
  346.                             </div>
  347.                         {% endfor %}
  348.                     </div>
  349.                 </div>
  350.             </div>
  351.         </div>
  352.     {% endif %}
  353. {% endblock %}
  354. {% block javascripts %}
  355.     <script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
  356.         ({key: "{{ GOOGLE_API_KEY }}", v: "weekly"});</script>
  357.     {{ encore_entry_script_tags('google-map-new') }}
  358.     <script>
  359.         const repartitionDemandesModalOpen = document.querySelector('[data-repartition-demandes-modal-open]');
  360.         const repartitionDemandesModalClose = document.querySelector('[data-repartition-demandes-modal-close]');
  361.         repartitionDemandesModalClose.addEventListener('click', () => {
  362.             document.getElementById('repartition-demandes-modal').classList.remove('is-active');
  363.         });
  364.         repartitionDemandesModalOpen.addEventListener('click', () => {
  365.             document.getElementById('repartition-demandes-modal').classList.add('is-active');
  366.         });
  367.     </script>
  368. {% endblock %}