templates/sejour/detailsejours.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block stylesheets %}
  3.     <link href="{{ asset('front/plugins/colorbox/colorbox.css') }}" rel="stylesheet" type="text/css">
  4.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/blog_style.css') }}">
  5.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/blog_responsive.css') }}">
  6.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/single_listing_style.css') }}">
  7.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/single_listing_responsive.css') }}">
  8.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/about_style.css') }}">
  9.     <link rel="stylesheet" type="text/css" href="{{ asset('front/style/about_responsive.css') }}">
  10.     <style>
  11.         .carousel {
  12.             position: relative;
  13.         }
  14.         .carousel-item img {
  15.             object-fit: cover;
  16.         }
  17.         #carousel-thumbs {
  18.             background: rgba(255,255,255,.3);
  19.             bottom: 0;
  20.             left: 0;
  21.             padding: 0 50px;
  22.             right: 0;
  23.         }
  24.         #carousel-thumbs img {
  25.             border: 5px solid transparent;
  26.             cursor: pointer;
  27.         }
  28.         #carousel-thumbs img:hover {
  29.             border-color: rgba(255,255,255,.3);
  30.         }
  31.         #carousel-thumbs .selected img {
  32.             border-color: #fff;
  33.         }
  34.         .carousel-control-prev,
  35.         .carousel-control-next {
  36.             width: 50px;
  37.         }
  38.         @media all and (max-width: 767px) {
  39.             .carousel-container #carousel-thumbs img {
  40.                 border-width: 3px;
  41.             }
  42.             .single-pricing{
  43.             width:115% !important;
  44.             margin-left: -18px;
  45.             }
  46.             p {
  47.     font-size: 12px !important;
  48. }
  49.             
  50.         }
  51.         @media all and (min-width: 576px) {
  52.             .carousel-container #carousel-thumbs {
  53.                 position: absolute;
  54.             }
  55.         }
  56.         @media all and (max-width: 576px) {
  57.             .carousel-container #carousel-thumbs {
  58.                 background: #ccccce;
  59.             }
  60.         }
  61.         .offers_item{
  62.             position: relative;
  63.             width: 205%;
  64.             overflow: hidden;
  65.             box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  66.             transition: all 300ms;
  67.             margin-bottom: 30px;
  68.             border-radius: 20px;
  69.             color: rgba(0, 0, 0, 0.87);
  70.             background: #fff;
  71.         }
  72.         .offers_item:hover {
  73.             transform: translateY(-2px);
  74.             box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
  75.         }
  76.         .latest_posts_container {
  77.             margin: 35px;
  78.         }
  79.         .hotel_location {
  80.             font-size: 24px;
  81.             color: #929191;
  82.             margin-top: 9px;
  83.             font-weight: 700;
  84.         }
  85.         /*price style*/
  86.         .pricing-content{}
  87.         .single-pricing{
  88.             background:#fff;
  89.             margin-top: 25px;
  90.             width: 255%;
  91.             padding:40px 20px;
  92.             border-radius:5px;
  93.             position:relative;
  94.             z-index:2;
  95.             border:1px solid #d8d5d5;
  96.             box-shadow: 0 10px 40px -10px rgba(0,64,128,.09);
  97.             transition:0.3s;
  98.         }
  99.         @media only screen and (max-width:480px) {
  100.             .single-pricing {margin-bottom:30px;}
  101.         }
  102.         .single-pricing:hover{
  103.             box-shadow:0px 60px 60px rgba(0,0,0,0.1);
  104.             z-index:100;
  105.             transform: translate(0, -10px);
  106.         }
  107.         .price-label {
  108.             color: #fff;
  109.             background: #ff9100;
  110.             font-size: 16px;
  111.             width: 100px;
  112.             margin-bottom: 15px;
  113.             display: block;
  114.             -webkit-clip-path: polygon(100% 0%, 90% 50%, 100% 100%, 0% 100%, 0 50%, 0% 0%);
  115.             clip-path: polygon(100% 0%, 90% 50%, 100% 100%, 0% 100%, 0 50%, 0% 0%);
  116.             margin-left: -20px;
  117.             position: absolute;
  118.         }
  119.         .price-head h2 {
  120.             font-weight: 600;
  121.             margin-bottom: 0px;
  122.             text-transform: capitalize;
  123.             font-size: 35px;
  124.         }
  125.         .price-head span {
  126.             display: inline-block;
  127.             background:#ff9100;
  128.             width: 6px;
  129.             height: 6px;
  130.             border-radius: 30px;
  131.             margin-bottom: 20px;
  132.             margin-top: 15px;
  133.         }
  134.         .price {
  135.             font-weight: 500;
  136.             font-size: 50px;
  137.             margin-bottom: 0px;
  138.         }
  139.         .single-pricing{}
  140.         .single-pricing h5 {
  141.             font-size: 14px;
  142.             margin-bottom: 0px;
  143.             text-transform: uppercase;
  144.         }
  145.         .single-pricing ul{
  146.             list-style: none;
  147.             margin-bottom: 20px;
  148.             margin-top: 30px;
  149.         }
  150.         .single-pricing ul li{line-height: 35px;}
  151.         .single-pricing button {
  152.             background:#ff9100;
  153.             border: 2px solid #ff9100;
  154.             border-radius: 5000px;
  155.             color: white;
  156.             display: inline-block;
  157.             font-size: 16px;
  158.             width: -webkit-fill-available;
  159.             overflow: hidden;
  160.             padding:10px 45px;
  161.             text-transform: capitalize;
  162.             transition: all 0.3s ease 0s;
  163.         }
  164.         .single-pricing button:hover, .single-pricing a:focus{
  165.             background:#ff9100;
  166.             color: #ffffff;
  167.             border: 2px solid #ff9100;
  168.         }
  169.         .single-pricing-white{background: #5b0909
  170.         }
  171.         .single-pricing-white ul li{color:#fff;}
  172.         .single-pricing-white h2{color:#fff;}
  173.         .single-pricing-white h1{color:#fff;}
  174.         .single-pricing-white h5{color:#fff;}
  175.         /*breadcrumb style*/
  176.         .hm-gradient {
  177.             background-image: linear-gradient(to top, #f3e7e9 0%, #e3eeff 99%, #e3eeff 100%);
  178.         }
  179.         .darken-grey-text {
  180.             color: #2E2E2E;
  181.         }
  182.         .bc-icons .breadcrumb-item + .breadcrumb-item::before {
  183.             content: none; }
  184.         .bc-icons .breadcrumb-item.active {
  185.             color: #eeeeee; }
  186.         .bc-icons-2 .breadcrumb-item + .breadcrumb-item::before {
  187.             content: none; }
  188.         .bc-icons-2 .breadcrumb-item.active {
  189.             color: #455a64; }
  190.         .light-font .breadcrumb-item + .breadcrumb-item::before {
  191.             color: #fff; }
  192.         .light-font .breadcrumb-item.active {
  193.             color: #cfd8dc; }
  194.         .dark-font .breadcrumb-item + .breadcrumb-item::before {
  195.             color: #000; }
  196.         .dark-font .breadcrumb-item.active {
  197.             color: #455a64; }
  198.         .breadcrumb{
  199.             background-color: transparent;
  200.         }
  201.         .container {
  202.             max-width: 1440px!important;
  203.         }
  204.         .main_nav_item a {
  205.             font-family: 'Open Sans', sans-serif;
  206.             font-size: 15px;
  207.             font-weight: 700;
  208.             color: #0093a9!important;
  209.             text-transform: uppercase;
  210.             padding-bottom: 10px;
  211.             padding-top: 10px;
  212.         }
  213.         .main_nav_item::after {
  214.             display: block;
  215.             position: absolute;
  216.             left: -1px;
  217.             bottom: -11px;
  218.             width: calc(100% + 2px);
  219.             height: 2px;
  220.             background: linear-gradient(to right, #b29b63, #0093a9)!important;
  221.             content: '';
  222.             opacity: 0;
  223.             -webkit-transition: all 200ms ease;
  224.             -moz-transition: all 200ms ease;
  225.             -ms-transition: all 200ms ease;
  226.             -o-transition: all 200ms ease;
  227.             transition: all 200ms ease;
  228.         }
  229.     </style>
  230. {% endblock %}
  231. {% block body %}
  232.     <!-- Home -->
  233.     <div class="home" style="height: 100px"></div>
  234.     <!-- Blog -->
  235.     <div class="blog">
  236.         <div class="container">
  237.             <div class="row">
  238.                 <!-- Grid column -->
  239.                 <div class="col-md-12">
  240.                     <div class="card p-3" style="border: none;">
  241.                         <div class="card-block" style="width: 500px;height: 50px;margin-left: -35px">
  242.                             <div class="bc-icons-2">
  243.                                 <ol class="breadcrumb blue-grey lighten-4">
  244.                                     <li class="breadcrumb-item"><a class="black-text" href="{{path('app_home')}}" style="font-weight: 600;font-size: 16px;color:#d7000e"><i class="fa fa-home" aria-hidden="true"></i></a><i class="fa fa-angle-double-right mx-2" aria-hidden="true"></i></li>
  245.                                     <li class="breadcrumb-item"><a class="black-text" href="{{path('app_sejour')}}" style="font-weight: 600;font-size: 16px;color:#d7000e">Voyages Organisés</a><i class="fa fa-angle-double-right mx-2" aria-hidden="true"></i></li>
  246.                                     <li class="breadcrumb-item active" style="font-weight: 600;font-size: 16px">{{ vo.titre }}</li>
  247.                                 </ol>
  248.                             </div>
  249.                         </div>
  250.                     </div>
  251.                 </div>
  252.                 <!-- Grid column -->
  253.             </div>
  254.             <div class="row">
  255.                 <div class="col-lg-8">
  256.                     <div class="blog_post_container">
  257.                         <div class="hotel_title_container d-flex flex-lg-row flex-column">
  258.                             <div class="hotel_title_content">
  259.                                 {% set total = vo.prix +  vo.marge %}
  260.                                 <h1 class="hotel_title" style="color: #0093a9"><strong><i class="fa fa-map-marker"></i> Voyage organisé à {{vo.titre}}</h1></strong>
  261.                                 <div class="hotel_location" style="color: #d7000e">à partir de {{total}} TND</div>
  262.                             </div>
  263.                         </div>
  264.                         <div class="blog_post">
  265.                             <div class="blog_post_image">
  266.                                 <div class="container mt-5">
  267.                                     <div class="carousel-container position-relative row">
  268.                                         <div id="myCarousel" class="carousel slide" data-ride="carousel">
  269.                                             <div class="carousel-inner">
  270.                                                 {% for img in vo.imageSejours %}
  271.                                                 <div class="carousel-item {{ loop.first ? 'active' }}">
  272.                                                     <img src="{{ asset('./rusticav/public/uploads/sejours/'~img.name) }}" class="d-block w-100 img-fluid" alt="..." style="height:448px;width: 750px!important;" data-type="image" data-toggle="lightbox" data-gallery="example-gallery">
  273.                                                 </div>
  274.                                                 {% endfor %}
  275.                                             </div>
  276.                                         </div>
  277.                                         <!-- Carousel Navigation -->
  278.                                         <div id="carousel-thumbs" class="carousel slide" data-ride="carousel">
  279.                                             <div class="carousel-inner">
  280.                                                 <div class="carousel-item active">
  281.                                                     <div class="row mx-0" style="display:flex;justify-content: center;align-items: center;">
  282.                                                         {% for img in vo.imageSejours %}
  283.                                                             <div id="carousel-selector-{{ loop.index0 }}" class="thumb col-4 col-sm-2 px-1 py-2 selected" data-target="#myCarousel" data-slide-to="{{ loop.index0 }}">
  284.                                                                 <img src="{{ asset('./rusticav/public/uploads/sejours/'~img.name) }}" style="width: 100px; height: 65px" class="img-fluid" alt="...">
  285.                                                             </div>
  286.                                                         {% endfor %}
  287.                                                     </div>
  288.                                                 </div>
  289.                                             </div>
  290.                                             <a class="carousel-control-prev" href="#carousel-thumbs" role="button" data-slide="prev">
  291.                                                 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  292.                                                 <span class="sr-only">Previous</span>
  293.                                             </a>
  294.                                             <a class="carousel-control-next" href="#carousel-thumbs" role="button" data-slide="next">
  295.                                                 <span class="carousel-control-next-icon" aria-hidden="true"></span>
  296.                                                 <span class="sr-only">Next</span>
  297.                                             </a>
  298.                                         </div>
  299.                                     </div> <!-- /row -->
  300.                                 </div> <!-- /container -->
  301.                             </div>
  302.                             <div class="blog_post_meta">
  303.                                 <ul>
  304.                                     <li class="blog_post_meta_item"><a href="" style="color: black"><i class="fa fa-map-marker"></i> {{ vo.titre }}</a></li>
  305.                                     <li class="blog_post_meta_item"><a href="" style="color: black"><i class="fa fa-clock-o"></i> Durée : {{vo.dureesej}} Jours /{{vo.dureesej-1 }} Nuits</a></li>
  306.                                 </ul>
  307.                             </div>
  308.                             {# <div class="offers_item" style="width:100%;margin-top:20px;"> #}
  309.                             <div class="blog_post_meta" style="margin-left: 22px;margin-right: 22px;">
  310.                                 <ul>
  311.                                     {{vo.description|raw}}
  312.                                 </ul>
  313.                             </div>
  314.                             {# </div> #}
  315.                             <div class="container">
  316.                                         <div class="packs-container">
  317.                                             <br><br>
  318.                                             {% for pack, packData in dataByPack %}
  319.                                                         {% set isFirstPack = loop.first %}
  320.                                                         <input type="radio" name="packSelector" id="{{ pack }}" value="{{ pack }}" {% if isFirstPack %}checked{% endif %}>
  321.                                                         <label for="{{ pack }}">{{ pack }}</label>
  322.                                                         <div class="date-ranges">
  323.                                                             {% for dateRange in packData.dateRanges %}
  324.                                                                 <label class="date-label">
  325.                                                                     <input
  326.                                                                             type="radio"
  327.                                                                             name="dateRanges"
  328.                                                                             value="{{ dateRange.dated }}-{{ dateRange.datef }}"
  329.                                                                             data-tarifbb="{{ dateRange.tarifbb }}"
  330.                                                                             data-tarifenf252="{{ dateRange.tarifenf252 }}"
  331.                                                                             data-tarifenf6112="{{ dateRange.tarifenf6112 }}"
  332.                                                                             data-tarifenf25="{{ dateRange.tarifenf25 }}"
  333.                                                                             data-tarifenf611="{{ dateRange.tarifenf611 }}"
  334.                                                                             data-demandebb="{{ dateRange.demandebb }}"
  335.                                                                             data-demande252="{{ dateRange.demande252 }}"
  336.                                                                             data-demande6112="{{ dateRange.demande6112}}"
  337.                                                                             data-demande25="{{ dateRange.demande25 }}"
  338.                                                                             data-demande611="{{ dateRange.demande611}}"
  339.                                                                             data-roomdata="{{ dateRange.roomData | json_encode }}"
  340.                                                                             {% if isFirstPack and loop.index == 1 %}checked{% endif %}
  341.                                                                     >
  342.                                                                     {{ dateRange.dated }} - {{ dateRange.datef }}
  343.                                                                 </label>
  344.                                                                 <br>
  345.                                                             {% endfor %}
  346.                                                         </div>
  347.                                             {% endfor %}
  348.                                         </div>
  349.                                         <div id="selectedData" class="selected-data">
  350.                                             <section id="pricing" class="pricing-content section-padding">
  351.                                                 <div class="container">
  352.                                                     <div class="row text-center">
  353.                                                         <div class="col-lg-4 col-sm-4 col-xs-12 wow fadeInUp" data-wow-duration="1s" data-wow-delay="0.2s" data-wow-offset="0">
  354.                                                             <div class="single-pricing">
  355.                                                                 <div class="price-head">
  356.                                                                     <h2 id="selectedPackTitle" style="color: #0093a9"></h2>
  357.                                                                     <span></span>
  358.                                                                     <span></span>
  359.                                                                     <span></span>
  360.                                                                     <span></span>
  361.                                                                     <span></span>
  362.                                                                     <span></span>
  363.                                                                 </div>
  364.                                                                 <ul>
  365.                                                             <li id="chambreInfo"></li>
  366.                                                             
  367.                                                             <li style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify">
  368.                                                                 <li id="tarifBebeContainer" style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify; display: none;">
  369.                                                                     Tarif bébé <strong id="tarifbb" style="float: right;margin-right: 25px;"></strong>
  370.                                                                 </li>
  371.                                                                 <li id="tarifenf252Container" style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify; display: none;">
  372.                                                                     Enfant entre 2.00 et 5.99 dans la chambre des parents <strong id="tarifenf252" style="float: right;margin-right: 25px;"></strong>
  373.                                                                 </li>
  374.                                                                 <li id="tarifenf6112Container" style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify; display: none;">
  375.                                                                     Enfant entre 6.00 et 11.99 dans la chambre des parents <strong id="tarifenf6112" style="float: right;margin-right: 25px;"></strong>
  376.                                                                 </li>
  377.                                                                 <li id="tarifenf25Container" style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify; display: none;">
  378.                                                                     Enfant entre 2.00 et 5.99 en chambre séparée <strong id="tarifenf25" style="float: right;margin-right: 25px;"></strong>
  379.                                                                 </li>
  380.                                                                 <li id="tarifenf611Container" style="font-size: 17px;font-weight: 600;color: #635959;text-align: justify; display: none;">
  381.                                                                     Enfant entre 6.00 et 11.99 en chambre séparée <strong id="tarifenf611" style="float: right;margin-right: 25px;"></strong>
  382.                                                                 </li>
  383.                                                             </li>
  384.                                                         </ul>
  385.                                                                 {# <button id="redirectButton" onclick="redirectToNewPage({{ vo.id }})">Réserver</button> #}
  386.                                                                 <form id="reservationForm" method="post" action="{{ path('nouvelle_page',{'sejourId':vo.id}) }}" >
  387.                                                                     <input type="hidden" id="tarifbbInput" name="tarifbb">
  388.                                                                     <input type="hidden" id="tarifenf252Input" name="tarifenf252">
  389.                                                                     <input type="hidden" id="tarifenf6112Input" name="tarifenf6112">
  390.                                                                     <input type="hidden" id="tarifenf25Input" name="tarifenf25">
  391.                                                                     <input type="hidden" id="tarifenf611Input" name="tarifenf611">
  392.                                                                     <input type="hidden" id="roomDataInput" name="roomData">
  393.                                                                     <input type="hidden" id="selectedPackInput" name="selectedPack">
  394.                                                                     <input type="hidden" id="selectedDateInput" name="selectedDate">
  395.                                                                     <!-- Ajoutez d'autres champs au besoin -->
  396.                                                                     <button type="submit" id="redirectButton" onclick="redirectToNewPage({{ vo.id }})">Réserver</button>
  397.                                                                 </form>
  398.                                                             </div>
  399.                                                         </div><!--- END COL -->
  400.                                                     </div>
  401.                                                 </div>
  402.                                             </section>
  403.                                         </div>
  404.                             </div>
  405.                             <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  406.                             <script>
  407.                                 $(document).ready(function () {
  408.                                     // Sélectionnez le premier pack et sa première date par défaut
  409.                                     var firstPackRadio = $('input[name="packSelector"]:first-child');
  410.                                     var firstDateRadio = firstPackRadio.closest('form').find('input[name="dateRanges"]:first-child');
  411.                                     firstPackRadio.prop('checked', true);
  412.                                     firstDateRadio.prop('checked', true);
  413.                                     // Ajoutez un événement "change" manuel pour déclencher l'affichage des données sélectionnées
  414.                                     firstDateRadio.trigger('change');
  415.                                     // Affichez les informations sélectionnées du premier date de la première pack lors du chargement
  416.                                     displaySelectedData();
  417.                                 });
  418.                                 var packRadios = $('input[name="packSelector"]');
  419.                                 var dateRadios = $('input[name="dateRanges"]');
  420.                                 var selectedDataDiv = $('#selectedData');
  421.                                 // Fonction pour afficher les informations sélectionnées
  422.                                 function displaySelectedData() {
  423.                                     var selectedPackRadio = $('input[name="packSelector"]:checked');
  424.                                     if (selectedPackRadio.length > 0) {
  425.                                         // Récupérez le nom du pack sélectionné
  426.                                         var selectedPack = selectedPackRadio.val();
  427.                                         // Affichez le nom du pack dans le titre
  428.                                         $('#selectedPackTitle').text(selectedPack);
  429.                                         var selectedRadioButton = $('input[name="dateRanges"]:checked');
  430.                                         if (selectedRadioButton.length > 0) {
  431.                                             var tarifbb = selectedRadioButton.data('tarifbb');
  432.                                             var tarifenf252 = selectedRadioButton.data('tarifenf252');
  433.                                             var tarifenf6112 = selectedRadioButton.data('tarifenf6112');
  434.                                             var tarifenf25 = selectedRadioButton.data('tarifenf25');
  435.                                             var tarifenf611 = selectedRadioButton.data('tarifenf611');
  436.                                             var roomData = selectedRadioButton.data('roomdata');
  437.                                             var dated = selectedRadioButton.data('dated');
  438.                                             var datef = selectedRadioButton.data('datef');
  439.                                             var demandebb = selectedRadioButton.data('demandebb');
  440.                                             var demande252 = selectedRadioButton.data('demande252');
  441.                                             var demande6112 = selectedRadioButton.data('demande6112');
  442.                                             var demande25 = selectedRadioButton.data('demande25');
  443.                                             var demande611 = selectedRadioButton.data('demande611');
  444.                                             tarifbb = tarifbb === "" || parseFloat(tarifbb) === 0 ? "Sur demande" : parseFloat(tarifbb).toFixed(3) + ' TND';
  445.                                             // Affichez le tarif BB dans le span
  446.                                             $('#tarifbb').text(tarifbb);
  447.                                             tarifenf252 = tarifenf252 === "" || parseFloat(tarifenf252) === 0 ? "Sur demande" : parseFloat(tarifenf252).toFixed(3) + ' TND';
  448.                                             // Affichez le tarif 252 dans le span
  449.                                             $('#tarifenf252').text(tarifenf252);
  450.                                             tarifenf6112 = tarifenf6112 === "" || parseFloat(tarifenf6112) === 0 ? "Sur demande" : parseFloat(tarifenf6112).toFixed(3) + ' TND';
  451.                                             // Affichez le tarif 6112 dans le span
  452.                                             $('#tarifenf6112').text(tarifenf6112);
  453.                                             tarifenf25 = tarifenf25 === "" || parseFloat(tarifenf25) === 0 ? "Sur demande" : parseFloat(tarifenf25).toFixed(3) + ' TND';
  454.                                             // Affichez le tarif 25 dans le span
  455.                                             $('#tarifenf25').text(tarifenf25);
  456.                                             tarifenf611 = tarifenf611 === "" || parseFloat(tarifenf611) === 0 ? "Sur demande" : parseFloat(tarifenf611).toFixed(3) + ' TND';
  457.                                             // Affichez le tarif 611 dans le span
  458.                                             $('#tarifenf611').text(tarifenf611);
  459.                                             // Affichez les informations sur les chambres dans la div
  460.                                             var chambreInfoDiv = $('#chambreInfo');
  461.                                             chambreInfoDiv.empty().append('<p> </p>');
  462.                                             $.each(roomData, function (chambreName, room) {
  463.                                                 chambreInfoDiv.append('<p style="font-size: 15px;font-weight: 600;color: #635959;text-align: justify">Adulte en ' + chambreName +'<strong style="float: right;margin-right: 25px;font-size:15px">'+ '<strong> ' + room.price.toFixed(3) + ' TND</strong>'+'</span>'+ '</p>');
  464.                                             });
  465.                                             // Affichez ou masquez la ligne "Tarif bébé" en fonction de la valeur de demandebb
  466.                                             if (demandebb) {
  467.                                                 $('#tarifBebeContainer').show();
  468.                                             } else {
  469.                                                 $('#tarifBebeContainer').hide();
  470.                                             }
  471.                                             // Affichez ou masquez la ligne "Tarif 252" en fonction de la valeur de demandebb
  472.                                             if (demande252) {
  473.                                                 $('#tarifenf252Container').show();
  474.                                             } else {
  475.                                                 $('#tarifenf252Container').hide();
  476.                                             }
  477.                                             // Affichez ou masquez la ligne "Tarif 6112" en fonction de la valeur de demandebb
  478.                                             if (demande6112) {
  479.                                                 $('#tarifenf6112Container').show();
  480.                                             } else {
  481.                                                 $('#tarifenf6112Container').hide();
  482.                                             }
  483.                                             // Affichez ou masquez la ligne "Tarif 25" en fonction de la valeur de demandebb
  484.                                             if (demande25) {
  485.                                                 $('#tarifenf25Container').show();
  486.                                             } else {
  487.                                                 $('#tarifenf25Container').hide();
  488.                                             }
  489.                                             // Affichez ou masquez la ligne "Tarif 611" en fonction de la valeur de demandebb
  490.                                             if (demande611) {
  491.                                                 $('#tarifenf611Container').show();
  492.                                             } else {
  493.                                                 $('#tarifenf611Container').hide();
  494.                                             }
  495.                                             // Affichez les dates dans la div
  496.                                             $('#dated').text(dated);
  497.                                             $('#datef').text(datef);
  498.                                         }
  499.                                     }
  500.                                 }
  501.                                 
  502.                                 // Ajoutez un écouteur d'événements pour les changements d'état des boutons radio du sélecteur de pack
  503.                                 packRadios.on('change', function () {
  504.                                     deselectOtherDates();
  505.                                     displaySelectedData();
  506.                                 });
  507.                                 // Ajoutez un écouteur d'événements pour les changements d'état des boutons radio
  508.                                 dateRadios.on('change', displaySelectedData);
  509.                                 // Ajoutez un écouteur d'événements pour le bouton de redirection
  510.                                 $('#redirectButton').on('click', function () {
  511.                                     redirectToNewPage({{ vo.id }});
  512.                                 });
  513.                                 // Fonction pour désélectionner les autres dates de toutes les classes
  514.                                 function deselectOtherDates() {
  515.                                     dateRadios.prop('checked', false);
  516.                                 }
  517.                                 // Fonction pour rediriger vers la nouvelle page
  518.                                 function redirectToNewPage(sejourId) {
  519.                                     var selectedRadioButton = $('input[name="dateRanges"]:checked');
  520.                                     if (selectedRadioButton.length > 0) {
  521.                                         var tarifbb = selectedRadioButton.data('tarifbb');
  522.                                         var tarifenf252 = selectedRadioButton.data('tarifenf252');
  523.                                         var tarifenf6112 = selectedRadioButton.data('tarifenf6112');
  524.                                         var tarifenf25 = selectedRadioButton.data('tarifenf25');
  525.                                         var tarifenf611 = selectedRadioButton.data('tarifenf611');
  526.                                         var roomData = selectedRadioButton.data('roomdata');
  527.                                         var selectedPack = $('input[name="packSelector"]:checked').val();
  528.                                         var selectedDate = selectedRadioButton.val();
  529.                                         // Remplissez les champs du formulaire avec les données sélectionnées
  530.                                         $('#tarifbbInput').val(tarifbb);
  531.                                         $('#tarifenf252Input').val(tarifenf252);
  532.                                         $('#tarifenf6112Input').val(tarifenf6112);
  533.                                         $('#tarifenf25Input').val(tarifenf25);
  534.                                         $('#tarifenf611Input').val(tarifenf611);
  535.                                         $('#roomDataInput').val(JSON.stringify(roomData));
  536.                                         $('#selectedPackInput').val(selectedPack);
  537.                                         $('#selectedDateInput').val(selectedDate);
  538.                                         // Soumettez le formulaire
  539.                                         $('#reservationForm').submit();
  540.                                     }
  541.                                 }
  542.                                 {# function redirectToNewPage(sejourId) {
  543.                                     // Récupérez les informations sélectionnées
  544.                                     var selectedRadioButton = $('input[name="dateRanges"]:checked');
  545.                                     if (selectedRadioButton.length > 0) {
  546.                                         var tarifbb = selectedRadioButton.data('tarifbb');
  547.                                         var roomData = selectedRadioButton.data('roomdata');
  548.                                         var selectedPack = $('input[name="packSelector"]:checked').val();
  549.                                         var selectedDate = selectedRadioButton.val();
  550.                                         // Créez un formulaire dynamique
  551.                                         var form = document.createElement('form');
  552.                                         form.setAttribute('method', 'post');
  553.                                         form.setAttribute('action', '/nouvelle-page/' + sejourId);
  554.                                         // Ajoutez des champs pour les données
  555.                                         addHiddenField(form, 'tarifbb', tarifbb);
  556.                                         addHiddenField(form, 'roomData', JSON.stringify(roomData));
  557.                                         addHiddenField(form, 'selectedPack', selectedPack);
  558.                                         addHiddenField(form, 'selectedDate', selectedDate);
  559.                                         // Ajoutez d'autres champs au besoin
  560.                                         // Ajoutez le formulaire à la page et soumettez-le
  561.                                         document.body.appendChild(form);
  562.                                         form.submit();
  563.                                     }
  564.                                 } #}
  565.                                 // Fonction pour ajouter un champ caché au formulaire
  566.                                 function addHiddenField(form, name, value) {
  567.                                     var input = document.createElement('input');
  568.                                     input.setAttribute('type', 'hidden');
  569.                                     input.setAttribute('name', name);
  570.                                     input.setAttribute('value', value);
  571.                                     form.appendChild(input);
  572.                                 }
  573.                             </script>
  574.                         </div>
  575.                     </div>
  576.                 </div>
  577.                 <!-- Blog Sidebar -->
  578.                 <div class="col-lg-4 sidebar_col">
  579.                     <!-- Sidebar Latest Posts -->
  580.                     <div class="sidebar_latest_posts">
  581.                         <div class="offers_item" style="width: 110%;">
  582.                             <div class="sidebar_title text-center" style="color: white;font-size: 21px;margin: 36px;background: #ff9100">Voyages à la une</div>
  583.                             <div class="latest_posts_container">
  584.                                 <ul>
  585.                                     {% for v in sejour %}
  586.                                         {% if v.id != vo.id and loop.index <= 5 %}
  587.                                             <li class="latest_post clearfix">
  588.                                                 <div class="latest_post_image">
  589.                                                     <a href="#">
  590.                                                         {% for img in v.imageSejours %}
  591.                                                             {% if loop.first %}
  592.                                                                 <img src="{{ asset('./rusticav/public/uploads/sejours/'~img.name) }}" alt="" style="width: 85px; height: 65px" />
  593.                                                             {% endif %}
  594.                                                         {% endfor %}
  595.                                                     </a>
  596.                                                 </div>
  597.                                                 <div class="latest_post_content">
  598.                                                     <div class="latest_post_title trans_200" style="color: black">
  599.                                                         <i class="fa fa-map-marker"></i>
  600.                                                         {{ v.titre }}
  601.                                                     </div>
  602.                                                     <div class="latest_post_title trans_200" style="color: black">
  603.                                                         <i class="fa fa-clock-o"></i>
  604.                                                         {{v.dureesej}} jours / {{v.dureesej-1}} Nuits
  605.                                                     </div>
  606.                                                     <div class="latest_post_title trans_200">
  607.                                                         <a href="{{ path('detailsejour', {'id': v.id}) }}" style="color: #d7000e;font-size: 16px;font-weight: 700">Voir détails  <i class="fa fa-angle-double-right" aria-hidden="true"></i>
  608.                                                         </a>
  609.                                                     </div>
  610.                                                 </div>
  611.                                             </li>
  612.                                         {% endif %}
  613.                                     {% endfor %}
  614.                                 </ul>
  615.                             </div>
  616.                         </div>
  617.                         <div class="offers_item" style="width:110%;">
  618.                         <div class="blog_post_text" style="margin-left:13px;">
  619.                             <p style="font-size: 18px">{{vo.serviceinclus|raw}}</p>
  620.                         </div></div>
  621.                         <div class="offers_item" style="width:110%;">
  622.                         <div class="blog_post_text"style="margin-left:13px;">
  623.                             <p style="font-size: 18px">{{vo.servicenoninclus|raw}}</p>
  624.                         </div>
  625.                         </div>
  626.                     </div>
  627.                 </div>
  628.             </div>
  629.         </div>
  630.     </div>
  631. {% endblock %}
  632. {% block javascripts %}
  633.     <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  634.     <script>
  635.         $('#myCarousel').carousel({
  636.             interval: false
  637.         });
  638.         $('#carousel-thumbs').carousel({
  639.             interval: false
  640.         });
  641.         $('[id^=carousel-selector-]').click(function() {
  642.             var id_selector = $(this).attr('id');
  643.             var id = parseInt( id_selector.substr(id_selector.lastIndexOf('-') + 1) );
  644.             $('#myCarousel').carousel(id);
  645.         });
  646.         // Only display 3 items in nav on mobile.
  647.         if ($(window).width() < 575) {
  648.             $('#carousel-thumbs .row div:nth-child(4)').each(function() {
  649.                 var rowBoundary = $(this);
  650.                 $('<div class="row mx-0">').insertAfter(rowBoundary.parent()).append(rowBoundary.nextAll().addBack());
  651.             });
  652.             $('#carousel-thumbs .carousel-item .row:nth-child(even)').each(function() {
  653.                 var boundary = $(this);
  654.                 $('<div class="carousel-item">').insertAfter(boundary.parent()).append(boundary.nextAll().addBack());
  655.             });
  656.         }
  657.         // Hide slide arrows if too few items.
  658.         if ($('#carousel-thumbs .carousel-item').length < 2) {
  659.             $('#carousel-thumbs [class^=carousel-control-]').remove();
  660.             $('.machine-carousel-container #carousel-thumbs').css('padding','0 5px');
  661.         }
  662.         // when the carousel slides, auto update
  663.         $('#myCarousel').on('slide.bs.carousel', function(e) {
  664.             var id = parseInt( $(e.relatedTarget).attr('data-slide-number') );
  665.             $('[id^=carousel-selector-]').removeClass('selected');
  666.             $('[id=carousel-selector-'+id+']').addClass('selected');
  667.         });
  668.         // when user swipes, go next or previous
  669.         $('#myCarousel').swipe({
  670.             fallbackToMouseEvents: true,
  671.             swipeLeft: function(e) {
  672.                 $('#myCarousel').carousel('next');
  673.             },
  674.             swipeRight: function(e) {
  675.                 $('#myCarousel').carousel('prev');
  676.             },
  677.             allowPageScroll: 'vertical',
  678.             preventDefaultEvents: false,
  679.             threshold: 75
  680.         });
  681.         $('#myCarousel .carousel-item img').on('click', function(e) {
  682.             var src = $(e.target).attr('data-remote');
  683.             if (src) $(this).ekkoLightbox();
  684.         });
  685.     </script>
  686. {% endblock %}