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