templates/default/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Hello DefaultController!{% endblock %}
  3. {% block body %}
  4. <style>
  5. .select2-container--default .select2-selection--single {
  6.   background-color: #fff;
  7.   border: none !important;
  8.   border-radius: 4px;
  9. }
  10. .select2-container--default .select2-selection--single .select2-selection__arrow {
  11.   height: 26px;
  12.   position: absolute;
  13.   top: 1px;
  14.   right: 1px;
  15.   width: 20px;
  16.   display: none;
  17. }
  18. /* Google Fonts - Poppins */
  19.         @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600&display=swap");
  20.         .wrapper {
  21.             position: fixed;
  22.             bottom: 50px;
  23.             right: -370px;
  24.             max-width: 345px;
  25.             width: 100%;
  26.             background: #fff;
  27.             border-radius: 8px;
  28.             padding: 15px 25px 22px;
  29.             transition: right 0.3s ease;
  30.             box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
  31.         }
  32.         .wrapper.show {
  33.             right: 20px;
  34.         }
  35.         .tete {
  36.             display: flex !important;
  37.             align-items: center !important;
  38.             column-gap: 15px !important;
  39.             background-color: #090817 !important;
  40.             padding: 10px; /* Optional: to give some padding around the content */
  41.             border-radius: 5px; /* Optional: to give rounded corners */
  42.             /* box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); Optional: to give a slight shadow */
  43.         }
  44.         /* .wrapper header {
  45. } */
  46.         .tete i {
  47.          color: #B0DB82;
  48.             /* color: #FF0000; */
  49.             /* color: #4070f4; */
  50.             font-size: 32px;
  51.         }
  52.         .tete h2 {
  53.             color: white !important;
  54.             font-weight: 500 !important;
  55.             margin: 0; /* Optional: to remove any default margin */
  56.         }
  57.         .wrapper .data {
  58.             margin-top: 16px;
  59.         }
  60.         .wrapper .data p {
  61.          color: #B0DB82;
  62.             /* color: #333; */
  63.             font-size: 16px;
  64.         }
  65.         .data p a {
  66.             color: #4070f4;
  67.             text-decoration: none;
  68.         }
  69.         .data p a:hover {
  70.             text-decoration: underline;
  71.         }
  72.         .wrapper .buttons {
  73.             margin-top: 16px;
  74.             width: 100%;
  75.             display: flex;
  76.             align-items: center;
  77.             justify-content: space-between;
  78.         }
  79.         .buttons .button {
  80.             border: none;
  81.             color: #fff;
  82.             padding: 8px 0;
  83.             border-radius: 4px;
  84.             background: #4070f4;
  85.             cursor: pointer;
  86.             width: calc(100% / 2 - 10px);
  87.             transition: all 0.2s ease;
  88.         }
  89.         .buttons #acceptBtn:hover {
  90.             background-color: #B0DB82;
  91.         }
  92.         #declineBtn #acceptBtn {
  93.             border: 2px solid #4070f4;
  94.         }
  95.       .btn {
  96.          color: white;
  97.          background-color:#2E3332;
  98.       }
  99.         #declineBtn:hover {
  100.             background-color: #B0DB82;
  101.         }
  102.         @keyframes fadeInSlideUp {
  103.             0% {
  104.                 opacity: 0;
  105.                 transform: translateY(20px);
  106.             }
  107.             100% {
  108.                 opacity: 1;
  109.                 transform: translateY(0);
  110.             }
  111.         }
  112.         .texte-anim {
  113.             animation: fadeInSlideUp 1s ease-out forwards;
  114.         }
  115. </style>
  116. <section class="landing-padding landing-pro">
  117.    <div class="container-fluid my-auto" style="height: 100vh;">
  118.       <div class="row spacing-particulier">
  119.          <div class="col-lg-8 col-md-12 col-sm-12 col-12 box1">
  120.             <h1>Trouvez des promotions près de soi</h1>
  121.             <h4 class="title-particulier pink" style="font-size:20px">Ne perdez pas de temps les annonces sont valables uniquement quelques heures !</h4>
  122.             <div class="search-box" style="border: none;">
  123.                <form class="search-box" action="{{ path('annonces') }}" method="get">
  124.                   <img src="{{ asset('assets/images/particulier/epingle.png') }}" alt="">
  125.                   <select class="input-search js-data-example-ajax" name="ville" style="width:100%"></select>
  126.                   <button type="submit" class="bgreen" style="color: white; border-radius: 5px; padding: 10px;">Rechercher</button>
  127.                </form>
  128.             </div>
  129.          </div>
  130.          <div class="col-lg-4 col-md-12 col-sm-12 col-12 box2 section-title">
  131.             <br><br>
  132.             <img src="{{asset('assets/images/particulier/particulier-img.png')}}" alt="">
  133.          </div>
  134.       </div>
  135.    </div>
  136.    <div class="container-fluid" style="margin-top : -50px">
  137.       <div class="row" style="background: #B0DB82; text-align: right; color: white; height: 70px">
  138.          <h2 class="souts-title-particulier" style=" padding-right: 8% !important; margin-top: 15px"><i>Limiter le gaspillage tout en faisant plus de profit !</i></h2>
  139.       </div>
  140.    </div>
  141. </section>
  142. <section class="section-padding bg-light" id="propos">
  143.    <div class="container section3-particulier">
  144.       <div class="row py-5 ">
  145.          <div class="section-title text-center">
  146.             <h2 class="green">MODIXOM c'est quoi ?</h2>
  147.          </div>
  148.       </div>
  149.       <div class="row">
  150.          <div class="col-md-6 col-12 d-none d-md-flex justify-content-center align-items-center">
  151.             <img src="{{asset('assets/images/mockup.png')}}" style="height: 600px; width: 600px !important" alt="">
  152.          </div>
  153.          <div class="col-md-6 col-12 h-100 fs-5">
  154.             <ul>
  155.                <li class="py-4 py-md-3 mx-auto text-index"><b class="green">o</b> Accès à des promotions où que vous soyez grâce à notre
  156.                   application mobile disponible sur Apple Store et Google Play</li>
  157.                <li class="py-4 py-md-3 mx-auto text-index"><b class="green">o</b> Profitez de produits et/ou prestations de services à bas prix</li>
  158.                <li class="py-4 py-md-3 mx-auto text-index"><b class="green">o</b> Chaque jour de nouvelles promotions !</li>
  159.                <li class="py-4 py-md-3 mx-auto text-index "><b class="green">o</b> Chaque promotion a une <strong>durée maximale de 24h</strong>, lorsqu’une offre vous intéresse il est donc important de s’y rendre le jour-même durant les horaires d’ouverture du commerce avant de passer à côté de belles réductions !</li>
  160.                <li class="py-4 py-md-3 mx-auto text-index "><b class="green">o</b> Sans oublier la possibilité de créer des alertes pour toujours être informé de la dernière offre ou promotion
  161.                   en cours près de chez vous !</li>
  162.             </ul>
  163.          </div>
  164.       </div>
  165.    </div>
  166. </section>
  167. <section class="section-padding">
  168.    <div class="container section2-particulier pt-3">
  169.       <div class="row ">
  170.          <div class="section-title text-center">
  171.             <h2>Comment ça marche ?</h2><br><br>
  172.          </div>
  173.       </div>
  174.       <div class="row content-section2-particulier ">
  175.          <div class="col-12  col-md-4 d-flex flex-column align-items-center">
  176.             <img src="{{asset('assets/images/particulier/par1.png')}}" alt="">
  177.             <p class="theme-description pt-3 fs-4" style="font-size:1.25rem!important;">Indiquez votre position</p>
  178.          </div>
  179.          <div class="col-12  col-md-4  d-flex flex-column align-items-center">
  180.             <img src="{{asset('assets/images/particulier/par3.png')}}" alt="">
  181.             <p class="theme-description pt-3 fs-4" style="font-size:1.25rem!important;">Parcourez les promotions en fonction
  182.                des catégories ou des enseignes qui
  183.                vous intéressent</p>
  184.          </div>
  185.          <div class="col-12  col-md-4 d-flex flex-column align-items-center mb-sm-5">
  186.             <img src="{{asset('assets/images/particulier/par2.png')}}" alt="">
  187.             <p class="theme-description pt-3 fs-4 " style="font-size:1.25rem!important;">Rendez-vous chez l’annonceur
  188.                afin d'effectuer vos achats ou
  189.                faire appel à ses prestations
  190.                de services et ainsi bénéficier
  191.                de promotions</p>
  192.          </div>
  193.       </div>
  194.    </div>
  195. </section>
  196. <section class="section-padding bgreen">
  197.    <div class="container section3-particulier">
  198.       <div class="row py-5 ">
  199.          <div class="section-title text-center">
  200.             <h2 style="color: white">Avantages</h2>
  201.          </div>
  202.       </div>
  203.       <div class="row  fs-5">
  204.          <div class="col-md-6 col-12 h-100 ">
  205.             <ul>
  206.                <li class="py-3 mx-auto txt">o Contribuer à limiter le gaspillage alimentaire et non alimentaire en limitant les invendus</li>
  207.                <li class="py-3 mx-auto txt">o Profiter de produits ou services de qualité à prix réduits près de chez soi</li>
  208.                <li class="py-3 mx-auto txt">o Favoriser le commerce de proximité</li>
  209.                <li class="py-3 mx-auto txt">o Réduire le gaspillage d’imprimés publicitaires grâce à la digitalisation des annonces</li><br>
  210.             </ul>
  211.          </div>
  212.          <div class="col-md-6 col-12 d-none d-md-flex justify-content-center">
  213.             <img src="{{asset('assets/images/particulier/particulier-environemental.png')}}" alt="">
  214.          </div>
  215.       </div>
  216.    </div>
  217. </section>
  218. <section class="section-padding">
  219.    <div class="container section3-particulier">
  220.       <div class="row py-5  ">
  221.          <div class="section-title text-center">
  222.             <h2 class="green">Combien ça coûte ?</h2>
  223.             <div class="py-4 py-md-3 mx-auto" style="font-size:1.25rem!important;">L’application est <strong>gratuite</strong> et téléchargeable sur Apple Store et Google Play
  224.             </div>
  225.          </div>
  226.       </div>
  227.       <div class="row fs-5">
  228.          <div class="col-md-6 col-12 d-none d-md-flex justify-content-center">
  229.             <img src="{{asset('assets/images/particulier/particulier-pricing.png')}}" alt="">
  230.          </div>
  231.          <div class="col-md-6 col-12 h-100 ">
  232.             <h3 class="py-4 py-md-3 mx-auto green" style="text-align: right"><strong>Une promotion vous intéresse ?</strong></h3>
  233.             <ul>
  234.                <li class="py-4 py-md-3 mx-auto">Si vous souhaitez acheter des produits il vous suffit de vous rendre directement chez le commerçant. Vous trouverez ses coordonnées dans le descriptif de l’annonce.</li>
  235.                <li class="py-4 py-md-3 mx-auto">Si vous souhaitez faire appel aux services d’un professionnel, vous pouvez directement le contacter via ses informations disponibles sur l'annonce.</li><br>
  236.             </ul>
  237.          </div>
  238.       </div>
  239.    </div>
  240. </section>
  241. <section class="section-padding telecharger-app bgreen">
  242.    <div class="container">
  243.       <div class="row g-3 pb-3 ">
  244.          <h2 class="fs-2 fw-bold text-center">Télécharger l’application</h2>
  245.          <h3 class="fs-3 text-center">Profitez de promotions où que vous soyez !</h3>
  246.       </div>
  247.       <div class="row py-5">
  248.          <!-- App Store button -->
  249.          <div class="col-md-6 col-12  text-md-end text-center">
  250.             <a href="https://www.apple.com/fr/app-store/" target="_blank" class="market-btn apple-btn" role="button">
  251.                <span class="market-button-subtitle">Télécharger sur</span>
  252.                <span class="market-button-title">App Store</span>
  253.             </a>
  254.          </div>
  255.          <!-- Google Play button -->
  256.          <div class="col-md-6 col-12 text-md-start text-center">
  257.             <a href="https://play.google.com/store/games?gl=FR&utm_source=emea_Med&utm_medium=hasem&utm_content=Oct2020&utm_campaign=Evergreen&pcampaignid=MKT-EDR-emea-fr-1001280-Med-hasem-py-Evergreen-Oct2020-Text_Search_BKWS%7CONSEM_kwid_43700008792247580&gclid=CjwKCAiAl9efBhAkEiwA4Toril0SpGeAFHdzwhXUd_zX25ptzJLjDqUqg26pTEyl6Apf3UA1SsLrhhoCuAcQAvD_BwE&gclsrc=aw.ds&pli=1" target="_blank" class="market-btn google-btn" role="button">
  258.                <span class="market-button-subtitle">Télécharger sur</span>
  259.                <span class="market-button-title">Google Play</span>
  260.             </a>
  261.          </div>
  262.       </div>
  263.    </div>
  264. </section>
  265. <section class="section-padding">
  266.    <div class="container">
  267.       <div class="section-title row g-3 pb-3 ">
  268.          <h2 class="fs-2 fw-bold" style="color: #00B050">Rejoignez nous</h2>
  269.       </div>
  270.       <div class="row py-3">
  271.          <div class="col-md-1"></div>
  272.          <div class="col-md-1 col-12">
  273.             <img src="{{asset('assets/images/linkedin.png')}}">
  274.          </div>
  275.          <div class="col-md-1 col-12">
  276.             <img src="{{asset('assets/images/instagram.png')}}">
  277.          </div>
  278.          <div class="col-md-1 col-12">
  279.             <img src="{{asset('assets/images/facebook.png')}}">
  280.          </div>
  281.       </div><br>
  282.    </div>
  283. </section>
  284. <title>Popup Cookie Consent Box</title>
  285.     <link
  286.     rel="stylesheet" href="style.css"/>
  287.     <!-- Boxicons CSS -->
  288.     <link href="https://unpkg.com/boxicons@2.1.2/css/boxicons.min.css" rel="stylesheet"/>
  289.     <script src="script.js" defer></script>
  290.     <div style="background-color:#1C1B29; z-index:9999" class="wrapper">
  291.         <div class="tete">
  292.             <i class="bx bx-cookie"></i>
  293.             <h2>Gestion Cookies</h2>   
  294.         </div>
  295.         <div style="background-color:#1C1B29" class="data">
  296.             <p style="color:white" id="texteCookie" class="texte-anim">Nous utilisons des cookies nécessaires au fonctionnement de ce site Web et également des cookies nous permettant d'analyser notre trafic.
  297.                 <br><a href="{{path('app_cookie')}}">
  298.                     En savoir plus</a>
  299.             </p>
  300.         </div>
  301.         <div class="buttons">
  302.             <button class="btn" id="acceptBtn">Accepter</button>
  303.             <button class="btn" id="declineBtn">Ajuster</button>
  304.         </div>
  305.     </div>
  306. <script>
  307.         const cookieBox = document.querySelector(".wrapper"),
  308. buttons = document.querySelectorAll(".btn");
  309. const executeCodes = () => { // if cookie contains codinglab it will be returned and below of this code will not run
  310. if (document.cookie.includes("codinglab")) 
  311. return;
  312. cookieBox.classList.add("show");
  313. buttons.forEach((button) => {
  314. button.addEventListener("click", () => {
  315. if (button.id == "declineBtn") {
  316. var newText = document.createElement("p");
  317. newText.id = "textInfo";
  318. newText.classList.add('texte-anim', 'txt-gradient');
  319. newText.innerHTML = "<br>Si vous refusez les cookies du site, cela peut affecter certaines fonctionnalités du site.<br><br>";
  320. var checkbox1 = document.createElement('input');
  321. checkbox1.type = "checkbox";
  322. checkbox1.id = "check1Id"
  323. checkbox1.disabled = true;
  324. checkbox1.checked = true;
  325. var checkbox2 = document.createElement('input');
  326. checkbox2.type = "checkbox";
  327. checkbox2.id = "check2Id"
  328. var label = document.createElement('label')
  329. label.htmlFor = "check1Id";
  330. label.className = "txt-gradient";
  331. label.innerHTML = "Cookies essentiels<br>"
  332. var label2 = document.createElement('label')
  333. label2.htmlFor = "check2Id";
  334. label2.appendChild(document.createTextNode('Analytics'));
  335. var lineBreak = document.createElement('br'); // Creating a line break
  336. document.getElementById("texteCookie").appendChild(newText);
  337. document.getElementById("textInfo").appendChild(checkbox1);
  338. document.getElementById("textInfo").appendChild(label);
  339. document.getElementById("textInfo").appendChild(lineBreak); // Appending the line break
  340. document.getElementById("textInfo").appendChild(checkbox2);
  341. document.getElementById("textInfo").appendChild(label2);
  342. document.getElementById("declineBtn").style.display="none";
  343. }
  344. // if button has acceptBtn id
  345. if (button.id == "acceptBtn") { // set cookies for 1 month. 60 = 1 min, 60 = 1 hours, 24 = 1 day, 30 = 30 days
  346. document.cookie = "cookieBy= codinglab; max-age=" + 5;
  347. cookieBox.classList.remove("show");
  348. }
  349. });
  350. });
  351. };
  352. // executeCodes function will be called on webpage load
  353. window.addEventListener("load", executeCodes);
  354. </script>
  355. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  356. <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
  357. <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.8/js/select2.min.js" defer></script>
  358. <script>
  359.    // Obtenez tous les éléments input de type texte
  360.    var inputs = document.querySelectorAll("input[type='text']");
  361.    // Pour chaque champ de saisie, ajouter un écouteur d'événement pour le focus
  362.    inputs.forEach(function(input) {
  363.       input.addEventListener("focus", () => {
  364.          // Supprime la bordure et l'outline lorsqu'un champ de saisie texte est en focus
  365.          this.style.border = "none";
  366.          this.style.outline = "none";
  367.       });
  368.    });
  369.     $(document).ready(function() {
  370.         $('.js-data-example-ajax').select2({
  371.             placeholder: 'Choisir une ville ou un code postal',
  372.             language: {
  373.                 inputTooShort: function() {
  374.                     return "Saisir minimum 3 caractères";
  375.                 },
  376.                 searching: function() {
  377.                     return "Recherche en cours...";
  378.                 },
  379.                 noResults: function() {
  380.                     return "Aucun résultat trouvé";
  381.                 }
  382.             },
  383.             minimumInputLength: 3,
  384.             ajax: {
  385.                 url: '/api/villes', // Utilisez l'URL de votre nouvelle API
  386.                 dataType: 'json',
  387.                 delay: 250,
  388.                 data: function(params) {
  389.                     return {
  390.                         q: params.term // search term
  391.                     };
  392.                 },
  393.                 processResults: function(data) {
  394.                     return {
  395.                         results: data.results
  396.                     };
  397.                 },
  398.                 cache: true
  399.             },
  400.             templateResult: function(city) {
  401.                 if (city.loading) return city.text;
  402.                 return $('<span>' + city.text + '</span>');
  403.             },
  404.             templateSelection: function(city) {
  405.                 return city.text || city.id;
  406.             }
  407.         });
  408.     });
  409. </script>
  410. {% endblock %}