1var EventAjaxFilters = function() { 2 var supportHtml5History; 3 var xmlHttpRequest = []; 4 return { 5 init: function() { 6 Common.logInfo("EventAjaxFilters.init..."); 7 jQuery('#search_fromdate, #search_todate').each(function() { 8 var dateFormat = jQuery(this).attr('data-date-format') || 'mm/dd/yy'; 9 10 jQuery(this).datepicker({ 11 dateFormat: dateFormat.replace('yy', 'yy').replace('mm', 'mm').replace('dd', 'dd'), 12 changeMonth: true, 13 changeYear: true 14 }); 15 }); 16 // After deactivate calendar addon load box layout as default 17 if(Common.getLayout()==="calendar-layout" ){ 18 jQuery('.event_listings').on('update_event_listings', EventAjaxFilters.actions.getEventListings); 19 jQuery("#wpem-event-box-layout").addClass("wpem-active-layout"); 20 Common.setLayout("box-layout"); 21 } 22 23 jQuery("#wpem-event-filter-version-2-filter-action").click(function(){ 24 jQuery("#wpem-event-filter-version-2-dropdown").toggle(); 25 }); 26 27 if (jQuery(".showing_applied_filters").hasClass("showing-applied-filters")) { 28 jQuery(".showing_applied_filters").show(); 29 }else{ 30 jQuery(".showing_applied_filters").hide(); 31 } 32 33 //set datepicker default range 34 var form = jQuery(this).closest('form'); 35 form.find(':input[name^="search_datetimes"]').not(':input[type="hidden"]').val(0).trigger('chosen:updated'); 36 37 //more filters 38 if (jQuery('.wpem-search-event-more-filter').length > 0) { 39 //hide advance filter 40 jQuery('.wpem-event-advance-filter').hide(); 41 jQuery('.wpem-search-event-more-filter').on('click',function(){ 42 jQuery('.wpem-event-advance-filter').slideToggle( "slow"); 43 }) 44 } 45 46 if (jQuery.isFunction(jQuery.fn.chosen)) { 47 if (event_manager_ajax_filters.is_rtl == 1) { 48 jQuery('select[name^="search_datetimes"]').addClass('chosen-rtl'); 49 jQuery('select[name^="search_categories"]').addClass('chosen-rtl'); 50 jQuery('select[name^="search_event_types"]').addClass('chosen-rtl'); 51 jQuery('select[name^="search_ticket_prices"]').addClass('chosen-rtl') 52 } 53 jQuery('select[name^="search_datetimes"]').chosen({ 54 search_contains: true 55 }); 56 jQuery('select[name^="search_categories"]').chosen({ 57 search_contains: true 58 }); 59 jQuery('select[name^="search_event_types"]').chosen({ 60 search_contains: true 61 }); 62 jQuery('select[name^="search_ticket_prices"]').chosen({ 63 search_contains: true 64 }) 65 } 66 if (window.history && window.history.pushState) { 67 supportHtml5History = true 68 } else { 69 supportHtml5History = false 70 } 71 jQuery(document).ready(EventAjaxFilters.actions.windowLoad); 72 73 jQuery(document.body).on('click', '.load_more_upcoming_events', EventAjaxFilters.actions.loadMoreUpcomingEvents); 74 jQuery(document.body).on('click', '.load_more_past_events', EventAjaxFilters.actions.loadMorePastEvents); 75 jQuery(document.body).on('click', '.load_more_events', EventAjaxFilters.actions.loadMoreEvents); 76 jQuery('#event_filters').on('click', '.reset', EventAjaxFilters.actions.eventAjaxFiltersReset); 77 jQuery('div.event_listings_main').on('click', '.event-manager-pagination a', EventAjaxFilters.actions.eventPagination); 78 jQuery('.event_listings').on('update_event_listings', EventAjaxFilters.actions.getEventListings); 79 if (jQuery('.event_listings_upcoming').length > 0) { 80 jQuery('#search_keywords, #search_location, #search_datetimes, #search_categories, #search_event_types, #search_ticket_prices, .event-manager-filter').change(EventAjaxFilters.actions.getUpcomingEvents); 81 } else { 82 jQuery('#search_keywords, #search_location, #search_datetimes, #search_categories, #search_event_types, #search_ticket_prices, .event-manager-filter').change(function() { 83 var target = jQuery(this).closest('div.event_listings'); 84 target.triggerHandler('update_event_listings', [1, false]); 85 EventAjaxFilters.actions.event_manager_store_state(target, 1) 86 }); 87 } 88 jQuery('.wpem-event-filter-version-2-search-btn').change(function() { 89 var target = jQuery(this).closest('div.event_listings'); 90 target.triggerHandler('update_event_listings', [1, false]); 91 EventAjaxFilters.actions.event_manager_store_state(target, 1) 92 }).on("click", function(e) { 93 jQuery("#wpem-event-filter-version-2-dropdown").toggle(false); 94 EventAjaxFilters.actions.getEventListings(e); 95 if (e.which === 13) { 96 jQuery(this).trigger('change') 97 } 98 }); 99 100 }, 101 102 actions: { 103 event_manager_store_state: function(target, page) { 104 105 Common.logInfo("EventAjaxFilters.event_manager_store_state..."); 106 var location = document.location.href.split('#')[0]; 107 var url = document.location.href; 108 if (url.match(/\/page\/\d+/)) { 109 url = url.replace(/(\/page\/)\d+/, '/page/' + page); 110 }else{ 111 if (url.endsWith('/')) { 112 url += 'page/' + page; 113 }else{ 114 url += '/page/' + page; 115 } 116 } 117 118 if (supportHtml5History) { 119 var form = target.find('.event_filters'); 120 var data = jQuery(form).serialize(); 121 var index = jQuery('div.event_listings').index(target); 122 window.history.replaceState({ 123 id: 'event_manager_state', 124 page: page, 125 data: data, 126 index: index 127 }, '',location) 128 } 129 }, 130 windowLoad: function(event) { 131 Common.logInfo("EventAjaxFilters.actions.windowLoad..."); 132 jQuery('.event_filters').each(function() { 133 var target = jQuery(this).closest('div.event_listings'); 134 var form = target.find('.event_filters'); 135 var inital_page = 1; 136 var index = jQuery('div.event_listings').index(target); 137 if (window.history.state && window.location.hash) { 138 var state = window.history.state; 139 if (state.id && 'event_manager_state' === state.id && index == state.index) { 140 //set initial_page with 1 on page refresh 141 inital_page = 1; 142 form.deserialize(state.data); 143 form.find(':input[name^="search_datetimes"]').not(':input[type="hidden"]').trigger('chosen:updated'); 144 form.find(':input[name^="search_categories"]').not(':input[type="hidden"]').trigger('chosen:updated'); 145 form.find(':input[name^="search_event_types"]').not(':input[type="hidden"]').trigger('chosen:updated'); 146 form.find(':input[name^="search_ticket_prices"]').not(':input[type="hidden"]').trigger('chosen:updated') 147 } 148 } 149 target.triggerHandler('update_event_listings', [inital_page, false]) 150 }); 151 }, 152 eventAjaxFiltersReset: function(event) { 153 Common.logInfo("EventAjaxFilters.actions.eventAjaxFiltersReset..."); 154 155 var target = jQuery(this).closest('div.event_listings'); 156 var form = jQuery(this).closest('form'); 157 form.find(':input[name="search_keywords"], :input[name="search_location"], .event-manager-filter').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 158 form.find(':input[name^="search_fromdate"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 159 form.find(':input[name^="search_todate"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 160 form.find(':input[name^="search_datetimes"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 161 form.find(':input[name^="search_categories"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 162 form.find(':input[name^="search_event_types"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 163 form.find(':input[name^="search_ticket_prices"]').not(':input[type="hidden"]').val('').trigger('chosen:updated'); 164 target.triggerHandler('reset'); 165 target.triggerHandler('update_event_listings', [1, false]); 166 EventAjaxFilters.actions.event_manager_store_state(target, 1); 167 return false;
168 event.preventDefault() 169 }, 170 171 loadMoreEvents: function(event) { 172 event.preventDefault(); 173 174 var target = jQuery(this).closest('div.event_listings'); 175 var page = parseInt(jQuery(this).data('page') || 1); 176 var loading_previous = false; 177 jQuery(this).parent().addClass('wpem-loading'); 178 page = page + 1; 179 jQuery(this).data('page', page); 180 EventAjaxFilters.actions.event_manager_store_state(target, page); 181 target.triggerHandler('update_event_listings', [page, true, loading_previous]); 182 return false; 183 }, 184 185 eventPagination: function(event) { 186 event.preventDefault(); 187 var target = jQuery(this).closest('div.event_listings'); 188 var page = jQuery(this).data('page'); 189 EventAjaxFilters.actions.event_manager_store_state(target, page); 190 target.triggerHandler('update_event_listings', [page, false, false]); 191 }, 192 193 getEventListings: function(event, page=1, append, loading_previous) { 194 event.preventDefault(); 195 Common.logInfo("EventAjaxFilters.actions.getEventListings..."); 196 197 var data = ''; 198 var target = jQuery(event.currentTarget || this).closest('div.event_listings'); 199 var form = target.find('.event_filters'); 200 var filters_bar = target.find('.showing_applied_filters'); 201 var results = target.find('.event_listings'); 202 var per_page = target.data('per_page'); 203 var orderby = target.data('orderby'); 204 var order = target.data('order'); 205 var featured = target.data('featured'); 206 var cancelled = target.data('cancelled'); 207 var event_online = target.data('event_online'); 208 var index = jQuery('div.event_listings').index(this); 209 target.find('.load_more_events').hide(); 210 if (xmlHttpRequest[index]) { 211 xmlHttpRequest[index].abort() 212 } 213 if (!append) { 214 215 jQuery(results).parent().addClass('wpem-loading'); 216 jQuery('div.event_listing, div.no_event_listings_found', results).css('visibility', 'hidden'); 217 target.find('.load_more_events').data('page', page); 218 } 219 220 if (true == target.data('show_filters')) { 221 var filter_event_type = []; 222 223 if(form.find(':input[name^="search_datetimes"]').length > 0) { 224 var datetimes = form.find(':input[name^="search_datetimes"]').map(function () { 225 return jQuery(this).val() 226 }).get(); 227 } else { 228 var startDate = form.find('#search_fromdate').val(); 229 var endDate = form.find('#search_todate').val(); 230 231 var datetimes = (startDate || endDate) ? JSON.stringify({ start: startDate, end: endDate }) : ''; 232 var datetimes = datetimes ? { '': datetimes } : {}; 233 } 234 235 if(jQuery( 'input.date_range_picker').length > 0) { 236 jQuery( 'input.date_range_picker').daterangepicker(); 237 } 238 var categories = form.find(':input[name^="search_categories"]').map(function() { 239 return jQuery(this).val() 240 }).get(); 241 var event_types = form.find(':input[name^="search_event_types"]').map(function() { 242 return jQuery(this).val() 243 }).get(); 244 var ticket_prices = form.find(':input[name^="search_ticket_prices"]').map(function() { 245 return jQuery(this).val() 246 }).get(); 247 var keywords = ''; 248 var location = ''; 249 var $keywords = form.find(':input[name="search_keywords"]'); 250 var $location = form.find(':input[name="search_location"]'); 251 if ($keywords.val() !== $keywords.attr('placeholder')) { 252 keywords = $keywords.val() 253 } 254 if ($location.val() !== $location.attr('placeholder')) { 255 location = $location.val() 256 } 257 258 if(jQuery( ':input[name="event_online"]').length > 0){ 259 if(jQuery(':input[name="event_online"]').prop("checked") == true) { 260 var event_online = 'true'; 261 }else{ 262 var event_online = ''; 263 } 264 } 265 266 data = { 267 lang: event_manager_ajax_filters.lang, 268 search_keywords: keywords, 269 search_location: location, 270 search_datetimes: datetimes, 271 search_categories: categories, 272 search_event_types: event_types, 273 search_ticket_prices: ticket_prices, 274 per_page: per_page, 275 orderby: orderby, 276 order: order, 277 page: page, 278 featured: featured, 279 cancelled: cancelled, 280 event_online: event_online, 281 show_pagination: target.data('show_pagination'), 282 form_data: form.serialize(), 283 wpem_filter_nonce: form.find('input[name="wpem_filter_nonce"]').val() 284 } 285 } else { 286 287 var keywords = target.data('keywords'); 288 var location = target.data('location'); 289 if(form.find(':input[name^="search_datetimes"]').length > 0) { 290 var datetimes = JSON.stringify(target.data('datetimes')); 291 } else { 292 293 } 294 var categories = target.data('categories'); 295 var event_types = target.data('event_types'); 296 var ticket_prices = target.data('ticket_prices'); 297 if (categories) { 298 categories = categories.split(',') 299 } 300 if (event_types) { 301 event_types = event_types.split(',') 302 } 303 data = { 304 lang: event_manager_ajax_filters.lang, 305 search_keywords: keywords, 306 search_location: location, 307 search_datetimes: datetimes, 308 search_categories: categories, 309 search_event_types: event_types, 310 search_ticket_prices: ticket_prices, 311 per_page: per_page, 312 orderby: orderby, 313 order: order, 314 page: page, 315 featured: featured, 316 cancelled: cancelled, 317 event_online: event_online, 318 show_pagination: target.data('show_pagination'), 319 wpem_filter_nonce: form.find('input[name="wpem_filter_nonce"]').val() 320 } 321 } 322 xmlHttpRequest[index] = jQuery.ajax({ 323 type: 'POST', 324 url: event_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%", "get_listings"), 325 data: data, 326 success: function(result) { 327 if (result) { 328 try { 329 jQuery('.no_event_listings_found').remove(); 330 if (result.filter_value) { 331 jQuery(filters_bar).show().html('<span>' + result.filter_value + '</span>' + result.showing_links) 332 } else { 333 jQuery(filters_bar).hide() 334 } 335 if (result.showing_applied_filters) { 336 jQuery(filters_bar).addClass('showing-applied-filters'); 337 } else { 338 jQuery(filters_bar).removeClass('showing-applied-filters'); 339 } 340 if (result.html) { 341 if (append && loading_previous) { 342 jQuery(results).prepend(result.html); 343 if(jQuery('div.google-map-loadmore').length > 0) { 344 jQuery('div .google-map-loadmore').not('div.google-map-loadmore:first').remove(); 345 } 346 } else if (append) { 347 jQuery(results).append(result.html); 348 if(jQuery('div.google-map-loadmore').length > 0){ 349 jQuery('div .google-map-loadmore').not('div.google-map-loadmore:first').remove(); 350 } 351 } else { 352 jQuery(results).html(result.html); 353 } 354 } 355 if (true == target.data('show_pagination')) { 356 357 if (result.pagination) { 358 jQuery('.event-manager-pagination').html(result.pagination) 359 } 360 } else { 361 localStorage.setItem( 'total_event_page', result.max_num_pages); 362 localStorage.setItem( 'current_event_page', page); 363 if (!result.found_events || result.max_num_pages <= page) { 364 target.find('.load_more_events:not(.load_previous)').hide(); 365 } else if (!loading_previous) { 366 target.find('.load_more_events').show(); 367 } 368 target.find('.load_more_events_loader').removeClass('wpem-loading'); 369 jQuery('li.event_listing', results).css('visibility', 'visible') 370 } 371 jQuery(results).parent().removeClass('wpem-loading'); 372 target.triggerHandler('updated_results', result) 373 } catch (err) { 374 if (window.console) { 375 Common.logError(err) 376 } 377 } 378 } 379 }, 380 error: function(jqXHR, textStatus, error) { 381 if (window.console && 'abort' !== textStatus) { 382 Common.logError(textStatus + ': ' + error) 383 } 384 }, 385 statusCode: { 386 404: function() { 387 if (window.console) { 388 Common.logError("Error 404: Ajax Endpoint cannot be reached. Go to Settings > Permalinks and save to resolve.") 389 } 390 } 391 } 392 }); 393 event.preventDefault(); 394 }, 395 396 /** 397 * this function is used to load more upcoming events 398 * @param {*} event 399 */
400 loadMoreUpcomingEvents: function(event){ 401 if(jQuery('#upcoming_event_listing').length > 0) { 402 event.preventDefault(); 403 var target = jQuery(this).closest('div#upcoming_event_listing'); 404 jQuery(this).parent().addClass('wpem-loading'); 405 var search_keywords = jQuery('#search_keywords').val(); 406 var search_location = jQuery('#search_location').val(); 407 var search_categories = jQuery('#search_categories').val(); 408 var search_event_types = jQuery('#search_event_types').val(); 409 var search_datetimes = jQuery('#search_datetimes').val(); 410 var order = jQuery('#upcoming_event_listing').data('order'); 411 var orderby = jQuery('#upcoming_event_listing').data('orderby'); 412 var currentPage = jQuery('.load_more_upcoming_events').attr('data-page'); 413 var per_page = jQuery('#per-page-settings').data('per-page'); 414 jQuery.ajax({ 415 type: 'POST', 416 url: event_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%", "get_upcoming_listings"), 417 data: { 418 action: 'get_upcoming_listings', 419 search_keywords: search_keywords, 420 search_location: search_location, 421 search_datetimes: search_datetimes, 422 search_categories: search_categories, 423 search_event_types: search_event_types, 424 order: order, 425 orderby: orderby, 426 value: currentPage, 427 per_page: per_page, 428 }, 429 success: function(response) { 430 target.find('#load_more_events_loader').removeClass('wpem-loading'); 431 if (response.success) { 432 jQuery('.event_listings').append(response.data.events_html); 433 var nextPage = parseInt(currentPage) + 1; 434 jQuery('#load_more_events').attr('data-page', nextPage); 435 if (response.data.no_more_events===true) { 436 jQuery('#load_more_events').hide(); 437 } 438 } else { 439 console.error('Failed to load events:', response.data.error); 440 if (response.data.error === 'No more events found.') { 441 jQuery('#load_more_events').hide(); 442 } 443 } 444 }, 445 error: function(xhr, status, error) { 446 console.error('AJAX Error:', status, error); 447 } 448 }); 449 }; 450 }, 451 452 /** 453 * this function is used to load more upcoming events 454 * @param {*} event 455 */ 456 loadMorePastEvents: function(event){ 457 if(jQuery('.past_event_listings').length > 0) { 458 event.preventDefault(); 459 jQuery(this).parent().addClass('wpem-loading'); 460 var search_keywords = jQuery('#search_keywords').val(); 461 var search_location = jQuery('#search_location').val(); 462 var search_categories = jQuery('#search_categories').val(); 463 var search_event_types = jQuery('#search_event_types').val(); 464 var search_datetimes = jQuery('#search_datetimes').val(); 465 var currentPage = jQuery('.load_more_past_events').attr('data-page'); 466 var per_page = jQuery('#per-page-settings').data('per-page'); 467 jQuery.ajax({ 468 type: 'POST', 469 url: event_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%", "load_more_past_listings"), 470 data: { 471 action: 'load_more_past_listings', 472 search_keywords: search_keywords, 473 search_location: search_location, 474 search_datetimes: search_datetimes, 475 search_categories: search_categories, 476 search_event_types: search_event_types, 477 value: currentPage, 478 per_page: per_page, 479 _wpnonce: event_manager_ajax_filters.nonce, 480 }, 481 success: function(response) { 482 jQuery('#load_more_events_loader').removeClass('wpem-loading'); 483 if (response.success) { 484 jQuery('.event_listings').append(response.data.events_html); 485 var nextPage = parseInt(currentPage) + 1; 486 jQuery('#load_more_events').attr('data-page', nextPage); 487 if (response.data.no_more_events===true) { 488 jQuery('#load_more_events').hide(); 489 } 490 } else { 491 console.error('Failed to load events:', response.data.error); 492 if (response.data.error === 'No more events found.') { 493 jQuery('#load_more_events').hide(); 494 } 495 } 496 }, 497 error: function(xhr, status, error) { 498 console.error('AJAX Error:', status, error); 499 } 500 }); 501 }; 502 }, 503 504 /** 505 * this function is used to get upcoming events 506 * @param {*} event 507 */ 508 getUpcomingEvents: function(event){ 509 event.preventDefault(); 510 var search_keywords = jQuery('#search_keywords').val(); 511 var search_location = jQuery('#search_location').val(); 512 var search_categories = jQuery('#search_categories').val(); 513 var search_event_types = jQuery('#search_event_types').val(); 514 var search_datetimes = jQuery('#search_datetimes').val(); 515 var order = jQuery('#upcoming_event_listing').data('order'); 516 var orderby = jQuery('#upcoming_event_listing').data('orderby'); 517 var currentPage = jQuery('#upcoming_event_listing').attr('data-page'); 518 var per_page = jQuery('#per-page-settings').data('per-page'); 519 jQuery.ajax({ 520 type: 'POST', 521 url: event_manager_ajax_filters.ajax_url.toString().replace("%%endpoint%%", "get_upcoming_listings"), 522 data: { 523 action: 'get_upcoming_listings', 524 search_keywords: search_keywords, 525 search_location: search_location, 526 search_datetimes: search_datetimes, 527 search_categories: search_categories, 528 search_event_types: search_event_types, 529 order: order, 530 orderby: orderby, 531 value: currentPage, 532 per_page: per_page, 533 }, 534 success: function(response) { 535 if (response.success) { 536 jQuery('#event-listing-view').html(response.data.events_html); 537 jQuery('#event-listing-view').data('locked', true); 538 var nextPage = parseInt(currentPage)+1; 539 jQuery('#load_more_events').attr('data-page', nextPage); 540 if (response.data.no_more_events===true) { 541 jQuery('#load_more_events').hide(); 542 } 543 } else { 544 console.error('Failed to load events:', response.data.error); 545 jQuery('#load_more_events').hide(); 546 } 547 }, 548 error: function(xhr, status, error) { 549 console.error('AJAX Error:', status, error); 550 } 551 }); 552 }, 553 } 554 } 555}; 556EventAjaxFilters = EventAjaxFilters(); 557jQuery(document).ready(function($) { 558 EventAjaxFilters.init() 559});
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.