templates/front/inscriptions/inscription-index.html.twig line 1

Open in your IDE?
  1. {% extends 'front.html.twig' %}
  2. {% block title %}Inscription | CIMEF-INTERNATIONAL{% endblock %}
  3. {% block styleSheets %}
  4. <!-- jQuery (OBLIGATOIRE avant Select2) -->
  5. <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  6. <script>
  7. $(document).ready(function () {
  8.     const $thematique = $('#new_inscription_form_thematique');
  9.     const $theme      = $('#new_inscription_form_theme');
  10.     const $lieu       = $('#new_inscription_form_lieu');
  11.     const $periode    = $('#new_inscription_form_periode');
  12.     const $prix       = $('#new_inscription_form_prix');
  13.     const $loader     = $('#loader');
  14.     
  15.     $('#new_inscription_form_prix').prop('readonly', true);
  16.     $('#new_inscription_form_periode').prop('readonly', true);
  17.     $theme.parent().hide();
  18.     $lieu.parent().hide();
  19.     $periode.parent().hide();
  20.     $prix.parent().hide();
  21.     /* =========================
  22.        THÉMATIQUE → THÈMES
  23.     ========================= */
  24.     $thematique.on('change', function () {
  25.         let thematiqueVal = $(this).val();
  26.         
  27.         $theme.parent().hide();
  28.         $lieu.parent().hide();
  29.         $periode.parent().hide();
  30.         $prix.parent().hide();
  31.         if (!thematiqueVal) return;
  32.         
  33.         $loader.show();
  34.         $.ajax({
  35.             url: "{{ path('front.inscriptions', { annee: annee }) }}",
  36.             type: "POST",
  37.             dataType: "json",
  38.             data: {
  39.                 action: 'themes',
  40.                 thematiqueVal: thematiqueVal
  41.             },
  42.             success: function (data) {
  43.                 $theme.empty();
  44.                 $theme.append('<option value="">Sélectionner un thème</option>');
  45.                 data.forEach(item => {
  46.                     $theme.append(
  47.                         `<option value="${item.id}">${item.nom}</option>`
  48.                     );
  49.                 });
  50.                 $theme.parent().show();
  51.             },
  52.             complete: function () {
  53.                 $loader.hide();
  54.             }
  55.         });
  56.     });
  57.     /* =========================
  58.        THÉMATIQUE → THÈME → LIEUX
  59.     ========================= */
  60.     $theme.on('change', function () {
  61.         let themeVal = $(this).val();
  62.         $lieu.parent().hide();
  63.         $periode.parent().hide();
  64.         $prix.parent().hide();
  65.         if (!themeVal) return;
  66.         
  67.         $loader.show();
  68.         $.ajax({
  69.             url: "{{ path('front.inscriptions', { annee: annee }) }}",
  70.             type: "POST",
  71.             dataType: "json",
  72.             data: {
  73.                 action: 'lieux',
  74.                 themeVal: themeVal
  75.             },
  76.             success: function (data) {
  77.                 $lieu.empty();
  78.                 $lieu.append('<option value="">Sélectionner le lieu</option>');
  79.                 data.forEach(item => {
  80.                     $lieu.append(
  81.                         `<option value="${item.id}">${item.lieu}</option>`
  82.                     );
  83.                 });
  84.                 $lieu.parent().show();
  85.             },
  86.             complete: function () {
  87.                 $loader.hide();
  88.             }
  89.         });
  90.     });
  91.     /* =========================
  92.        THÉMATIQUE → THÈME → LIEUX → DATE
  93.     ========================= */
  94.     $lieu.on('change', function () {
  95.     
  96.         let formationId = $(this).val();
  97.     
  98.         $periode.parent().hide();
  99.         $prix.parent().hide();
  100.     
  101.         if (!formationId) return;
  102.         
  103.         $loader.show();
  104.     
  105.         $.ajax({
  106.             url: "{{ path('front.inscriptions', { annee: annee }) }}",
  107.             type: "POST",
  108.             dataType: "json",
  109.             data: {
  110.                 action: 'lieu_details',
  111.                 formationId: formationId
  112.             },
  113.             success: function (data) {
  114.     
  115.                 // Session (date)
  116.                 $('#new_inscription_form_periode')
  117.                     .val(data.session)
  118.                     .parent()
  119.                     .show();
  120.     
  121.                 // Prix
  122.                 $('#new_inscription_form_prix')
  123.                     .val(data.prix + ' ' + data.devise)
  124.                     .parent()
  125.                     .show();
  126.             },
  127.             complete: function () {
  128.                 $loader.hide();
  129.             }
  130.         });
  131.     });
  132. });
  133. </script>
  134. <style id='wp-emoji-styles-inline-css' type='text/css'>
  135. .select{
  136.     padding: 10px !important;
  137.     border:1px solid red !important;
  138. }
  139. .select2{
  140.     padding: 10px;
  141.     border:1px solid red;
  142. }
  143. /* 🔄 Spinner */
  144. .loader {
  145.     display: none;
  146.     width: 25px;
  147.     height: 25px;
  148.     border: 3px solid #ddd;
  149.     border-top: 3px solid #007bff;
  150.     border-radius: 50%;
  151.     animation: spin 0.8s linear infinite;
  152.     margin-top: 10px;
  153. }
  154. @keyframes spin {
  155.     100% { transform: rotate(360deg); }
  156. }
  157. label {
  158.     font-family: arial;
  159.     font-weight: bold;
  160. }
  161. .form-control{
  162.     width:100%;
  163.     height:50px;
  164.     padding:10px;
  165.     border-radius:8px;
  166.     font-family: arial;
  167.     margin-bottom: 5px;
  168.     border:1px solid #ccc;
  169. }
  170. .textarea{
  171.     width:100%;
  172.     height:45px;
  173.     padding:10px;
  174.     font-family: arial;
  175.     border:1px solid #ccc;
  176.     height: 100px !important;
  177.     border-radius:1px !important;
  178. }
  179. .row {
  180.     display: flex;            /* flexbox pour aligner les colonnes */
  181.     flex-wrap: wrap;          /* les colonnes passent à la ligne si nécessaire */
  182.     margin-right: -0.75rem;   /* -gutter/2 */
  183.     margin-left: -0.75rem;    /* -gutter/2 */
  184. }
  185. .events_pagination ul.pagination {
  186.     display: flex;
  187.     flex-wrap: wrap;
  188.     justify-content: center;
  189.     list-style: none;
  190.     margin: 0;
  191.     padding: 0;
  192. }
  193. .page-item.active .page-link {
  194.     background-color: #ff6600;
  195.     color: #fff;
  196. }
  197. .page-link {
  198.     margin: 10px;
  199.     color: #051a53;
  200.     background-color: #ededed;
  201.     border-radius: 5px;
  202.     padding: 10px;
  203.     /* margin: 0 3px; */
  204. }
  205. .text-lien{
  206.    color: #ff6600;
  207.    /* font-size: 16px; */
  208. }
  209. .shadow {
  210.     box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15) !important;
  211. }
  212. /* Small devices ≥576px */
  213. @media (min-width: 576px) {
  214.   .col-3 { flex: 0 0 100%; max-width: 100%; }
  215.   .col-sm-4 { flex: 0 0 100%; max-width: 100%; }
  216.   .col-sm-6 { flex: 0 0 100%; max-width: 100%; }
  217.   .col-sm-12 { flex: 0 0 100%; max-width: 100%; }
  218.   h1 { font-size: 20px !important; }
  219. }
  220. /* Medium devices ≥768px */
  221. @media (min-width: 768px) {
  222.   .col-md-3 { flex: 0 0 33.333333%; max-width: 33.333333%; }
  223.   .col-md-4 { flex: 0 0 33.333333%; max-width: 33.333333%; }
  224.   .col-md-6 { flex: 0 0 50%; max-width: 50%; }
  225.   .col-md-12 { flex: 0 0 100%; max-width: 100%; }
  226. }
  227. /* Large devices ≥992px */
  228. @media (min-width: 992px) {
  229.   .col-lg-3 { flex: 0 0 25%; max-width: 25%; }
  230.   .col-lg-4 { flex: 0 0 33.333333%; max-width: 33.333333%; }
  231.   .col-lg-6 { flex: 0 0 50%; max-width: 50%; }
  232.   .col-lg-12 { flex: 0 0 100%; max-width: 100%; }
  233. }
  234. .type1 .date-event {
  235.     transition: all 0.5s ease;
  236.     position: absolute;
  237.     bottom: 20px;
  238.     left: 30px;
  239.     z-index: 1;
  240.     font-size: 12px;
  241.     color: #fff;
  242.     font-weight: 700;
  243.     text-transform: uppercase;
  244.     text-align: center;
  245.     line-height: 1.3;
  246.     letter-spacing: 1px;
  247.     background-color: #ff6600 !important;
  248.     padding: 12px;
  249. }
  250. .icon_event{
  251.     color: #ff6600 !important;
  252. }
  253. .wrap_header_banner .overlay-slider {
  254.     position: absolute;
  255.     top: 0;
  256.     left: 0;
  257.     padding-top: 30px; 
  258.     width: 100%;
  259.     height: 100%;
  260.     background-color: rgba(0, 0, 0, 0.6392156863);
  261. }
  262. .left-column {
  263.     flex: 1;
  264.     /*background: linear-gradient(145deg, #051a53, 0%, #0a2a7a 100%);*/
  265.     background: #051a53;
  266.     color: white;
  267.     padding: 40px;
  268.     display: flex;
  269.     flex-direction: column;
  270.     justify-content: space-between;
  271.     position: relative;
  272.     overflow: hidden;
  273. }
  274. .left-column:before {
  275.     content: "";
  276.     position: absolute;
  277.     top: 0;
  278.     left: 0;
  279.     right: 0;
  280.     bottom: 0;
  281.     background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><circle cx="50" cy="50" r="2" fill="rgba(255,255,255,0.05)"/></svg>');
  282.     opacity: 0.3;
  283. }
  284. .logo-header {
  285.     display: flex;
  286.     align-items: center;
  287.     gap: 15px;
  288.     margin-bottom: 40px;
  289.     z-index: 1;
  290.     position: relative;
  291. }
  292. .logo-circle {
  293.     width: 80px !important;
  294.     height: 65px !important;
  295.     background-color: #ff6600;
  296.     border-radius: 50%;
  297.     display: flex;
  298.     align-items: center;
  299.     justify-content: center;
  300.     font-size: 24px;
  301. }
  302. .left-content {
  303.     z-index: 1;
  304.     position: relative;
  305.     flex-grow: 1;
  306.     margin: 0px !important;
  307.     width: 100% !important;
  308. }
  309. .features-list {
  310.     list-style: none;
  311.     margin: 0px !important;
  312.     width: 100%;
  313. }
  314. .features-list li {
  315.     display: flex;
  316.     align-items: flex-start;
  317.     margin-bottom: 10px;
  318.     margin-left: -30px;
  319. }
  320. .feature-icon {
  321.     background-color: rgba(255, 255, 255, 0.15);
  322.     color: #fff;
  323.     border-radius: 50%;
  324.     width: 40px;
  325.     height: 40px;
  326.     display: flex;
  327.     align-items: center;
  328.     justify-content: center;
  329.     margin-right: 15px;
  330.     flex-shrink: 0;
  331.     margin-top: 10px !important;
  332. }
  333. .feature-text h4 {
  334.     font-size: 16px;
  335.     margin-bottom: 5px;
  336.     font-weight: 600;
  337. }
  338. .feature-text p {
  339.     font-size: 14px;
  340.     opacity: 0.8;
  341. }
  342. </style>
  343. {% endblock %}
  344. {% block body %}
  345. {% include 'section/navbar.html.twig' %}
  346. <div class="wrap_header_banner" style="height: 200px; background: url({{ asset('public/inter/wp-content/uploads/2023/06/header-banner.jpg')}});">
  347.     <div class="overlay-slider">
  348.         <div class="row_site">
  349.             <div class="container_site">
  350.                 <div class="cover_color"></div>
  351.                 <div class="header_banner_el">
  352.                     <div class="header_breadcrumbs">
  353.                         <div id="breadcrumbs">
  354.                         <ul class="breadcrumb">
  355.                             <li><a href="{{ path('front.inter.index') }}" style="color: #fff!important;" title="accueil">Accueil</a></li>
  356.                             <li class="li_separator"><span class="separator"><i class="ovaicon-next" style="color: #fff!important;"></i></span></li>
  357.                             <li style="color: #fff!important;">Formations</li>
  358.                             <li class="li_separator"><span class="separator"><i class="ovaicon-next" style="color: #fff!important;"></i></span></li>
  359.                             <li style="color: #fff!important;">Séminaires internationaux et certificats</li>
  360.                         </ul>
  361.                         </div>
  362.                     </div>
  363.                     <h1 class="header_title" style="color: #fff!important;">Séminaires internationaux et certificats</h1>
  364.                 </div>
  365.             </div>
  366.         </div>
  367.     </div>
  368. </div>
  369. {% for message in app.flashes('success') %}
  370. <div class="row toast_success" style="top: 100px !important; float: right !important; position: absolute;">
  371.     <div class="col-md-2 col-sm-2" style="padding: 10px;">
  372.         <i class="fa fa-check fa-2x" aria-hidden="true"></i>
  373.     </div>
  374.     <div class="col-md-10 col-sm-10" style="padding: 10px;">
  375.         <label style="font-family: arial;">{{ message }}</label>
  376.     </div>
  377. </div>    
  378. {% endfor %}
  379. {% for message in app.flashes('warning') %}
  380. <div class="row toast_warning" style="top: 100px !important; float: right !important; position: absolute;">
  381.     <div class="col-md-2 col-sm-2" style="padding: 10px;">
  382.         <i class="fa fa-check fa-2x" aria-hidden="true"></i>
  383.     </div>
  384.     <div class="col-md-10 col-sm-10" style="padding: 10px;">
  385.         <label style="font-family: arial;">{{ message }}</label>
  386.     </div>
  387. </div>   
  388. {% endfor %}
  389. {% for message in app.flashes('danger') %}
  390. <div class="row toast_danger" style="top: 100px !important; float: right !important; position: absolute;">
  391.     <div class="col-md-2 col-sm-2" style="padding: 10px;">
  392.         <i class="fa fa-check fa-2x" aria-hidden="true"></i>
  393.     </div>
  394.     <div class="col-md-10 col-sm-10" style="padding: 10px;">
  395.         <label style="font-family: arial;">{{ message }}</label>
  396.     </div>
  397. </div>   
  398. {% endfor %}
  399. <div class="container-event">
  400.     <div id="main-event" class="content-event">
  401.         
  402.          <div class="row" style="width: 100% !important; padding: 10px !important;">
  403.             <div class="col-lg-8 col-md-8 col-sm-12" style="padding: 20px">
  404.                 <div class="">
  405.             
  406.                     <div>
  407.                         <h3 class="header_title" style="font-weight: bolder; color: #051a53; font-family: arial;">Rejoignez nos programmes de formation professionnelle</h3>
  408.                     </div>
  409.                     <p style="font-size: 18px;">
  410.                         Merci de compléter le formulaire en sélectionnant <b>la thématique selon le thème et la ville de votre séminaire</b>, afin de bénéficier d’une prise en charge personnalisée.
  411.                     </p>
  412.             
  413.                     {{ form_start(demandeformationsForm, {attr: {style: 'width: 100%;'} }) }}
  414.                         <div>
  415.                             <h3 class="header_title" style="font-weight: bolder; color: #051a53; font-family: arial;">Formation souhaitée</h3>
  416.                         </div>
  417.                         <div class="row shadow" style="maring: 20px; padding: 30px; margin-top: 10px !important; margin-bottom: 20px !important; border: 2px solid #ededed;">
  418.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  419.                                 {{ form_row(demandeformationsForm.thematique) }}
  420.                             </div>
  421.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  422.                                 {{ form_row(demandeformationsForm.theme) }}
  423.                             </div>
  424.                             
  425.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  426.                                 {{ form_row(demandeformationsForm.lieu) }}
  427.                             </div>
  428.         
  429.                             <div class="col-md-3 col-sm-12" style="padding: 5px;">
  430.                                 {{ form_row(demandeformationsForm.periode) }}
  431.                             </div>
  432.                             <div class="col-md-3 col-sm-12" style="padding: 5px;">
  433.                                 {{ form_row(demandeformationsForm.prix) }}
  434.                             </div>
  435.                             <div class="col-12">
  436.                                 <div class="loader" id="loader"></div>
  437.                             </div>
  438.                         </div>
  439.                         
  440.    
  441.                         <div class="row shadow" style="border: 1px solid #ededed; padding: 20px;">
  442.                             <div>
  443.                                 <h3 class="header_title" style="font-weight: bolder; color: #051a53; font-family: arial;">Informations personnelles</h3>
  444.                             </div>
  445.                             <div class="col-md-12 col-sm-12">
  446.                                 {{ form_row(demandeformationsForm.civilite) }}
  447.                             </div>
  448.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  449.                                 {{ form_row(demandeformationsForm.nom) }}
  450.                             </div>
  451.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  452.                                 {{ form_row(demandeformationsForm.prenoms) }}
  453.                             </div>
  454.                             <div class="col-md-12 col-sm-12" style="padding: 5px;">
  455.                                 {{ form_row(demandeformationsForm.mail) }}
  456.                             </div>
  457.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  458.                                 {{ form_row(demandeformationsForm.boitepostale) }}
  459.                             </div>
  460.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  461.                                 {{ form_row(demandeformationsForm.telephone) }}
  462.                             </div>
  463.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  464.                                 {{ form_row(demandeformationsForm.whatsapp) }}
  465.                             </div>  
  466.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  467.                                 {{ form_row(demandeformationsForm.pays) }}
  468.                             </div>
  469.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  470.                                 {{ form_row(demandeformationsForm.ville) }}
  471.                             </div>
  472.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  473.                                 {{ form_row(demandeformationsForm.adresse) }}
  474.                             </div>
  475.                             <div style="margin-top: 10px; border: 1px solid #ededed !important; height: 5px; background-color: #ededed; width: 100%;"></div>
  476.                             <div class="form-header" style="border-top: 1px solid #051a53 !important; width: 100%;">
  477.                                 <h2 class="form-title">Informations sur votre formation</h2>
  478.                             </div>
  479.  
  480.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  481.                                 {{ form_row(demandeformationsForm.entreprise) }}
  482.                             </div>
  483.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  484.                                 {{ form_row(demandeformationsForm.fonction) }}
  485.                             </div>
  486.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  487.                                 {{ form_row(demandeformationsForm.nbparticipant) }}
  488.                             </div>
  489.                             <div class="col-md-6 col-sm-12" style="padding: 5px;">
  490.                                 {{ form_row(demandeformationsForm.siteweb) }}
  491.                             </div> 
  492.                             <div class="col-md-12 col-sm-12" style="padding: 5px;">
  493.                                 {{ form_row(demandeformationsForm.commentaire) }}
  494.                             </div>
  495.                             <div class="g-recaptcha" data-sitekey="6LfPYkosAAAAANaQq5rVy_x44wv122vknRu-sw3C"></div>
  496.                           </div>
  497.                         {{ form_end(demandeformationsForm) }}
  498.                 </div>
  499.             </div>
  500.             <div class="col-lg-4 col-md-4 col-sm-12" style="padding: 20px">
  501.                 
  502.                 <div class="left-column">
  503.                     <div>
  504.                         <div class="logo-header">
  505.                             <div class="logo-circle">
  506.                                 <i class="fas fa-globe-americas fa-2X"></i>
  507.                             </div>
  508.                             <div class="logo-text">
  509.                                 <h1 style="font-size: 20px !important; color: #fff !important;">CIMEF International</h1>
  510.                                 <p style="font-size: 14px !important; font-style: italic;">La formation précède la compétitivité !</p>
  511.                             </div>
  512.                         </div>
  513.                         
  514.                         <div class="left-content">
  515.                             <h2 class="left-title" style="font-size: 30px !important; color: #fff !important;">Inscription 2026</h2>
  516.                             <p class="left-subtitle">Rejoignez notre réseau mondial de professionnels et participez à des projets d'envergure internationale.</p>
  517.                             
  518.                             <ul class="features-list">
  519.                                 <li>
  520.                                     <div class="feature-icon">
  521.                                         <i class="fas fa-network-wired"></i>
  522.                                     </div>
  523.                                     <div class="feature-text">
  524.                                         <h4 style="color: #ff6600;">Une portée internationale</h4>
  525.                                         <p>Un réseau actif de professionnels répartis dans plusieurs pays</p>
  526.                                     </div>
  527.                                 </li>
  528.                                 <li>
  529.                                     <div class="feature-icon">
  530.                                         <i class="fas fa-graduation-cap"></i>
  531.                                     </div>
  532.                                     <div class="feature-text">
  533.                                         <h4 style="color: #ff6600;">Opportunités de collaboration internationale</h4>
  534.                                         <p>Participez à des projets stratégiques avec des partenaires de renom</p>
  535.                                     </div>
  536.                                 </li>
  537.                                 <li>
  538.                                     <div class="feature-icon">
  539.                                         <i class="fas fa-handshake"></i>
  540.                                     </div>
  541.                                     <div class="feature-text">
  542.                                         <h4 style="color: #ff6600;">Opportunités de collaboration</h4>
  543.                                         <p>Participez à des projets innovants avec des partenaires internationaux</p>
  544.                                     </div>
  545.                                 </li>
  546.                             </ul>
  547.                         </div>
  548.                     </div>
  549.                     
  550.                     <div class="contact-info">
  551.                         <h3 style="color: #fff;">Besoin d'aide ?</h3>
  552.                         <p>Contactez notre équipe à <strong>paris@cimef-international.org</strong> ou appelez-nous au <strong>+33 6 05 85 70 98 </strong></p>
  553.                     </div>
  554.                 </div>
  555.             
  556.             </div>        
  557.                  
  558.         </div>
  559.         
  560.     </div>
  561. </div>
  562. {% include 'section/footer.html.twig' %}
  563. {% block javascripts %}
  564.     <!-- Select2 JS -->
  565.     <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
  566.     
  567.     <script>
  568.         $(document).ready(function() {
  569.             // Appliquer Select2 sur le champ EntityType
  570.             //$('#new_inscription_form_thematique').select2({
  571.                 //placeholder: "Sélectionner une thématique",
  572.                 //allowClear: true,
  573.                 //width: '100%',
  574.                 //dropdownParent: $('#offcanvasRight') // ⭐ OBLIGATOIRE
  575.             //});
  576.             //$('#new_inscription_form_theme').select2({
  577.                 //placeholder: "Sélectionner un thème",
  578.                 //allowClear: true,
  579.                 //width: '100%',
  580.                 //dropdownParent: $('#offcanvasRight') // ⭐ OBLIGATOIRE
  581.             //});
  582.         });
  583.     </script>
  584. {% endblock %}
  585. {% endblock %}