1window.jQuery(document).ready(function() { 2 var $ = window.jQuery; 3 4 function adjustTravelDetailModalHeight(iframe) { 5 try { 6 iframe.style.height = ( 7 iframe.contentWindow.document.body.scrollHeight 8 || iframe.contentWindow.document.documentElement.scrollHeight 9 ) + 'px'; 10 11 const detailWindow = iframe.closest('.kupo-travel-detail-window'); 12 13 if (detailWindow) { 14 detailWindow.style.height = 'auto'; 15 } 16 } catch (e) {} 17 } 18 19 function addContentToTravelDetailsFrame(content, detailDialog) { 20 const iframe = detailDialog.find('iframe.kupo-detail-dialog-main-content'); 21 22 if (iframe.length > 0 && iframe[0].contentWindow) { 23 const detailsFrame = iframe[0].contentWindow.document; 24 25 detailsFrame.open(); 26 detailsFrame.write(content); 27 detailsFrame.close(); 28 29 iframe[0].onload = function() { 30 adjustTravelDetailModalHeight(iframe[0]); 31 }; 32 } 33 } 34 35 function toggleSelect() { 36 $('.kupo-travels .kupo-select').find('svg').toggle(); 37 $('.kupo-travels .kupo-select > ul').toggle('slow'); 38 } 39 40 $('.kupo-travels .kupo-select > header').on('click', function() { 41 toggleSelect(); 42 }); 43 44 $(window).on('click', function(e) { 45 var kupoSelect = $('.kupo-travels .kupo-select'); 46 var kupoSelectList = $('.kupo-travels .kupo-select > ul'); 47 48 if ( 49 kupoSelect[0] 50 && kupoSelectList[0] 51 && $(kupoSelectList).is(':visible') 52 && !kupoSelect[0].isSameNode(e.target) 53 && !kupoSelect[0].contains(e.target) 54 ) { 55 toggleSelect(); 56 } 57 }); 58 59 $('.kupo-travel-action-question-button').on('click', function(e) { 60 e.preventDefault(); 61 e.stopPropagation(); 62 63 const travelId = $(this).data('value'); 64 65 $('#question_travel_id').val(travelId); 66 $('.cupo-modal-ask_question .cupo-modal-ask_question_content').show(); 67 $('.cupo-modal-ask_question .cupo-modal-loader').hide(); 68 $('.cupo-modal-ask_question .cupo-modal-success-message').hide(); 69 $('.cupo-modal-ask_question .cupo-modal-error-message').hide(); 70 $('.cupo-modal-ask_question .cupo-modal-input-error-message').remove(); 71 $('.cupo-modal-ask_question .cupo-popup-heading').html('Frage stellen'); 72 $('.cupo-modal-ask_question .cupo-modal-body').addClass('with_travel'); 73 $('.cupo-modal-ask_question .cupo-ask_question_form').addClass('with_travel'); 74 $('.cupo-modal-ask_question').addClass('active'); 75 76 const mappings = [ 77 { travelSelector: `#kupo-travel-header-${travelId}`, modalSelector: `#kupo-question-travel-header` }, 78 { travelSelector: `#kupo-travel-dates-${travelId}`, modalSelector: `#kupo-question-travel-dates` }, 79 { travelSelector: `#kupo-travel-location-${travelId}`, modalSelector: `#kupo-question-travel-location` }, 80 { travelSelector: `#kupo-travel-participants-${travelId}`, modalSelector: `#kupo-question-travel-participants` }, 81 { travelSelector: `#kupo-travel-price-${travelId}`, modalSelector: `#kupo-question-travel-price` } 82 ]; 83
84 mappings.forEach(mapping => { 85 const content = $(mapping.travelSelector).text().replace(/\s+/g, ' ').trim(); 86 $(mapping.modalSelector).text(content); 87 }); 88 89 $('.kupo-question-travel').slideDown(); 90 }); 91 92 $('.kupo-travels .kupo-select > ul > li').on('click', function() { 93 $(this).parent().parent().find('header > span').html($(this).html()); 94 95 toggleSelect(); 96 97 switch ($(this).attr('class')) { 98 case 'kupo-travel-filter-future': 99 var $container = $('.kupo-travels-container'); 100 var $travels = $container.find('.kupo-travel'); 101 102 $travels.hide(); 103 $travels.filter('.kupo-travel-future').show(); 104 105 var $futureTravels = $travels.filter('.kupo-travel-future').get(); 106 107 $futureTravels.sort(function(a, b) { 108 var dateA = new Date($(a).data('start-date')); 109 var dateB = new Date($(b).data('start-date')); 110 return dateA - dateB; 111 }); 112 113 $futureTravels.forEach(function(item) { 114 $container.append(item); 115 }); 116 break; 117 118 case 'kupo-travel-filter-past': 119 var $container = $('.kupo-travels-container'); 120 var $travels = $container.find('.kupo-travel'); 121 122 $travels.hide(); 123 $travels.filter('.kupo-travel-past').show(); 124 125 var $pastTravels = $travels.filter('.kupo-travel-past').get(); 126 $pastTravels.sort(function(a, b) { 127 var dateA = new Date($(a).data('start-date')); 128 var dateB = new Date($(b).data('start-date')); 129 return dateB - dateA; 130 }); 131 132 $pastTravels.forEach(function(item) { 133 $container.append(item); 134 }); 135 break; 136 137 case 'kupo-travel-filter-all': 138 default: 139 var $container = $('.kupo-travels-container'); 140 var $travels = $container.find('.kupo-travel'); 141 142 $travels.show(); 143 144 var $futureTravels = $travels.filter('.kupo-travel-future').get(); 145 var $pastTravels = $travels.filter('.kupo-travel-past').get(); 146 147 $futureTravels.sort(function(a, b) { 148 var dateA = new Date($(a).data('start-date')); 149 var dateB = new Date($(b).data('start-date')); 150 return dateB - dateA; 151 }); 152 153 $pastTravels.sort(function(a, b) { 154 var dateA = new Date($(a).data('start-date')); 155 var dateB = new Date($(b).data('start-date')); 156 return dateB - dateA; 157 }); 158 159 $futureTravels.forEach(function(item) { 160 $container.append(item); 161 }); 162 163 $pastTravels.forEach(function(item) { 164 $container.append(item); 165 }); 166 break; 167 } 168 }); 169 170 $('.kupo-travels .kupo-search').on('submit', function(e) { 171 e.preventDefault(); 172 e.stopPropagation(); 173 174 $('.kupo-no_search_results').hide(); 175 $('.kupo-travel').each(function() { 176 $(this).show(); 177 }); 178 179 var found = false; 180 var searchText = $('.kupo-travels .kupo-search input').val(); 181 182 if (typeof searchText !== 'string' || searchText.trim().length === 0) { 183 return; 184 } 185 186 searchText = searchText.trim().toUpperCase(); 187 188 $('.kupo-travel').each(function() { 189 if ($(this).find('.kupo-travel-details').html().toUpperCase().indexOf(searchText) === -1) { 190 found = true; 191 $(this).hide(); 192 } 193 }); 194 195 if (found) { 196 $('.kupo-no_search_results').hide(); 197 } else { 198 $('.kupo-no_search_results').show(); 199 } 200 }); 201 202 $('.kupo-travel-action-large').on('click', function(e) { 203 e.preventDefault(); 204 e.stopPropagation(); 205 206 const extendedDetailView = $(this).data('extended-detail-view'); 207 const containerId = $(this).data('travel-id'); 208 const bookingsRaw = $(this).data('bookings'); 209 let bookings = []; 210 211 const detailDialog = $('section.kupo-travel-detail-dialog-' + containerId); 212 213 if (typeof bookingsRaw === 'number') { 214 bookings = [bookingsRaw]; 215 } else if (typeof bookingsRaw === 'string' && bookingsRaw.length > 0) { 216 bookings = bookings.concat(bookingsRaw.split('|').map(bookingId => { 217 if (bookingId.length > 0) { 218 return parseInt(bookingId, 10); 219 } 220 221 return null; 222 }).filter(bookingId => !isNaN(bookingId))); 223 } 224 225 detailDialog.find('.kupo-travel-detail-window > h1.cupo_primary_heading').html('Details'); 226 detailDialog.find('.kupo-travel-detail-error-message').html('').hide(); 227 228 addContentToTravelDetailsFrame('', detailDialog); 229 230 if (bookings.length === 0) { 231 detailDialog.find('.kupo-travel-detail-window > h1.cupo_primary_heading').html('Fehler'); 232 detailDialog.find('.kupo-travel-detail-error-message') 233 .html('Es ist ein technischer Fehler aufgetreten. Bitte versuchen Sie es später erneut.') 234 .show(); 235 return; 236 } 237 238 detailDialog.addClass('active'); 239 detailDialog.removeClass('inactive'); 240 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').addClass('active'); 241 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('inactive'); 242
243 if (extendedDetailView) { 244 showExtendedTravelDetailContent(containerId, detailDialog); 245 } else { 246 showTravelDetailContent(detailDialog); 247 } 248 }); 249 250 function showExtendedTravelDetailContent(containerId, detailDialog) { 251 detailDialog.find('iframe.kupo-detail-dialog-main-content').css('display', 'flex'); 252 253 $.ajax({ 254 type: 'POST', 255 url: cupo_travels_script.ajax_url, 256 data: { 257 'action': 'cupoTravelDetail', 258 'data': { 259 containerId: containerId 260 } 261 }, 262 success: function (data) { 263 data = typeof data === 'string' ? JSON.parse(data) : data; 264 265 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').addClass('inactive'); 266 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('active'); 267 268 if (data && data.status === 'success') { 269 addContentToTravelDetailsFrame(data.data, detailDialog); 270 } else { 271 detailDialog.find('iframe.kupo-detail-dialog-main-content').hide(); 272 detailDialog.find('.kupo-travel-detail-window > h1.cupo_primary_heading').html('Fehler'); 273 detailDialog.find('.kupo-travel-detail-error-message') 274 .html('Es ist ein technischer Fehler aufgetreten. Bitte versuchen Sie es später erneut.') 275 .show(); 276 } 277 }, 278 error: function () { 279 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').addClass('inactive'); 280 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('active'); 281 detailDialog.find('iframe.kupo-detail-dialog-main-content').hide(); 282 detailDialog.find('.kupo-travel-detail-window > h1.cupo_primary_heading').html('Fehler'); 283 detailDialog.find('.kupo-travel-detail-error-message') 284 .html('Es ist ein technischer Fehler aufgetreten. Bitte versuchen Sie es später erneut.') 285 .show(); 286 } 287 }); 288 } 289 290 function showTravelDetailContent(detailDialog) { 291 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').addClass('inactive'); 292 detailDialog.find('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('active'); 293 294 detailDialog.find('.kupo-travel-detail-content').css('display', 'flex'); 295 296 detailDialog.find('.kupo-travel-detail-error-message').html('').css('display', 'none'); 297 } 298 299 $('.kupo-modal-detail-dialog-cancel_button').on('click', function() { 300 $('section[class*="kupo-travel-detail-dialog-"]').addClass('inactive'); 301 $('section[class*="kupo-travel-detail-dialog-"]').removeClass('active'); 302 $('.kupo-travel-detail-dialog-window-loading-spinner').addClass('inactive'); 303 $('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('active'); 304 }); 305 306 $('.kupo-close-travel-detail-dialog').on('click', function() { 307 $('section[class*="kupo-travel-detail-dialog-"]').addClass('inactive'); 308 $('section[class*="kupo-travel-detail-dialog-"]').removeClass('active'); 309 $('.kupo-travel-detail-dialog-window-loading-spinner').addClass('inactive'); 310 $('.kupo-travel-detail-dialog-window-loading-spinner').removeClass('active'); 311 }); 312});
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.