1// Set datepicker default value. 2var datepicker_format = 'yy-mm-dd'; 3 4jQuery(document).ready(function($) 5{ 6 // Image picker on terms menu 7 $('.mec_upload_image_button').click(function(event) 8 { 9 event.preventDefault(); 10 11 var real_ajax_url = wp.ajax.settings.url; 12 wp.ajax.settings.url = real_ajax_url + '?mec_fes=1'; 13 14 var post_id = $(this).data('post-id'); 15 if(post_id && post_id !== -1) wp.media.model.settings.post.id = post_id; 16 if(post_id === -1) wp.media.model.settings.post.id = null; 17 18 var preview_id = 'mec_thumbnail_img'; 19 var input_id = 'mec_thumbnail'; 20 21 if($(this).data('preview-id')) preview_id = $(this).data('preview-id'); 22 if($(this).data('input-id')) input_id = $(this).data('input-id'); 23 24 var frame; 25 if(frame) 26 { 27 frame.open(); 28 return; 29 } 30 31 frame = wp.media(); 32 frame.on('select', function() 33 { 34 // Grab the selected attachment. 35 var attachment = frame.state().get('selection').first(); 36 37 $('#'+preview_id).html('<img src="'+attachment.attributes.url+'" style="max-width: 100%;" />'); 38 $('#'+input_id).val(attachment.attributes.url); 39 40 $('.mec_remove_image_button').toggleClass('mec-util-hidden'); 41 42 frame.close(); 43 }); 44 45 frame.open(); 46 }); 47 48 // Image remover on terms menu 49 $('.mec_remove_image_button').click(function(event) 50 { 51 event.preventDefault(); 52 53 var preview_id = 'mec_thumbnail_img'; 54 var input_id = 'mec_thumbnail'; 55 56 if($(this).data('preview-id')) preview_id = $(this).data('preview-id'); 57 if($(this).data('input-id')) input_id = $(this).data('input-id'); 58 59 $('#'+preview_id).html(''); 60 $('#'+input_id).val(''); 61 62 $('.mec_remove_image_button').toggleClass('mec-util-hidden'); 63 }); 64 65 // Image picker on add event menu for location 66 $('.mec_location_upload_image_button').click(function(event) 67 { 68 event.preventDefault(); 69 70 var frame; 71 if(frame) 72 { 73 frame.open(); 74 return; 75 } 76 77 frame = wp.media(); 78 frame.on('select', function() 79 { 80 // Grab the selected attachment. 81 var attachment = frame.state().get('selection').first(); 82 83 $('#mec_location_thumbnail_img').html('<img src="'+attachment.attributes.url+'" />'); 84 $('#mec_location_thumbnail').val(attachment.attributes.url); 85 86 $('.mec_location_remove_image_button').toggleClass('mec-util-hidden'); 87 88 frame.close(); 89 }); 90 91 frame.open(); 92 }); 93 94 // Image remover on add event menu for location 95 $('.mec_location_remove_image_button').click(function(event) 96 { 97 event.preventDefault(); 98 99 $('#mec_location_thumbnail_img').html(''); 100 $('#mec_location_thumbnail').val(''); 101 102 $('.mec_location_remove_image_button').toggleClass('mec-util-hidden'); 103 }); 104 105 // Image picker on add event menu for organizer 106 $('.mec_organizer_upload_image_button').click(function(event) 107 { 108 event.preventDefault(); 109 110 var frame; 111 if(frame) 112 { 113 frame.open(); 114 return; 115 } 116 117 frame = wp.media(); 118 frame.on('select', function() 119 { 120 // Grab the selected attachment. 121 var attachment = frame.state().get('selection').first(); 122 123 $('#mec_organizer_thumbnail_img').html('<img src="'+attachment.attributes.url+'" />'); 124 $('#mec_organizer_thumbnail').val(attachment.attributes.url); 125 126 $('.mec_organizer_remove_image_button').toggleClass('mec-util-hidden'); 127 128 frame.close(); 129 }); 130 131 frame.open(); 132 }); 133 134 // Image remover on add event menu for organizer 135 $('.mec_organizer_remove_image_button').click(function(event) 136 { 137 event.preventDefault(); 138 139 $('#mec_organizer_thumbnail_img').html(''); 140 $('#mec_organizer_thumbnail').val(''); 141 142 $('.mec_organizer_remove_image_button').toggleClass('mec-util-hidden'); 143 });
144 145 // Image remover on frontend event submission menu 146 $('#mec_fes_remove_image_button').click(function(event) 147 { 148 event.preventDefault(); 149 150 $('#mec_fes_thumbnail_img').html(''); 151 $('#mec_fes_thumbnail').val(''); 152 $('#mec_featured_image_file').val(''); 153 154 $('#mec_fes_remove_image_button').addClass('mec-util-hidden'); 155 }); 156 157 // Location Image remover on frontend event submission menu 158 $('#mec_fes_location_remove_image_button').click(function(event) 159 { 160 event.preventDefault(); 161 162 $('#mec_fes_location_thumbnail_img').html(''); 163 $('#mec_fes_location_thumbnail').val(''); 164 $('#mec_fes_location_thumbnail_file').val(''); 165 166 $('#mec_fes_location_remove_image_button').addClass('mec-util-hidden'); 167 }); 168 169 // Organizer Image remover on frontend event submission menu 170 $('#mec_fes_organizer_remove_image_button').click(function(event) 171 { 172 event.preventDefault(); 173 174 $('#mec_fes_organizer_thumbnail_img').html(''); 175 $('#mec_fes_organizer_thumbnail').val(''); 176 $('#mec_fes_organizer_thumbnail_file').val(''); 177 178 $('#mec_fes_organizer_remove_image_button').addClass('mec-util-hidden'); 179 }); 180 181 // Sponsor Image remover on frontend event submission menu 182 $('#mec_fes_sponsor_remove_image_button').click(function(event) 183 { 184 event.preventDefault(); 185 186 $('#mec_fes_sponsor_thumbnail_img').html(''); 187 $('#mec_fes_sponsor_thumbnail').val(''); 188 $('#mec_fes_sponsor_thumbnail_file').val(''); 189 190 $('#mec_fes_sponsor_remove_image_button').addClass('mec-util-hidden'); 191 }); 192 193 // Speaker Image remover on frontend event submission menu 194 $('#mec_fes_speaker_remove_image_button').click(function(event) 195 { 196 event.preventDefault(); 197 198 $('#mec_fes_speaker_thumbnail_img').html(''); 199 $('#mec_fes_speaker_thumbnail').val(''); 200 $('#mec_fes_speaker_thumbnail_file').val(''); 201 202 $('#mec_fes_speaker_remove_image_button').addClass('mec-util-hidden'); 203 }); 204 205 var date_splite; 206 if(typeof mec_admin_localize !== 'undefined') 207 { 208 date_splite = mec_admin_localize.datepicker_format.split('&'); 209 if(date_splite[0] !== undefined && date_splite.length == 2) datepicker_format = date_splite[0]; 210 } 211 else if(typeof mecdata !== 'undefined') 212 { 213 date_splite = mecdata.datepicker_format.split( '&' ); 214 if(date_splite[0] !== undefined && date_splite.length == 2) datepicker_format = date_splite[0]; 215 } 216 217 $('[id^="mec-book-form-btn-step"]').on('click',function() 218 { 219 setTimeout(function() 220 { 221 if($.fn.datepicker) 222 { 223 if('date' !== $('.mec-date-picker').prop('type')) 224 { 225 $('.mec-date-picker').datepicker( 226 { 227 changeYear: true, 228 changeMonth: true, 229 dateFormat: datepicker_format, 230 gotoCurrent: true, 231 yearRange: 'c-3:c+5', 232 }); 233 } 234 235 } 236 }, 1000); 237 }); 238 239 if($.fn.datepicker) 240 { 241 $('.mec-date-picker').datepicker( 242 { 243 changeYear: true, 244 changeMonth: true, 245 dateFormat: datepicker_format, 246 gotoCurrent: true, 247 yearRange: 'c-3:c+5', 248 }); 249 250 $('#mec_start_date').datepicker( 251 { 252 changeYear: true, 253 changeMonth: true, 254 dateFormat: datepicker_format, 255 gotoCurrent: true, 256 yearRange: 'c-3:c+5', 257 onSelect: function(value, i) 258 { 259 const end = $("#mec_end_date"); 260 if(value !== i.lastVal) 261 { 262 end.datepicker("option", "minDate", value); 263 } 264 265 if(end.val() === '') 266 { 267 end.val(value); 268 } 269 } 270 }); 271 272 $('#mec_end_date').datepicker( 273 { 274 changeYear: true, 275 changeMonth: true, 276 dateFormat: datepicker_format, 277 gotoCurrent: true, 278 yearRange: 'c-3:c+5', 279 onSelect: function(value, i) 280 { 281 const start = $("#mec_start_date");
282 if(value !== i.lastVal) 283 { 284 start.datepicker("option", "maxDate", value); 285 } 286 287 if(start.val() === '') 288 { 289 start.val(value); 290 } 291 } 292 }); 293 294 $('#mec_date_repeat_end_at_date').datepicker( 295 { 296 changeYear: true, 297 changeMonth: true, 298 dateFormat: datepicker_format, 299 gotoCurrent: true, 300 yearRange: 'c-3:c+5', 301 }); 302 303 $('.mec_date_picker_dynamic_format').datepicker( 304 { 305 changeYear: true, 306 changeMonth: true, 307 dateFormat: datepicker_format, 308 gotoCurrent: true, 309 yearRange: 'c-3:c+5', 310 }); 311 312 $('.mec_date_picker').datepicker( 313 { 314 changeYear: true, 315 changeMonth: true, 316 dateFormat: 'yy-mm-dd', 317 gotoCurrent: true, 318 yearRange: 'c-3:c+5', 319 }); 320 321 $('.mec_date_picker_dynamic_format_start').datepicker( 322 { 323 changeYear: true, 324 changeMonth: true, 325 dateFormat: datepicker_format, 326 gotoCurrent: true, 327 yearRange: 'c-1:c+5', 328 onSelect: function(date) 329 { 330 var selectedDate = new Date(date); 331 var endDate = new Date(selectedDate.getTime()); 332 333 var $end_picker = $(this).next(); 334 $end_picker.datepicker("option", "minDate", endDate); 335 $end_picker.datepicker("option", "maxDate", '+5y'); 336 } 337 }); 338 339 $('.mec_date_picker_dynamic_format_end').datepicker( 340 { 341 changeYear: true, 342 changeMonth: true, 343 dateFormat: datepicker_format, 344 gotoCurrent: true, 345 yearRange: 'c-1:c+5', 346 }); 347 348 trigger_period_picker(); 349 } 350 351 // Initialize WP Color Picker 352 if($.fn.wpColorPicker) jQuery('.mec-color-picker').wpColorPicker(); 353 354 $('#mec_location_id').on('change', function() 355 { 356 mec_location_toggle(); 357 }); 358 359 $('#mec_organizer_id').on('change', function() 360 { 361 mec_organizer_toggle(); 362 var mec_organizer_val = parseInt($(this).val()); 363 var mec_additional_organizer = $(this).parent().parent().find('#mec-additional-organizer-wrap'); 364 365 if(mec_organizer_val != 1) mec_additional_organizer.show(); 366 else mec_additional_organizer.hide(); 367 }); 368 369 mec_location_toggle(); 370 mec_organizer_toggle(); 371 372 $('#mec_repeat').on('change', function() 373 { 374 mec_repeat_toggle(); 375 }); 376 377 mec_repeat_toggle(); 378 379 $('#mec_repeat_type').on('change', function() 380 { 381 mec_repeat_type_toggle(); 382 }); 383 384 mec_repeat_type_toggle(); 385 386 $('#mec_bookings_limit_unlimited').on('change', function() 387 { 388 mec_bookings_unlimited_toggle(); 389 }); 390 391 $('#mec_add_in_days').on('click', function() 392 { 393 var allday = $(this).data('allday'); 394 395 var start = $('#mec_exceptions_in_days_start_date').val(); 396 if(start === '') return false; 397 398 var end = $('#mec_exceptions_in_days_end_date').val(); 399 if(end === '') return false; 400 401 var start_hour = $('#mec_exceptions_in_days_start_hour').val(); 402 if(start_hour.length === 1) start_hour = '0'+start_hour; 403 404 var start_minutes = $('#mec_exceptions_in_days_start_minutes').val(); 405 if(start_minutes.length === 1) start_minutes = '0'+start_minutes; 406 407 var start_ampm = $('#mec_exceptions_in_days_start_ampm').val(); 408 if(typeof start_ampm === 'undefined') start_ampm = ''; 409 410 var end_hour = $('#mec_exceptions_in_days_end_hour').val(); 411 if(end_hour.length === 1) end_hour = '0'+end_hour; 412 413 var end_minutes = $('#mec_exceptions_in_days_end_minutes').val(); 414 if(end_minutes.length === 1) end_minutes = '0'+end_minutes; 415 416 var end_ampm = $('#mec_exceptions_in_days_end_ampm').val(); 417 if(typeof end_ampm === 'undefined') end_ampm = ''; 418 419 var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm; 420 var label = start + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + start_hour + ':' + start_minutes + ' ' + start_ampm + '</span> - ' + end + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + end_hour + ':' + end_minutes + ' ' + end_ampm + '</span>'; 421 422 // Don't add exactly same occurrences 423 if($('#mec_in_days input[value="'+value+'"]').length > 0) return false; 424 425 var $key = $('#mec_new_in_days_key'); 426 427 var key = $key.val(); 428 var html = $('#mec_new_in_days_raw').html().replace(/:i:/g, key).replace(/:val:
428/g, value).replace(/:label:/g, label); 429 430 $('#mec_in_days').append(html); 431 $key.val(parseInt(key)+1); 432 }); 433 434 $('#mec_edit_in_days').on('click', function() 435 { 436 // Form 437 const $form = $('#mec-in-days-form'); 438 439 const modify_id = $form.data('modify'); 440 const $row = $('#mec_in_days_row'+modify_id); 441 442 var allday = $(this).data('allday'); 443 444 var start = $('#mec_exceptions_in_days_start_date').val(); 445 if(start === '') return false; 446 447 var end = $('#mec_exceptions_in_days_end_date').val(); 448 if(end === '') return false; 449 450 var start_hour = $('#mec_exceptions_in_days_start_hour').val(); 451 if(start_hour.length === 1) start_hour = '0'+start_hour; 452 453 var start_minutes = $('#mec_exceptions_in_days_start_minutes').val(); 454 if(start_minutes.length === 1) start_minutes = '0'+start_minutes; 455 456 var start_ampm = $('#mec_exceptions_in_days_start_ampm').val(); 457 if(typeof start_ampm === 'undefined') start_ampm = ''; 458 459 var end_hour = $('#mec_exceptions_in_days_end_hour').val(); 460 if(end_hour.length === 1) end_hour = '0'+end_hour; 461 462 var end_minutes = $('#mec_exceptions_in_days_end_minutes').val(); 463 if(end_minutes.length === 1) end_minutes = '0'+end_minutes; 464 465 var end_ampm = $('#mec_exceptions_in_days_end_ampm').val(); 466 if(typeof end_ampm === 'undefined') end_ampm = ''; 467 468 var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm; 469 var label = start + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + start_hour + ':' + start_minutes + ' ' + start_ampm + '</span> - ' + end + ' <span class="mec-time-picker-label '+(allday ? 'mec-util-hidden' : '')+'">' + end_hour + ':' + end_minutes + ' ' + end_ampm + '</span>'; 470 471 $row.find($('input[type=hidden]')).val(value); 472 $row.find($('.mec-in-days-day')).html(label); 473 474 // Reset Dates 475 $form.parent().find($('input[type=text]')).val(''); 476 477 // Modification Mode 478 $form.removeClass('mec-in-days-edit-mode').addClass('mec-in-days-add-mode').removeData('modify'); 479 }); 480 481 $('#mec_cancel_in_days').on('click', function() 482 { 483 // Form 484 let $form = $('#mec-in-days-form'); 485 486 // Reset Dates 487 $form.parent().find($('input[type=text]')).val(''); 488 489 // Modification Mode 490 $form.removeClass('mec-in-days-edit-mode').addClass('mec-in-days-add-mode').removeData('modify'); 491 }); 492 493 $('#mec_add_not_in_days').on('click', function() 494 { 495 let date = $('#mec_exceptions_not_in_days_date').val(); 496 if(date === '') return false; 497 498 let d = date.replaceAll('-', ''); 499 d = d.replaceAll('/', ''); 500 d = d.replaceAll('.', ''); 501 502 503 let $wrapper = $('#mec_not_in_days'); 504 let $key = $('#mec_new_not_in_days_key'); 505 506 let c = 'mec-date-'+d; 507 if($wrapper.find($('.'+c)).length) return; 508 509 let key = $key.val(); 510 let html = $('#mec_new_not_in_days_raw').html().replace(/:i:/g, key).replace(/:d:/g, d).replace(/:val:/g, date); 511 512 $wrapper.append(html); 513 $key.val(parseInt(key)+1); 514 }); 515 516 $('#mec_add_ticket_button').on('click', function() 517 { 518 let $key = $('#mec_new_ticket_key'); 519 let key = $key.val(); 520 let html = $('#mec_new_ticket_raw').html().replace(/:i:/g, key); 521 522 $('#mec_tickets').append(html); 523 $key.val(parseInt(key)+1); 524 525 mec_init_sortable_sections(); 526 527 $('.mec_add_price_date_button').off('click').on('click', function() 528 { 529 mec_handle_add_price_date_button(this); 530 }); 531 532 $.each($(".mec-select2"), function(i,v) 533 { 534 if($(v).attr('name').search(":i:") > 0) 535 { 536 return; 537 } 538 539 if(typeof $(v).data('select2-id') == 'undefined') 540 { 541 $(v).select2(); 542 } 543 }); 544
545 trigger_period_picker(); 546 }); 547 548 $('.mec_add_price_date_button').off('click').on('click', function() 549 { 550 mec_handle_add_price_date_button(this); 551 }); 552 553 mec_hourly_schedule_add_day_listener(); 554 mec_init_sortable_sections(); 555 556 $('#mec_add_fee_button').on('click', function() 557 { 558 var key = $('#mec_new_fee_key').val(); 559 var html = $('#mec_new_fee_raw').html().replace(/:i:/g, key); 560 561 $('#mec_fees_list').append(html); 562 $('#mec_new_fee_key').val(parseInt(key)+1); 563 564 mec_init_sortable_sections(); 565 }); 566 567 $('#mec_add_ticket_variation_button').on('click', function() 568 { 569 var key = $('#mec_new_ticket_variation_key').val(); 570 var html = $('#mec_new_ticket_variation_raw').html().replace(/:i:/g, key); 571 572 $('#mec_ticket_variations_list').append(html); 573 $('#mec_new_ticket_variation_key').val(parseInt(key)+1); 574 575 mec_init_sortable_sections(); 576 }); 577 578 $('.mec-form-row.mec-available-color-row span').on('click', function() 579 { 580 $('.mec-form-row.mec-available-color-row span').removeClass('color-selected'); 581 $(this).addClass('color-selected'); 582 }); 583 584 $('#mec_reg_form_field_types button').on('click', function() 585 { 586 var type = $(this).data('type'); 587 588 if (type == 'mec_email') { 589 if ($('#mec_reg_form_fields').find('input[value="mec_email"][type="hidden"]').length) { 590 return false; 591 } 592 } 593 594 if (type == 'name') { 595 if ($('#mec_reg_form_fields').find('input[value="name"][type="hidden"]').length) { 596 return false; 597 } 598 } 599 600 var key = $('#mec_new_reg_field_key').val(); 601 var html = $('#mec_reg_field_'+type).html().replace(/:i:/g, key); 602 603 $('#mec_reg_form_fields').append(html); 604 $('#mec_new_reg_field_key').val(parseInt(key)+1); 605 606 // Set onclick listener for add option fields 607 mec_reg_fields_option_listeners(); 608 }); 609 610 // Set onclick listener for add option fields 611 mec_reg_fields_option_listeners(); 612 613 // Advanced Repeating 614 $('#mec-advanced-wraper ul > ul > li').click(function() 615 { 616 if($(this).attr('class') == '') $(this).attr('class', 'mec-active'); 617 else $(this).attr('class', ''); 618 619 $('#mec_date_repeat_advanced').val($('#mec-advanced-wraper div:first-child > ul').find('.mec-active').find('span').text().slice(0, -1)); 620 }); 621 622 $('#mec_event_form_field_types button').on('click', function() 623 { 624 var type = $(this).data('type'); 625 626 var key = $('#mec_new_event_field_key').val(); 627 var html = $('#mec_event_field_'+type).html().replace(/:i:/g, key); 628 629 $('#mec_event_form_fields').append(html); 630 $('#mec_new_event_field_key').val(parseInt(key)+1); 631 632 // Set onclick listener for add option fields 633 mec_event_fields_option_listeners(); 634 }); 635 636 // Set onclick listener for add option fields 637 mec_event_fields_option_listeners(); 638 639 $('#mec_bfixed_form_field_types button').on('click', function() 640 { 641 var type = $(this).data('type'); 642 643 var key = $('#mec_new_bfixed_field_key').val(); 644 var html = $('#mec_bfixed_field_'+type).html().replace(/:i:/g, key); 645 646 $('#mec_bfixed_form_fields').append(html); 647 $('#mec_new_bfixed_field_key').val(parseInt(key)+1); 648 649 // Set onclick listener for add option fields 650 mec_bfixed_fields_option_listeners(); 651 }); 652 653 // Set onclick listener for add option fields 654 mec_bfixed_fields_option_listeners(); 655 656 // Additional Organizers 657 mec_additional_organizers_listeners(); 658 659 // Show / Hide Password 660 $('.mec-show-hide-password').on('click', function() 661 { 662 var $input = $(this).siblings("input"); 663 var current = $input.attr('type'); 664 665 if(current === 'password') $input.attr('type', 'text'); 666 else $input.attr('type', 'password'); 667 }); 668 669 // FAQ 670 $('#mec_add_faq_button').on('click', function() 671 { 672 const $key = $('#mec_new_faq_key');
673 const key = $key.val(); 674 const html = $('#mec_new_faq_raw').html().replace(/:i:/g, key); 675 676 $('#mec_faq_list').append(html); 677 $key.val(parseInt(key)+1); 678 679 mec_init_sortable_sections(); 680 }); 681 682 // Appointments 683 $('.mec-event-appointment-tab .mec-event-appointment-tab-item').on('click', function() 684 { 685 const $tab = $(this); 686 const $fes_form = $('#mec_fes_form'); 687 const $metabox_details = $('#mec_metabox_details'); 688 const $appointment_form_wrapper = $('.mec-appointment-form-wrap'); 689 690 const entity_type = $(this).data('entity-type'); 691 692 const $entity_type_input = $('#mec_entity_type_input'); 693 $entity_type_input.val(entity_type); 694 695 $('.mec-event-appointment-tab-item').removeClass('mec-active-tab'); 696 $tab.addClass('mec-active-tab'); 697 698 if (entity_type === 'appointment') 699 { 700 $fes_form.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment'); 701 $metabox_details.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment'); 702 703 $appointment_form_wrapper.removeClass('mec-util-hidden'); 704 } 705 else 706 { 707 $fes_form.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event'); 708 $metabox_details.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event'); 709 710 $appointment_form_wrapper.addClass('mec-util-hidden'); 711 } 712 }); 713 714 $('.mec-event-appointment-tab .mec-event-appointment-tab-item.mec-active-tab').trigger('click'); 715 716 const $repeatType = $('#mec_appointments_availability_repeat_type'); 717 if($.fn.datepicker) 718 { 719 $('#mec_appointments_start_date').datepicker({ 720 changeYear: true, 721 changeMonth: true, 722 dateFormat: datepicker_format, 723 gotoCurrent: true, 724 yearRange: 'c-3:c+5', 725 }); 726 } 727 function mec_toggle_repeat_type() 728 { 729 const val = $repeatType.val(); 730 if (val === 'no_repeat') 731 { 732 $('.lsd-apt-days-wrapper').addClass('mec-util-hidden'); 733 $('.lsd-apt-adjusted-title').addClass('mec-util-hidden'); 734 $('.lsd-apt-start-date-wrapper').addClass('mec-util-hidden'); 735 } 736 else 737 { 738 $('.lsd-apt-days-wrapper').removeClass('mec-util-hidden'); 739 $('.lsd-apt-adjusted-title').removeClass('mec-util-hidden'); 740 $('.lsd-apt-start-date-wrapper').removeClass('mec-util-hidden'); 741 } 742 } 743 $repeatType.on('change', mec_toggle_repeat_type); 744 mec_toggle_repeat_type(); 745 746 $(document).on('click', '.lsd-apt-day-icon-remove', function() 747 { 748 const $button = $(this); 749 const $timeslot = $button.parent(); 750 const $timeslots = $button.parents('.lsd-apt-day-timeslots'); 751 752 $timeslot.remove(); 753 if ($timeslots.find('.lsd-apt-day-timeslot-wrapper').length === 0) 754 { 755 $timeslots.find('.lsd-apt-day-timeslots-unavailable').removeClass('mec-util-hidden'); 756 } 757 }); 758 759 $(document).on('click', '.lsd-apt-day-icon-plus', function() 760 { 761 const $button = $(this); 762 let key = $button.data('key'); 763 764 const $day = $button.parents('.lsd-apt-day-wrapper'); 765 const day = $day.data('key'); 766 767 const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper'); 768 const $template = $('#lsd-apt-day-templates-'+day+'-timeslot'); 769 770 key = key + 1; 771 const html = $template.html().replace(/:t:/g, key); 772 $timeslots.append(html); 773 774 $button.data('key', key); 775 $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden'); 776 }); 777 778 $(document).on('click', '.lsd-apt-day-icon-copy', function () 779 { 780 const $button = $(this); 781 const $sourceDay = $button.closest('.lsd-apt-day-wrapper'); 782 const sourceDayKey = $sourceDay.data('key'); 783 784 const $weekWrapper = $sourceDay.parent(); 785 const $sourceTimeslots = $sourceDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper'); 786 787 $weekWrapper.find('.lsd-apt-day-wrapper').each(function () 788 { 789 const $targetDay = $(this); 790 791 const targetDayKey = $targetDay.data('key'); 792 if (targetDayKey === sourceDayKey) return; 793 794 const isActive = $targetDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper').length > 0;
795 if (!isActive) return; 796 797 const $targetWrapper = $targetDay.find('.lsd-apt-day-timeslots-wrapper'); 798 $targetWrapper.empty(); 799 800 $sourceTimeslots.each(function () 801 { 802 const $sourceSlot = $(this); 803 const $clone = $sourceSlot.clone(true); 804 805 $sourceSlot.find('select').each(function (i) { 806 const value = $(this).val(); 807 $clone.find('select').eq(i).val(value); 808 }); 809 810 $sourceSlot.find('input').each(function (i) { 811 const value = $(this).val(); 812 $clone.find('input').eq(i).val(value); 813 }); 814 815 $clone.find('[name], [id], [for]').each(function () 816 { 817 $.each(this.attributes, function () { 818 if (this.name === 'name' || this.name === 'id' || this.name === 'for') { 819 this.value = this.value 820 .replace(`[availability][${sourceDayKey}]`, `[availability][${targetDayKey}]`) 821 .replace(`availability_${sourceDayKey}_`, `availability_${targetDayKey}_`); 822 } 823 }); 824 }); 825 826 $targetWrapper.append($clone); 827 }); 828 }); 829 }); 830 831 $(document).on('click', '.lsd-apt-adjusted-day-add', function() 832 { 833 const $wrapper = $('.lsd-apt-adjusted-days-wrapper'); 834 let key = $wrapper.data('key') || 0; 835 836 key = key + 1; 837 let html = $('#lsd-apt-adjusted-template-day').html(); 838 html = html.replace(/:i:/g, key); 839 840 $wrapper.append(html); 841 $wrapper.data('key', key); 842 843 if($.fn.datepicker) 844 { 845 $wrapper.find('.mec-apt-date-picker').last().datepicker({ 846 changeYear: true, 847 changeMonth: true, 848 dateFormat: datepicker_format, 849 gotoCurrent: true, 850 yearRange: 'c-3:c+5', 851 }); 852 } 853 }); 854 855 $(document).on('click', '.lsd-apt-adjusted-day-remove', function() 856 { 857 $(this).closest('.lsd-apt-day-wrapper').remove(); 858 }); 859 860 $(document).on('click', '.lsd-apt-adj-day-icon-plus', function() 861 { 862 const $button = $(this); 863 let key = $button.data('key'); 864 const $day = $button.closest('.lsd-apt-day-wrapper'); 865 const day = $day.data('day'); 866 const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper'); 867 868 key = key + 1; 869 let html = $('#lsd-apt-adjusted-template-timeslot').html(); 870 871 html = html.replace(/:i:/g, day).replace(/:t:/g, key); 872 $timeslots.append(html); 873 874 $button.data('key', key); 875 $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden'); 876 }); 877}); 878 879function trigger_period_picker() 880{ 881 jQuery('.mec-date-picker-start').datepicker( 882 { 883 changeYear: true, 884 changeMonth: true, 885 dateFormat: 'yy-mm-dd', 886 gotoCurrent: true, 887 yearRange: 'c-1:c+5', 888 onSelect: function(date) 889 { 890 const selectedDate = new Date(date); 891 const endDate = new Date(selectedDate.getTime()); 892 893 const $end_picker = jQuery(this).next(); 894 $end_picker.datepicker("option", "minDate", endDate); 895 $end_picker.datepicker("option", "maxDate", '+5y'); 896 } 897 }); 898 899 jQuery('.mec-date-picker-end').datepicker( 900 { 901 changeYear: true, 902 changeMonth: true, 903 dateFormat: 'yy-mm-dd', 904 gotoCurrent: true, 905 yearRange: 'c-1:c+5', 906 }); 907} 908 909function mec_location_toggle() 910{ 911 if(jQuery('#mec_location_id').val() != '0') jQuery('#mec_location_new_container').hide(); 912 else jQuery('#mec_location_new_container').show(); 913} 914 915function mec_organizer_toggle() 916{ 917 if(jQuery('#mec_organizer_id').val() != '0') jQuery('#mec_organizer_new_container').hide(); 918 else jQuery('#mec_organizer_new_container').show(); 919} 920 921function mec_repeat_toggle() 922{ 923 if(jQuery('#mec_repeat').is(':checked')) jQuery('.mec-form-repeating-event-row').show(); 924 else jQuery('.mec-form-repeating-event-row').hide(); 925} 926 927function mec_repeat_type_toggle() 928{ 929 var repeat_type = jQuery('#mec_repeat_type').val(); 930 931 if(repeat_type == 'certain_weekdays') 932 { 933 jQuery('#mec_repeat_interval_container').hide(); 934 jQuery('#mec_repeat_certain_weekdays_container').show(); 935 jQuery('#mec_exceptions_in_days_container').hide(); 936 jQuery('#mec_end_wrapper').show(); 937 jQuery('#mec-advanced-wraper').hide(); 938 } 939 else if(repeat_type == 'custom_days') 940 { 941 jQuery('#mec_repeat_interval_container').hide(); 942 jQuery('#mec_repeat_certain_weekdays_container').hide(); 943 jQuery('#mec_exceptions_in_days_container').show(); 944 jQuery('#mec_end_wrapper').hide(); 945 jQuery('#mec-advanced-wraper').hide(); 946 } 947 else if(repeat_type == 'advanced') 948 { 949 jQuery('#mec_repeat_interval_container').hide(); 950 jQuery('#mec_repeat_certain_weekdays_container').hide(); 951 jQuery('#mec_exceptions_in_days_container').hide(); 952 jQuery('#mec_end_wrapper').show(); 953 jQuery('#mec-advanced-wraper').show(); 954 } 955 else if(repeat_type != 'daily' && repeat_type != 'weekly' && repeat_type != 'monthly') 956 { 957 jQuery('#mec_repeat_interval_container').hide(); 958 jQuery('#mec_repeat_certain_weekdays_container').hide(); 959 jQuery('#mec_exceptions_in_days_container').hide(); 960 jQuery('#mec_end_wrapper').show(); 961 jQuery('#mec-advanced-wraper').hide(); 962 } 963 else 964 { 965 jQuery('#mec_repeat_interval_container').show(); 966 jQuery('#mec_repeat_certain_weekdays_container').hide(); 967 jQuery('#mec_exceptions_in_days_container').hide(); 968 jQuery('#mec_end_wrapper').show(); 969 jQuery('#mec-advanced-wraper').hide(); 970 } 971} 972 973function mec_in_days_remove(i) 974{ 975 jQuery('#mec_in_days_row'+i).remove(); 976} 977 978function mec_in_days_edit(i) 979{ 980 // Date 981 let $row = jQuery('#mec_in_days_row'+i); 982 let value = $row.find(jQuery('input[type=hidden]')).val(); 983 984 const values = value.split(':'); 985 const start_times = values[2].split('-') 986 const end_times = values[3].split('-') 987 988 // Form 989 let $form = jQuery('#mec-in-days-form'); 990 991 // Set Dates 992 jQuery('#mec_exceptions_in_days_start_date').val(values[0]); 993 jQuery('#mec_exceptions_in_days_end_date').val(values[1]); 994 995 // Set Times 996 jQuery('#mec_exceptions_in_days_start_hour').val(parseInt(start_times[0])); 997 jQuery('#mec_exceptions_in_days_start_minutes').val(parseInt(start_times[1])); 998 jQuery('#mec_exceptions_in_days_start_ampm').val(start_times[2]); 999 1000 jQuery('#mec_exceptions_in_days_end_hour').val(parseInt(end_times[0])); 1001 jQuery('#mec_exceptions_in_days_end_minutes').val(parseInt(end_times[1])); 1002 jQuery('#mec_exceptions_in_days_end_ampm').val(end_times[2]); 1003 1004 // Modification Mode 1005 $form.removeClass('mec-in-days-add-mode').addClass('mec-in-days-edit-mode').data('modify', i); 1006} 1007 1008function mec_not_in_days_remove(i) 1009{ 1010 jQuery('#mec_not_in_days_row'+i).remove(); 1011} 1012
1013function mec_bookings_unlimited_toggle() 1014{ 1015 jQuery('#mec_bookings_limit').toggleClass('mec-util-hidden'); 1016} 1017 1018function mec_hourly_schedule_add_day_listener() 1019{ 1020 jQuery('.mec-add-hourly-schedule-day-button').each(function() 1021 { 1022 jQuery(this).off('click').on('click', function() 1023 { 1024 var k = jQuery(this).data('key'); 1025 var raw = jQuery(this).data('raw'); 1026 var append = jQuery(this).data('append'); 1027 1028 var key = jQuery(k).val(); 1029 var html = jQuery(raw).html().replace(/:d:/g, key).replace(/:dd:/g, parseInt(key)+1); 1030 1031 jQuery(append).append(html); 1032 jQuery(k).val(parseInt(key)+1); 1033 1034 mec_hourly_schedule_listeners(); 1035 }); 1036 1037 mec_hourly_schedule_listeners(); 1038 }); 1039} 1040 1041function mec_bookings_after_occurrence_cancel_listener() 1042{ 1043 jQuery('.mec-occurrences-bookings-after-occurrences-cancel').off('change').on('change', function() 1044 { 1045 const $dropdown = jQuery(this); 1046 const value = $dropdown.val(); 1047 const $moveWrapper = $dropdown.next(); 1048 1049 if(value === 'move' || value === 'move_notify') 1050 { 1051 $moveWrapper.removeClass('w-hidden'); 1052 } 1053 else 1054 { 1055 $moveWrapper.addClass('w-hidden'); 1056 } 1057 }); 1058} 1059 1060function mec_hourly_schedule_listeners() 1061{ 1062 jQuery('.mec-add-hourly-schedule-button').off('click').on('click', function() 1063 { 1064 var prefix = jQuery(this).data('prefix'); 1065 var day = jQuery(this).data('day'); 1066 var $key = jQuery('#'+prefix+'mec_new_hourly_schedule_key'+day); 1067 1068 var key = $key.val(); 1069 var html = jQuery('#'+prefix+'mec_new_hourly_schedule_raw'+day).html().replace(/:i:/g, key).replace(/:d:/g, day).replace(); 1070 var g_field_id = prefix+"-hourly_schedules-"+day+"-schedules-:i:-description"; 1071 var field_id = prefix+"-hourly_schedules-"+day+"-schedules-"+key+"-description"; 1072 html = html.replace(g_field_id,field_id); 1073 html = html.replace(':k:',key); 1074 jQuery('#'+prefix+'mec_hourly_schedules'+day).append(html); 1075 $key.val(parseInt(key)+1); 1076 1077 wp.editor.initialize("mec"+field_id,{ 1078 tinymce: { 1079 wpautop: true, 1080 plugins : 'charmap colorpicker compat3x directionality fullscreen hr image lists media paste tabfocus textcolor wordpress wpautoresize wpdialogs wpeditimage wpemoji wpgallery wplink wptextpattern wpview', 1081 toolbar1: 'bold italic underline strikethrough | bullist numlist | blockquote hr wp_more | alignleft aligncenter alignright | link unlink | fullscreen | wp_adv', 1082 toolbar2: 'formatselect alignjustify forecolor | pastetext removeformat charmap | outdent indent | undo redo | wp_help' 1083 }, 1084 quicktags: true, 1085 mediaButtons: false, 1086 }); 1087 }); 1088 1089 jQuery(".mec-hourly-schedule-schedules").sortable({ 1090 handle: '.mec_field_sort' 1091 }); 1092} 1093 1094function mec_hourly_schedule_remove(day, i, prefix) 1095{ 1096 jQuery("#"+prefix+"mec_hourly_schedule_row"+day+'_'+i).remove(); 1097} 1098 1099function mec_hourly_schedule_day_remove(day, prefix) 1100{ 1101 jQuery("#"+prefix+"mec_meta_box_hourly_schedule_day_"+day).remove(); 1102} 1103 1104function mec_ticket_remove(i) 1105{ 1106 jQuery("#mec_ticket_row"+i).remove(); 1107} 1108 1109function mec_set_event_color(color) 1110{ 1111 try 1112 { 1113 jQuery("#mec_event_color").wpColorPicker('color', '#'+color); 1114 } 1115 catch(e) 1116 { 1117 jQuery("#mec_event_color").val(color); 1118 } 1119} 1120 1121function mec_remove_fee(key) 1122{ 1123 jQuery("#mec_fee_row"+key).remove(); 1124} 1125 1126function mec_remove_ticket_variation(key, id_prefix) 1127{ 1128 jQuery("#mec_"+id_prefix+"_row"+key).remove(); 1129} 1130 1131function add_variation_per_ticket(ticket_id) 1132{ 1133 var $input = jQuery('#mec_new_variation_per_ticket_key'); 1134 1135 var key = $input.val(); 1136 var html = jQuery('#mec_new_variation_per_ticket_raw'+ticket_id).html().replace(/:v:/g, key); 1137 1138 jQuery('#mec_ticket_variations_list'+ticket_id).append(html); 1139 $input.val(parseInt(key)+1); 1140 1141 mec_init_sortable_sections(); 1142} 1143 1144function mec_init_sortable_instance(selector, options) 1145{ 1146 jQuery(selector).each(function() 1147 { 1148 var $element = jQuery(this); 1149 1150 if(!$element.length) return; 1151 1152 if(typeof $element.data('ui-sortable') === 'undefined') 1153 { 1154 $element.sortable(options); 1155 } 1156 else 1157 { 1158 $element.sortable('refresh'); 1159 } 1160 });
1161} 1162 1163function mec_init_sortable_sections() 1164{ 1165 if(typeof jQuery.fn.sortable === 'undefined') return; 1166 1167 mec_init_sortable_instance('#mec_tickets', { handle: '.mec_field_sort', items: '> .mec_ticket_row' }); 1168 mec_init_sortable_instance('#mec_fees_list', { handle: '.mec_field_sort', items: '> .mec-box' }); 1169 mec_init_sortable_instance('[id^="mec_ticket_variations_list"]', { handle: '.mec_field_sort', items: '> .mec_ticket_variation_row' }); 1170 mec_init_sortable_instance('#mec_faq_list', { handle: '.mec_field_sort', items: '> .mec_faq_row' }); 1171} 1172 1173function mec_reg_fields_option_listeners() 1174{ 1175 jQuery('button.mec-reg-field-add-option').off('click').on('click', function() 1176 { 1177 var field_id = jQuery(this).data('field-id'); 1178 var key = jQuery('#mec_new_reg_field_option_key_'+field_id).val(); 1179 var html = jQuery('#mec_reg_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1180 1181 jQuery('#mec_reg_fields_'+field_id+'_options_container').append(html); 1182 jQuery('#mec_new_reg_field_option_key_'+field_id).val(parseInt(key)+1); 1183 }); 1184 1185 if(typeof jQuery.fn.sortable !== 'undefined') 1186 { 1187 jQuery("#mec_reg_form_fields").sortable( 1188 { 1189 handle: '.mec_reg_field_sort' 1190 }); 1191 1192 jQuery(".mec_reg_fields_options_container").sortable( 1193 { 1194 handle: '.mec_reg_field_option_sort' 1195 }); 1196 1197 jQuery(".mec-hourly-schedule-days").sortable( 1198 { 1199 handle: 'h4' 1200 }); 1201 1202 jQuery(".mec-hourly-schedule-schedules").sortable({ 1203 handle: '.mec_field_sort' 1204 }); 1205 } 1206} 1207 1208function mec_reg_fields_option_remove(field_key, key) 1209{ 1210 jQuery("#mec_reg_fields_option_"+field_key+"_"+key).remove(); 1211} 1212 1213function mec_reg_fields_remove(key) 1214{ 1215 jQuery("#mec_reg_fields_"+key).remove(); 1216} 1217 1218function mec_handle_add_price_date_button(e) 1219{ 1220 var key = jQuery(e).data('key'); 1221 var p = jQuery('#mec_new_ticket_price_key_'+key).val(); 1222 var html = jQuery('#mec_new_ticket_price_raw_'+key).html().replace(/:i:/g, key).replace(/:j:/g, p); 1223 1224 jQuery('#mec-ticket-price-dates-'+key).append(html); 1225 jQuery('#mec_new_ticket_price_key_'+key).val(parseInt(p)+1); 1226 jQuery('#mec-ticket-price-dates-'+key+' .new_added').datepicker( 1227 { 1228 changeYear: true, 1229 changeMonth: true, 1230 dateFormat: datepicker_format, 1231 gotoCurrent: true, 1232 yearRange: 'c-3:c+5', 1233 }); 1234} 1235 1236function mec_ticket_price_remove(ticket_key, price_key) 1237{ 1238 jQuery("#mec_ticket_price_raw_"+ticket_key+"_"+price_key).remove(); 1239} 1240 1241function mec_event_fields_option_listeners() 1242{ 1243 jQuery('button.mec-event-field-add-option').off('click').on('click', function() 1244 { 1245 var field_id = jQuery(this).data('field-id'); 1246 var key = jQuery('#mec_new_event_field_option_key_'+field_id).val(); 1247 var html = jQuery('#mec_event_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1248 1249 jQuery('#mec_event_fields_'+field_id+'_options_container').append(html); 1250 jQuery('#mec_new_event_field_option_key_'+field_id).val(parseInt(key)+1); 1251 }); 1252 1253 if(typeof jQuery.fn.sortable !== 'undefined') 1254 { 1255 jQuery("#mec_event_form_fields").sortable( 1256 { 1257 handle: '.mec_event_field_sort' 1258 }); 1259 1260 jQuery(".mec_event_fields_options_container").sortable( 1261 { 1262 handle: '.mec_event_field_option_sort' 1263 }); 1264 } 1265} 1266 1267function mec_event_fields_option_remove(field_key, key) 1268{ 1269 jQuery("#mec_event_fields_option_"+field_key+"_"+key).remove(); 1270} 1271 1272function mec_event_fields_remove(key) 1273{ 1274 jQuery("#mec_event_fields_"+key).remove(); 1275} 1276 1277function mec_bfixed_fields_option_listeners() 1278{ 1279 jQuery('button.mec-bfixed-field-add-option').off('click').on('click', function() 1280 { 1281 var field_id = jQuery(this).data('field-id'); 1282 var key = jQuery('#mec_new_bfixed_field_option_key_'+field_id).val(); 1283 var html = jQuery('#mec_bfixed_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1284 1285 jQuery('#mec_bfixed_fields_'+field_id+'_options_container').append(html); 1286 jQuery('#mec_new_bfixed_field_option_key_'+field_id).val(parseInt(key)+1); 1287 });
1288 1289 if(typeof jQuery.fn.sortable !== 'undefined') 1290 { 1291 jQuery("#mec_bfixed_form_fields").sortable( 1292 { 1293 handle: '.mec_bfixed_field_sort' 1294 }); 1295 1296 jQuery(".mec_bfixed_fields_options_container").sortable( 1297 { 1298 handle: '.mec_bfixed_field_option_sort' 1299 }); 1300 } 1301} 1302 1303function mec_bfixed_fields_option_remove(field_key, key) 1304{ 1305 jQuery("#mec_bfixed_fields_option_"+field_key+"_"+key).remove(); 1306} 1307 1308function mec_bfixed_fields_remove(key) 1309{ 1310 jQuery("#mec_bfixed_fields_"+key).remove(); 1311} 1312 1313function mec_additional_organizers_listeners() 1314{ 1315 jQuery('#mec_additional_organizers_add').off('click').on('click', function() 1316 { 1317 var value = jQuery('.mec-additional-organizers select').val(); 1318 console.log(value); 1319 if (!value) return; 1320 1321 var text = jQuery('.mec-additional-organizers select option:selected').text(); 1322 1323 var sortLabel = jQuery(this).data('sort-label'); 1324 var removeLabel = jQuery(this).data('remove-label'); 1325 1326 jQuery('.mec-additional-organizers-list').append('<li><span class="mec-additional-organizer-sort">'+sortLabel+'</span> <span onclick="mec_additional_organizers_remove(this);" class="mec-additional-organizer-remove">'+removeLabel+'</span><input type="hidden" name="mec[additional_organizer_ids][]" value="'+value+'"><span class="mec_orgz_item_name">'+text+'</span></li>'); 1327 1328 mec_additional_organizers_listeners(); 1329 }); 1330 1331 if(typeof jQuery.fn.sortable !== 'undefined') 1332 { 1333 jQuery(".mec-additional-organizers-list").sortable( 1334 { 1335 handle: '.mec-additional-organizer-sort' 1336 }); 1337 } 1338} 1339 1340function mec_additional_organizers_remove(element) 1341{ 1342 jQuery(element).parent().remove(); 1343} 1344 1345function mec_faq_remove(key) 1346{ 1347 jQuery("#mec_faq_row"+key).remove(); 1348} 1349 1350jQuery(document).on('focus', '.mec_date_picker', function () 1351{ 1352 if (!jQuery(this).hasClass('hasDatepicker')) 1353 { 1354 jQuery(this).datepicker({ 1355 changeYear: true, 1356 changeMonth: true, 1357 dateFormat: 'yy-mm-dd', 1358 gotoCurrent: true, 1359 yearRange: 'c-3:c+5', 1360 }); 1361 } 1362});
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.