1$(function() { 2 $('.ajax-module').each(function() { 3 var element = $(this); 4 run_loading(element); 5 }); 6 7 // Au clic sur des offres du module flightoffer 8 $(document).on('click', '.flight-offer-module .flight-offer', function(e) { 9 e.preventDefault(); 10 show_loading(); 11 12 if (!$('div#engine-flight-popin-reveal').length) { 13 $('body').append('<div id="engine-flight-popin-reveal" class="reveal-modal" data-reveal aria-hidden="true" role="dialog"></div>'); 14 } 15 16 $('#engine-flight-popin-reveal').foundation('reveal', 'open', { 17 url: '/rest/module/product/flightoffer/popin.html', 18 data: { 19 url: $(this).attr('data-url') 20 } 21 }); 22 }); 23 24}); 25 26function iframeload() { 27 show_loading(false); 28} 29 30function run_loading(element, page_block_id, block_position_id, module_id, configuration) 31{ 32 if (arguments.length == 1 ) { 33 var page_block_id = block_position_id = module_id = configuration = ''; 34 } 35 36 var params = $.param({ 37 'page_block_id': page_block_id, 38 'block_position_id': block_position_id, 39 'module_id': module_id, 40 })+'&'+$.param(configuration); 41 42 $.ajax({ 43 url: element.data('url'), 44 data: params, 45 dataType: 'json', 46 type: 'get', 47 xhrFields: { 48 withCredentials: true 49 }, 50 success: function(data) { 51 var callback = '_callback_'+element.data('module'); 52 return window[callback](element, data); 53 } 54 }); 55} 56 57function _callback_content_agencies(element, data) 58{ 59 if (!data.error) { 60 element.find('select[name="agency_id"]').empty(); 61 for (var i in data.agencies) { 62 var o = data.agencies[i]; 63 var index = parseInt(i); 64 65 var option = '<option value="'+o.code+'">'+o.name+'</option>'; 66 element.find('select[name="agency_id"]').append(option); 67 } 68 } else { 69 element.find('select[name="agency_id"]').empty().append('<option value>'+data.message+'</option>'); 70 } 71 72 element.find('form').submit(function() { 73 var selected = $(this).find('select[name="agency_id"] option:selected'); 74 if (!selected.length || !selected.val()) { 75 return false; 76 } 77 selected.text(selected.text().replace('"','')); 78 $(this).append('<input type="hidden" name="agency_name" value="'+selected.text()+'" /> '); 79 return true; 80 }); 81 82 return false; 83} 84 85function _callback_content_slider(element, data) 86{ 87 if (!data.error) { 88 var index = 0; 89 for (var i in data.sliders) { 90 var o = data.sliders[i]; 91 92 // On ajoute une nouvelle slide à partir des templates 93 if (index != 0) { 94 var slide = $('#template-slide').html(); 95 element.find('.offer-slider').slick('slickAdd', slide); 96 var mainSlider = $('#template-main-slider').html(); 97 element.find('.main-slider').slick('slickAdd', mainSlider); 98 } 99 100 //Lien 101 if (o.url && typeof o.url != 'undefined') { 102 element.find('.slider-consult').eq(index).prop('href', o.url); 103 } else { 104 var anchor = element.find('.slider-consult').eq(index); 105 anchor.replaceWith($('<div class="slider-consult"></div>')); 106 } 107 108 // Durée 109 if (o.duration_day && typeof o.duration_day != 'undefined' && o.duration_night && typeof o.duration_night != 'undefined') { 110 element.find('.slider-duration:eq('+index+')').removeClass('hide'); 111 element.find('.slider-duration:eq('+index+')').find('.day').html(o.duration_day); 112 element.find('.slider-duration:eq('+index+')').find('.night').html(o.duration_night); 113 } 114 115 //Prix 116 if (o.price && typeof o.price !== 'undefined' && parseFloat(o.price) > 0) { 117 element.find('.slider-price:eq('+index+')').html(o.price); 118 //Prix barré 119 if (o.old_price && typeof o.old_price !== "undefined" && parseFloat(o.old_price) > parseFloat(o.price)) { 120 element.find('.slider-old-price:eq('+ index+ ')').parent().removeClass('hide').end().html(o.old_price+' â¬'); 121 } 122 123 } else { 124 element.find('.price-container:eq('+index+')').hide(); 125 } 126 127 element.find('.slider-title:eq('+index+')').html(o.title); 128 element.find('div[class*=slider-picture]:not(.slick-cloned):eq('+index+')').find('img').attr('src', o.picture); 129 o.old_price && (parseInt(o.old_price) > parseInt(o.price)) && element.find('.slider-price-old:eq('+index+')').html(o.old_price).closest('.slider-price-old-wrap').removeClass('hide'); 130 element.find('.slider-description:eq('+index+')').html(o.description ? o.description.substring(0, 150) : ''); 131 132 index++; 133 } 134 135 element.find('.main-slider').slick('refresh'); 136 element.find('.offer-slider').slick('refresh'); 137 } 138 139 resizePicturesToContainer('slider-img'); 140 resizeLoadedPicturesToContainer('slider-img'); 141 //Notify un possible changement de taille du slider pour que les overlay s'adapte (BO uniquement) 142 $(document).trigger('heightChange'); 143 144 return false; 145} 146 147function _callback_product_offer(element, data) 148{ 149 if (!data.error) { 150 // On affiche le retour si on a au moins 1 offre 151 if (Object.keys(data.offers).length > 0) { 152 var index = 0; 153 var flag = false; 154 for (var i in data.offers) { 155 var o = data.offers[i]; 156 var offer_element = element.find('.offer-consult').eq(index); 157 var offer_loading = offer_element.hasClass('offer-loading') ? offer_element : offer_element.parents('.offer-loading'); 158 159 //Lien vers l'offre 160 if (o.url && typeof o.url != 'undefined') { 161 offer_element.prop('href', o.url); 162 } else { 163 if (offer_element.find('.link-container').length) { 164 offer_element.find('.link-container').remove(); 165 } else if (offer_element.find('.go-offer-container').length) { 166 offer_element.find('.go-offer-container').remove(); 167 } 168 } 169 170 //Prix de vente 171 if (o.price && typeof o.price != 'undefined' && parseFloat(o.price) > 0) { 172 offer_element.find('.offer-price').html(o.price); 173 o.old_price && parseInt(o.old_price) > parseInt(o.price) && offer_element.find('.offer-price-old').html(o.old_price).closest('.offer-price-old-wrap').removeClass('hide'); 174 } else { 175 offer_element.find('.price-content').hide(); 176 offer_element.find('.price-container').hide(); 177 } 178 179 offer_element.find('.offer-title').html(o.title); 180 if (!offer_element.find('.offer-title').hasClass('not-truncated')) { 181 offer_element.find('.offer-title').dotdotdot({ellipsis: '...'}); 182 } 183 184 if (o.picture && offer_element.find('.offer-picture').length) { 185 offer_element.find('.offer-picture').append('<img src="'+o.picture+'" class="resize" />'); 186 } else if (o.picture && offer_element.parent().find('.offer-picture').length && flag == false) { 187 offer_element.parent().find('.offer-picture').append('<img src="'+o.picture+'" class="resize" />'); 188 flag = true; 189 } 190 191 offer_element.find('.offer-destination').html(o.destination); 192 193 if (o.destination.length == 0) { 194 offer_element.find('.offer-location').addClass('hide'); 195 } 196 197 if (o.destination.length && $('.dash').length) { 198 offer_element.find('.dash').removeClass('hide'); 199 } 200 201 if (o.region && typeof o.region != 'undefined') { 202 offer_element.find('.offer-region').html(' - <strong>'+o.region+'</strong>'); 203 } else { 204 offer_element.find('.offer-region').addClass('hide'); 205 } 206 207 if (o.duration_day && typeof o.duration_day != 'undefined' && o.duration_night && typeof o.duration_night != 'undefined') { 208 offer_element.find('.offer-duration').removeClass('hide'); 209 offer_element.find('.offer-duration .day').html(o.duration_day); 210 offer_element.find('.offer-duration .night').html(o.duration_night); 211 } 212 213 o.description = o.description.replace(/[<]br[^>]*[>
213]/gi, ""); 214 offer_element.find('.offer-description').html(strip_tags(o.description)); 215 216 offer_element.find('.offer-description').dotdotdot({ellipsis: '...'}); 217 var description = offer_element.find('.offer-description').text().trim(); 218 offer_element.find('.offer-description').html(description); 219 220 // On supprime la class "offer_loading" si l'offre a été trouvée 221 offer_loading.removeClass('offer-loading'); 222 index ++; 223 } 224 225 // Si on a plus d'offres paramétrées que de trouvées 226 if (element.find('.offer-loading').length) { 227 element.find('.offer-loading').remove(); 228 } 229 // Si aucune offre n'a été trouvée, on affiche la configuration "contrepropos" 230 } else { 231 $.ajax({ 232 url: '/rest/module/product/offer/counteroffer_view.html', 233 type: 'GET', 234 dataType: 'html', 235 data: data.counteroffer 236 }).done(function(data) { 237 element.eq(0).append(data); 238 element.find('.offer-loading').remove(); 239 // Template vertical - Supprimer l'image au dessus des offres 240 if (element.find('.picture-container.offer-picture').length) { 241 element.find('.picture-container.offer-picture').remove(); 242 } 243 }); 244 } 245 246 //Notify un possible changement de taille du module offre pour que les overlay s'adapte (BO uniquement) 247 $(document).trigger('heightChange'); 248 center_offer(); 249 } 250 251 setTimeout(function() { 252 resizePicturesToContainer('resize'); 253 resizeLoadedPicturesToContainer('resize'); 254 checkImages(); 255 $(document).foundation({ 256 equalizer : { 257 equalize_on_stack: true 258 } 259 }); 260 //Notify un possible changement de taille du module offre pour que les overlay s'adapte (BO uniquement) 261 $(document).trigger('heightChange'); 262 }, 200); 263 264 return false; 265} 266 267$(window).resize(function() { 268 $('.offer-title').trigger('update.dot'); 269 $('.offer-description').trigger('update.dot'); 270 $(document).foundation('equalizer', 'reflow'); 271}); 272 273 274function strip_tags(html) { 275 if (arguments.length < 3) { 276 html = html.replace(/<\/?(?!\!)[^>]*>/gi, ''); 277 } else { 278 var allowed = arguments[1]; 279 var specified = eval("["+arguments[2]+"]" ); 280 if (allowed) { 281 var regex = '</?(?!(' + specified.join('|') + '))\b[^>]*>'; 282 html = html.replace(new RegExp(regex, 'gi'), ''); 283 } else { 284 var regex = '</?(' + specified.join('|') + ')\b[^>]*>'; 285 html = html.replace(new RegExp(regex, 'gi'), ''); 286 } 287 } 288 return html; 289} 290 291function center_offer() { 292 $('.offers-module').parents('.page-block').find('> .row').addClass('center-offer'); 293} 294 295// Ajoute une class au conteneur d'offre 296$(document).ready(function() { 297 center_offer(); 298}); 299 300// Permet à l'iframe moteur resatravel et resavoyage d'adapter sa hauteur. 301window.addEventListener( "message", function (event) { 302 if (event.data) { 303 try { 304 let data = JSON.parse(event.data); 305 if (data.source == "engine" && data.event == "resize") { 306 if($("#resavoyage_engine").length > 0) { 307 document.getElementById("resavoyage_engine").style.height = data.newHeight + "px"; 308 } 309 if($("#resatravel_engine").length > 0) { 310 document.getElementById("resatravel_engine").style.height = data.newHeight + "px"; 311 } 312 } 313 } catch (SyntaxError) {} 314 } 315 }, 316 false 317);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.