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