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; 331 332 try 333 { 334 selectedDate = $.datepicker.parseDate(datepicker_format, date); 335 } 336 catch(e) 337 { 338 selectedDate = new Date(date); 339 } 340 341 if(!(selectedDate instanceof Date) || isNaN(selectedDate.getTime())) return; 342 343 var endDate = new Date(selectedDate.getTime()); 344 345 var $end_picker = $(this).next(); 346 $end_picker.datepicker("option", "minDate", endDate); 347 $end_picker.datepicker("option", "maxDate", '+5y'); 348 } 349 }); 350 351 $('.mec_date_picker_dynamic_format_end').datepicker( 352 { 353 changeYear: true, 354 changeMonth: true, 355 dateFormat: datepicker_format, 356 gotoCurrent: true, 357 yearRange: 'c-1:c+5', 358 }); 359 360 trigger_period_picker(); 361 } 362 363 // Initialize WP Color Picker 364 if($.fn.wpColorPicker) jQuery('.mec-color-picker').wpColorPicker(); 365 366 $('#mec_location_id').on('change', function() 367 { 368 mec_location_toggle(); 369 }); 370 371 $('#mec_organizer_id').on('change', function() 372 { 373 mec_organizer_toggle(); 374 var mec_organizer_val = parseInt($(this).val()); 375 var mec_additional_organizer = $(this).parent().parent().find('#mec-additional-organizer-wrap'); 376 377 if(mec_organizer_val != 1) mec_additional_organizer.show(); 378 else mec_additional_organizer.hide(); 379 }); 380 381 mec_location_toggle(); 382 mec_organizer_toggle(); 383 384 $('#mec_repeat').on('change', function() 385 { 386 mec_repeat_toggle(); 387 }); 388 389 mec_repeat_toggle(); 390 391 $('#mec_repeat_type').on('change', function() 392 { 393 mec_repeat_type_toggle(); 394 }); 395 396 mec_repeat_type_toggle(); 397 398 $('#mec_bookings_limit_unlimited').on('change', function() 399 { 400 mec_bookings_unlimited_toggle(); 401 }); 402 403 $('#mec_add_in_days').on('click', function() 404 { 405 var allday = $(this).data('allday'); 406 407 var start = $('#mec_exceptions_in_days_start_date').val(); 408 if(start === '') return false; 409 410 var end = $('#mec_exceptions_in_days_end_date').val(); 411 if(end === '') return false;
412 413 var start_hour = $('#mec_exceptions_in_days_start_hour').val(); 414 if(start_hour.length === 1) start_hour = '0'+start_hour; 415 416 var start_minutes = $('#mec_exceptions_in_days_start_minutes').val(); 417 if(start_minutes.length === 1) start_minutes = '0'+start_minutes; 418 419 var start_ampm = $('#mec_exceptions_in_days_start_ampm').val(); 420 if(typeof start_ampm === 'undefined') start_ampm = ''; 421 422 var end_hour = $('#mec_exceptions_in_days_end_hour').val(); 423 if(end_hour.length === 1) end_hour = '0'+end_hour; 424 425 var end_minutes = $('#mec_exceptions_in_days_end_minutes').val(); 426 if(end_minutes.length === 1) end_minutes = '0'+end_minutes; 427 428 var end_ampm = $('#mec_exceptions_in_days_end_ampm').val(); 429 if(typeof end_ampm === 'undefined') end_ampm = ''; 430 431 var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm; 432 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>'; 433 434 // Don't add exactly same occurrences 435 if($('#mec_in_days input[value="'+value+'"]').length > 0) return false; 436 437 var $key = $('#mec_new_in_days_key'); 438 439 var key = $key.val(); 440 var html = $('#mec_new_in_days_raw').html().replace(/:i:/g, key).replace(/:val:/g, value).replace(/:label:/g, label); 441 442 $('#mec_in_days').append(html); 443 $key.val(parseInt(key)+1); 444 }); 445 446 $('#mec_edit_in_days').on('click', function() 447 { 448 // Form 449 const $form = $('#mec-in-days-form'); 450 451 const modify_id = $form.data('modify'); 452 const $row = $('#mec_in_days_row'+modify_id); 453 454 var allday = $(this).data('allday'); 455 456 var start = $('#mec_exceptions_in_days_start_date').val(); 457 if(start === '') return false; 458 459 var end = $('#mec_exceptions_in_days_end_date').val(); 460 if(end === '') return false; 461 462 var start_hour = $('#mec_exceptions_in_days_start_hour').val(); 463 if(start_hour.length === 1) start_hour = '0'+start_hour; 464 465 var start_minutes = $('#mec_exceptions_in_days_start_minutes').val(); 466 if(start_minutes.length === 1) start_minutes = '0'+start_minutes; 467 468 var start_ampm = $('#mec_exceptions_in_days_start_ampm').val(); 469 if(typeof start_ampm === 'undefined') start_ampm = ''; 470 471 var end_hour = $('#mec_exceptions_in_days_end_hour').val(); 472 if(end_hour.length === 1) end_hour = '0'+end_hour; 473 474 var end_minutes = $('#mec_exceptions_in_days_end_minutes').val(); 475 if(end_minutes.length === 1) end_minutes = '0'+end_minutes; 476 477 var end_ampm = $('#mec_exceptions_in_days_end_ampm').val(); 478 if(typeof end_ampm === 'undefined') end_ampm = ''; 479 480 var value = start + ':' + end + ':' + start_hour + '-' + start_minutes + '-' + start_ampm + ':' + end_hour + '-' + end_minutes + '-' + end_ampm; 481 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>'; 482 483 $row.find($('input[type=hidden]')).val(value); 484 $row.find($('.mec-in-days-day')).html(label); 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_cancel_in_days').on('click', function() 494 { 495 // Form 496 let $form = $('#mec-in-days-form'); 497 498 // Reset Dates 499 $form.parent().find($('input[type=text]')).val(''); 500 501 // Modification Mode 502 $form.removeClass('mec-in-days-edit-mode').addClass('mec-in-days-add-mode').removeData('modify'); 503 }); 504 505 $('#mec_add_not_in_days').on('click', function() 506 { 507 let date = $('#mec_exceptions_not_in_days_date').val(); 508 if(date === '') return false;
509 510 let d = date.replaceAll('-', ''); 511 d = d.replaceAll('/', ''); 512 d = d.replaceAll('.', ''); 513 514 515 let $wrapper = $('#mec_not_in_days'); 516 let $key = $('#mec_new_not_in_days_key'); 517 518 let c = 'mec-date-'+d; 519 if($wrapper.find($('.'+c)).length) return; 520 521 let key = $key.val(); 522 let html = $('#mec_new_not_in_days_raw').html().replace(/:i:/g, key).replace(/:d:/g, d).replace(/:val:/g, date); 523 524 $wrapper.append(html); 525 $key.val(parseInt(key)+1); 526 }); 527 528 $('#mec_add_ticket_button').on('click', function() 529 { 530 let $key = $('#mec_new_ticket_key'); 531 let key = $key.val(); 532 let html = $('#mec_new_ticket_raw').html().replace(/:i:/g, key); 533 534 $('#mec_tickets').append(html); 535 $key.val(parseInt(key)+1); 536 537 mec_init_sortable_sections(); 538 539 $('.mec_add_price_date_button').off('click').on('click', function() 540 { 541 mec_handle_add_price_date_button(this); 542 }); 543 544 $.each($(".mec-select2"), function(i,v) 545 { 546 if($(v).attr('name').search(":i:") > 0) 547 { 548 return; 549 } 550 551 if(typeof $(v).data('select2-id') == 'undefined') 552 { 553 $(v).select2(); 554 } 555 }); 556 557 trigger_period_picker(); 558 }); 559 560 $('.mec_add_price_date_button').off('click').on('click', function() 561 { 562 mec_handle_add_price_date_button(this); 563 }); 564 565 mec_hourly_schedule_add_day_listener(); 566 mec_init_sortable_sections(); 567 568 $('#mec_add_fee_button').on('click', function() 569 { 570 var key = $('#mec_new_fee_key').val(); 571 var html = $('#mec_new_fee_raw').html().replace(/:i:/g, key); 572 573 $('#mec_fees_list').append(html); 574 $('#mec_new_fee_key').val(parseInt(key)+1); 575 576 mec_init_sortable_sections(); 577 }); 578 579 $('#mec_add_ticket_variation_button').on('click', function() 580 { 581 var key = $('#mec_new_ticket_variation_key').val(); 582 var html = $('#mec_new_ticket_variation_raw').html().replace(/:i:/g, key); 583 584 $('#mec_ticket_variations_list').append(html); 585 $('#mec_new_ticket_variation_key').val(parseInt(key)+1); 586 587 mec_init_sortable_sections(); 588 }); 589 590 $('.mec-form-row.mec-available-color-row span').on('click', function() 591 { 592 $('.mec-form-row.mec-available-color-row span').removeClass('color-selected'); 593 $(this).addClass('color-selected'); 594 }); 595 596 $('#mec_reg_form_field_types button').on('click', function() 597 { 598 var type = $(this).data('type'); 599 600 if (type == 'mec_email') { 601 if ($('#mec_reg_form_fields').find('input[value="mec_email"][type="hidden"]').length) { 602 return false; 603 } 604 } 605 606 if (type == 'name') { 607 if ($('#mec_reg_form_fields').find('input[value="name"][type="hidden"]').length) { 608 return false; 609 } 610 } 611 612 var key = $('#mec_new_reg_field_key').val(); 613 var html = $('#mec_reg_field_'+type).html().replace(/:i:/g, key); 614 615 $('#mec_reg_form_fields').append(html); 616 $('#mec_new_reg_field_key').val(parseInt(key)+1); 617 618 // Set onclick listener for add option fields 619 mec_reg_fields_option_listeners(); 620 }); 621 622 // Set onclick listener for add option fields 623 mec_reg_fields_option_listeners(); 624 625 // Advanced Repeating 626 $('#mec-advanced-wraper ul > ul > li').click(function() 627 { 628 if($(this).attr('class') == '') $(this).attr('class', 'mec-active'); 629 else $(this).attr('class', ''); 630 631 $('#mec_date_repeat_advanced').val($('#mec-advanced-wraper div:first-child > ul').find('.mec-active').find('span').text().slice(0, -1)); 632 }); 633 634 $('#mec_event_form_field_types button').on('click', function() 635 { 636 var type = $(this).data('type'); 637 638 var key = $('#mec_new_event_field_key').val(); 639 var html = $('#mec_event_field_'+type).html().replace(/:i:/g, key); 640 641 $('#mec_event_form_fields').append(html); 642 $('#mec_new_event_field_key').val(parseInt(key)+1); 643 644 // Set onclick listener for add option fields 645 mec_event_fields_option_listeners(); 646 }); 647 648 // Set onclick listener for add option fields 649 mec_event_fields_option_listeners(); 650 651 $('#mec_bfixed_form_field_types button').on('click', function() 652 { 653 var type = $(this).data('type'); 654 655 var key = $('#mec_new_bfixed_field_key').val(); 656 var html = $('#mec_bfixed_field_'+type).html().replace(/:i:/g, key); 657 658 $('#mec_bfixed_form_fields').append(html); 659 $('#mec_new_bfixed_field_key').val(parseInt(key)+1); 660 661 // Set onclick listener for add option fields 662 mec_bfixed_fields_option_listeners(); 663 }); 664 665 // Set onclick listener for add option fields 666 mec_bfixed_fields_option_listeners(); 667 668 // Additional Organizers 669 mec_additional_organizers_listeners(); 670 671 // Show / Hide Password 672 $('.mec-show-hide-password').on('click', function() 673 { 674 var $input = $(this).siblings("input"); 675 var current = $input.attr('type'); 676 677 if(current === 'password') $input.attr('type', 'text'); 678 else $input.attr('type', 'password'); 679 }); 680 681 // FAQ 682 $('#mec_add_faq_button').on('click', function() 683 { 684 const $key = $('#mec_new_faq_key');
685 const key = $key.val(); 686 const html = $('#mec_new_faq_raw').html().replace(/:i:/g, key); 687 688 $('#mec_faq_list').append(html); 689 $key.val(parseInt(key)+1); 690 691 mec_init_sortable_sections(); 692 }); 693 694 // Appointments 695 // Move the selector to the metabox header 696 var $header = $('#mec_metabox_details .hndle'); 697 // If .hndle is not found, try .postbox-header (newer WP versions) 698 if ($header.length === 0) { 699 $header = $('#mec_metabox_details .postbox-header'); 700 } 701 $('.mec-event-appointment-type-wrap').appendTo($header).removeClass('mec-util-hidden').on('click', function(e) { 702 e.stopPropagation(); 703 }); 704 705 $('#mec_entity_type_select').on('change', function() 706 { 707 const entity_type = $(this).val(); 708 const $fes_form = $('#mec_fes_form'); 709 const $metabox_details = $('#mec_metabox_details'); 710 const $appointment_form_wrapper = $('.mec-appointment-form-wrap'); 711 712 if (entity_type === 'appointment') 713 { 714 $fes_form.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment'); 715 $metabox_details.removeClass('mec-entity-type-event').addClass('mec-entity-type-appointment'); 716 717 $appointment_form_wrapper.removeClass('mec-util-hidden'); 718 } 719 else 720 { 721 $fes_form.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event'); 722 $metabox_details.removeClass('mec-entity-type-appointment').addClass('mec-entity-type-event'); 723 724 $appointment_form_wrapper.addClass('mec-util-hidden'); 725 } 726 }); 727 728 $('#mec_entity_type_select').trigger('change'); 729 730 const $repeatType = $('#mec_appointments_availability_repeat_type'); 731 if($.fn.datepicker) 732 { 733 $('#mec_appointments_start_date').datepicker({ 734 changeYear: true, 735 changeMonth: true, 736 dateFormat: datepicker_format, 737 gotoCurrent: true, 738 yearRange: 'c-3:c+5', 739 }); 740 } 741 function mec_toggle_repeat_type() 742 { 743 const val = $repeatType.val(); 744 if (val === 'no_repeat') 745 { 746 $('.lsd-apt-days-wrapper').addClass('mec-util-hidden'); 747 $('.lsd-apt-adjusted-title').addClass('mec-util-hidden'); 748 $('.lsd-apt-start-date-wrapper').addClass('mec-util-hidden'); 749 } 750 else 751 { 752 $('.lsd-apt-days-wrapper').removeClass('mec-util-hidden'); 753 $('.lsd-apt-adjusted-title').removeClass('mec-util-hidden'); 754 $('.lsd-apt-start-date-wrapper').removeClass('mec-util-hidden'); 755 } 756 } 757 $repeatType.on('change', mec_toggle_repeat_type); 758 mec_toggle_repeat_type(); 759 760 $(document).on('click', '.lsd-apt-day-icon-remove', function() 761 { 762 const $button = $(this); 763 const $timeslot = $button.parent(); 764 const $timeslots = $button.parents('.lsd-apt-day-timeslots'); 765 766 $timeslot.remove(); 767 if ($timeslots.find('.lsd-apt-day-timeslot-wrapper').length === 0) 768 { 769 $timeslots.find('.lsd-apt-day-timeslots-unavailable').removeClass('mec-util-hidden'); 770 } 771 }); 772 773 $(document).on('click', '.lsd-apt-day-icon-plus', function() 774 { 775 const $button = $(this); 776 let key = $button.data('key'); 777 778 const $day = $button.parents('.lsd-apt-day-wrapper'); 779 const day = $day.data('key'); 780 781 const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper'); 782 const $template = $('#lsd-apt-day-templates-'+day+'-timeslot'); 783 784 key = key + 1; 785 const html = $template.html().replace(/:t:/g, key); 786 $timeslots.append(html); 787 788 $button.data('key', key); 789 $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden'); 790 }); 791 792 $(document).on('click', '.lsd-apt-day-icon-copy', function () 793 { 794 const $button = $(this); 795 const $sourceDay = $button.closest('.lsd-apt-day-wrapper'); 796 const sourceDayKey = $sourceDay.data('key'); 797 798 const $weekWrapper = $sourceDay.parent(); 799 const $sourceTimeslots = $sourceDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper'); 800 801 $weekWrapper.find('.lsd-apt-day-wrapper').each(function () 802 { 803 const $targetDay = $(this); 804 805 const targetDayKey = $targetDay.data('key'); 806 if (targetDayKey === sourceDayKey) return; 807 808 const isActive = $targetDay.find('.lsd-apt-day-timeslots-wrapper .lsd-apt-day-timeslot-wrapper').length > 0; 809 if (!isActive) return; 810 811 const $targetWrapper = $targetDay.find('.lsd-apt-day-timeslots-wrapper'); 812 $targetWrapper.empty(); 813 814 $sourceTimeslots.each(function () 815 { 816 const $sourceSlot = $(this); 817 const $clone = $sourceSlot.clone(true); 818 819 $sourceSlot.find('select').each(function (i) { 820 const value = $(this).val(); 821 $clone.find('select').eq(i).val(value); 822 }); 823 824 $sourceSlot.find('input').each(function (i) { 825 const value = $(this).val(); 826 $clone.find('input').eq(i).val(value); 827 }); 828 829 $clone.find('[name], [id], [for]').each(function () 830 { 831 $.each(this.attributes, function () { 832 if (this.name === 'name' || this.name === 'id' || this.name === 'for') { 833 this.value = this.value 834 .replace(`[availability][${sourceDayKey}]`, `[availability][${targetDayKey}]`) 835 .replace(`availability_${sourceDayKey}_`, `availability_${targetDayKey}_`); 836 } 837 }); 838 }); 839 840 $targetWrapper.append($clone); 841 }); 842 }); 843 }); 844 845 $(document).on('click', '.lsd-apt-adjusted-day-add', function() 846 { 847 const $wrapper = $('.lsd-apt-adjusted-days-wrapper'); 848 let key = $wrapper.data('key') || 0; 849 850 key = key + 1; 851 let html = $('#lsd-apt-adjusted-template-day').html(); 852 html = html.replace(/:i:/g, key); 853 854 $wrapper.append(html); 855 $wrapper.data('key', key); 856 857 if($.fn.datepicker) 858 { 859 $wrapper.find('.mec-apt-date-picker').last().datepicker({ 860 changeYear: true, 861 changeMonth: true, 862 dateFormat: datepicker_format, 863 gotoCurrent: true, 864 yearRange: 'c-3:c+5', 865 }); 866 } 867 }); 868 869 $(document).on('click', '.lsd-apt-adjusted-day-remove', function() 870 { 871 $(this).closest('.lsd-apt-day-wrapper').remove(); 872 }); 873 874 $(document).on('click', '.lsd-apt-adj-day-icon-plus', function() 875 { 876 const $button = $(this); 877 let key = $button.data('key'); 878 const $day = $button.closest('.lsd-apt-day-wrapper'); 879 const day = $day.data('day'); 880 const $timeslots = $day.find('.lsd-apt-day-timeslots-wrapper'); 881 882 key = key + 1; 883 let html = $('#lsd-apt-adjusted-template-timeslot').html(); 884 885 html = html.replace(/:i:/g, day).replace(/:t:/g, key); 886 $timeslots.append(html); 887 888 $button.data('key', key); 889 $day.find('.lsd-apt-day-timeslots-unavailable').addClass('mec-util-hidden'); 890 }); 891}); 892
893function trigger_period_picker() 894{ 895 jQuery('.mec-date-picker-start').datepicker( 896 { 897 changeYear: true, 898 changeMonth: true, 899 dateFormat: 'yy-mm-dd', 900 gotoCurrent: true, 901 yearRange: 'c-1:c+5', 902 onSelect: function(date) 903 { 904 const selectedDate = new Date(date); 905 const endDate = new Date(selectedDate.getTime()); 906 907 const $end_picker = jQuery(this).next(); 908 $end_picker.datepicker("option", "minDate", endDate); 909 $end_picker.datepicker("option", "maxDate", '+5y'); 910 } 911 }); 912 913 jQuery('.mec-date-picker-end').datepicker( 914 { 915 changeYear: true, 916 changeMonth: true, 917 dateFormat: 'yy-mm-dd', 918 gotoCurrent: true, 919 yearRange: 'c-1:c+5', 920 }); 921} 922 923function mec_location_toggle() 924{ 925 if(jQuery('#mec_location_id').val() != '0') jQuery('#mec_location_new_container').hide(); 926 else jQuery('#mec_location_new_container').show(); 927} 928 929function mec_organizer_toggle() 930{ 931 if(jQuery('#mec_organizer_id').val() != '0') jQuery('#mec_organizer_new_container').hide(); 932 else jQuery('#mec_organizer_new_container').show(); 933} 934 935function mec_repeat_toggle() 936{ 937 if(jQuery('#mec_repeat').is(':checked')) jQuery('.mec-form-repeating-event-row').show(); 938 else jQuery('.mec-form-repeating-event-row').hide(); 939} 940 941function mec_repeat_type_toggle() 942{ 943 var repeat_type = jQuery('#mec_repeat_type').val(); 944 945 if(repeat_type == 'certain_weekdays') 946 { 947 jQuery('#mec_repeat_interval_container').hide(); 948 jQuery('#mec_repeat_certain_weekdays_container').show(); 949 jQuery('#mec_exceptions_in_days_container').hide(); 950 jQuery('#mec_end_wrapper').show(); 951 jQuery('#mec-advanced-wraper').hide(); 952 } 953 else if(repeat_type == 'custom_days') 954 { 955 jQuery('#mec_repeat_interval_container').hide(); 956 jQuery('#mec_repeat_certain_weekdays_container').hide(); 957 jQuery('#mec_exceptions_in_days_container').show(); 958 jQuery('#mec_end_wrapper').hide(); 959 jQuery('#mec-advanced-wraper').hide(); 960 } 961 else if(repeat_type == 'advanced') 962 { 963 jQuery('#mec_repeat_interval_container').hide(); 964 jQuery('#mec_repeat_certain_weekdays_container').hide(); 965 jQuery('#mec_exceptions_in_days_container').hide(); 966 jQuery('#mec_end_wrapper').show(); 967 jQuery('#mec-advanced-wraper').show(); 968 } 969 else if(repeat_type != 'daily' && repeat_type != 'weekly' && repeat_type != 'monthly') 970 { 971 jQuery('#mec_repeat_interval_container').hide(); 972 jQuery('#mec_repeat_certain_weekdays_container').hide(); 973 jQuery('#mec_exceptions_in_days_container').hide(); 974 jQuery('#mec_end_wrapper').show(); 975 jQuery('#mec-advanced-wraper').hide(); 976 } 977 else 978 { 979 jQuery('#mec_repeat_interval_container').show(); 980 jQuery('#mec_repeat_certain_weekdays_container').hide(); 981 jQuery('#mec_exceptions_in_days_container').hide(); 982 jQuery('#mec_end_wrapper').show(); 983 jQuery('#mec-advanced-wraper').hide(); 984 } 985} 986 987function mec_in_days_remove(i) 988{ 989 jQuery('#mec_in_days_row'+i).remove(); 990} 991 992function mec_in_days_edit(i) 993{ 994 // Date 995 let $row = jQuery('#mec_in_days_row'+i); 996 let value = $row.find(jQuery('input[type=hidden]')).val(); 997 998 const values = value.split(':'); 999 const start_times = values[2].split('-') 1000 const end_times = values[3].split('-') 1001 1002 // Form 1003 let $form = jQuery('#mec-in-days-form'); 1004 1005 // Set Dates 1006 jQuery('#mec_exceptions_in_days_start_date').val(values[0]); 1007 jQuery('#mec_exceptions_in_days_end_date').val(values[1]); 1008 1009 // Set Times 1010 jQuery('#mec_exceptions_in_days_start_hour').val(parseInt(start_times[0])); 1011 jQuery('#mec_exceptions_in_days_start_minutes').val(parseInt(start_times[1])); 1012 jQuery('#mec_exceptions_in_days_start_ampm').val(start_times[2]); 1013 1014 jQuery('#mec_exceptions_in_days_end_hour').val(parseInt(end_times[0])); 1015 jQuery('#mec_exceptions_in_days_end_minutes').val(parseInt(end_times[1])); 1016 jQuery('#mec_exceptions_in_days_end_ampm').val(end_times[2]); 1017 1018 // Modification Mode 1019 $form.removeClass('mec-in-days-add-mode').addClass('mec-in-days-edit-mode').data('modify', i); 1020} 1021 1022function mec_not_in_days_remove(i) 1023{ 1024 jQuery('#mec_not_in_days_row'+i).remove(); 1025} 1026
1027function mec_bookings_unlimited_toggle() 1028{ 1029 jQuery('#mec_bookings_limit').toggleClass('mec-util-hidden'); 1030} 1031 1032function mec_hourly_schedule_add_day_listener() 1033{ 1034 jQuery('.mec-add-hourly-schedule-day-button').each(function() 1035 { 1036 jQuery(this).off('click').on('click', function() 1037 { 1038 var k = jQuery(this).data('key'); 1039 var raw = jQuery(this).data('raw'); 1040 var append = jQuery(this).data('append'); 1041 1042 var key = jQuery(k).val(); 1043 var html = jQuery(raw).html().replace(/:d:/g, key).replace(/:dd:/g, parseInt(key)+1); 1044 1045 jQuery(append).append(html); 1046 jQuery(k).val(parseInt(key)+1); 1047 1048 mec_hourly_schedule_listeners(); 1049 }); 1050 1051 mec_hourly_schedule_listeners(); 1052 }); 1053} 1054 1055function mec_bookings_after_occurrence_cancel_listener() 1056{ 1057 jQuery('.mec-occurrences-bookings-after-occurrences-cancel').off('change').on('change', function() 1058 { 1059 const $dropdown = jQuery(this); 1060 const value = $dropdown.val(); 1061 const $moveWrapper = $dropdown.next(); 1062 1063 if(value === 'move' || value === 'move_notify') 1064 { 1065 $moveWrapper.removeClass('w-hidden'); 1066 } 1067 else 1068 { 1069 $moveWrapper.addClass('w-hidden'); 1070 } 1071 }); 1072} 1073 1074function mec_hourly_schedule_listeners() 1075{ 1076 jQuery('.mec-add-hourly-schedule-button').off('click').on('click', function() 1077 { 1078 var prefix = jQuery(this).data('prefix'); 1079 var day = jQuery(this).data('day'); 1080 var $key = jQuery('#'+prefix+'mec_new_hourly_schedule_key'+day); 1081 1082 var key = $key.val(); 1083 var html = jQuery('#'+prefix+'mec_new_hourly_schedule_raw'+day).html().replace(/:i:/g, key).replace(/:d:/g, day).replace(); 1084 var g_field_id = prefix+"-hourly_schedules-"+day+"-schedules-:i:-description"; 1085 var field_id = prefix+"-hourly_schedules-"+day+"-schedules-"+key+"-description"; 1086 html = html.replace(g_field_id,field_id); 1087 html = html.replace(':k:',key); 1088 jQuery('#'+prefix+'mec_hourly_schedules'+day).append(html); 1089 $key.val(parseInt(key)+1); 1090 1091 wp.editor.initialize("mec"+field_id,{ 1092 tinymce: { 1093 wpautop: true, 1094 plugins : 'charmap colorpicker compat3x directionality fullscreen hr image lists media paste tabfocus textcolor wordpress wpautoresize wpdialogs wpeditimage wpemoji wpgallery wplink wptextpattern wpview', 1095 toolbar1: 'bold italic underline strikethrough | bullist numlist | blockquote hr wp_more | alignleft aligncenter alignright | link unlink | fullscreen | wp_adv', 1096 toolbar2: 'formatselect alignjustify forecolor | pastetext removeformat charmap | outdent indent | undo redo | wp_help' 1097 }, 1098 quicktags: true, 1099 mediaButtons: false, 1100 }); 1101 }); 1102 1103 jQuery(".mec-hourly-schedule-schedules").sortable({ 1104 handle: '.mec_field_sort' 1105 }); 1106} 1107 1108function mec_hourly_schedule_remove(day, i, prefix) 1109{ 1110 jQuery("#"+prefix+"mec_hourly_schedule_row"+day+'_'+i).remove(); 1111} 1112 1113function mec_hourly_schedule_day_remove(day, prefix) 1114{ 1115 jQuery("#"+prefix+"mec_meta_box_hourly_schedule_day_"+day).remove(); 1116} 1117 1118function mec_ticket_remove(i) 1119{ 1120 jQuery("#mec_ticket_row"+i).remove(); 1121} 1122 1123function mec_set_event_color(color) 1124{ 1125 try 1126 { 1127 jQuery("#mec_event_color").wpColorPicker('color', '#'+color); 1128 } 1129 catch(e) 1130 { 1131 jQuery("#mec_event_color").val(color); 1132 } 1133} 1134 1135function mec_remove_fee(key) 1136{ 1137 jQuery("#mec_fee_row"+key).remove(); 1138} 1139 1140function mec_remove_ticket_variation(key, id_prefix) 1141{ 1142 jQuery("#mec_"+id_prefix+"_row"+key).remove(); 1143} 1144 1145function add_variation_per_ticket(ticket_id) 1146{ 1147 var $input = jQuery('#mec_new_variation_per_ticket_key'); 1148 1149 var key = $input.val(); 1150 var html = jQuery('#mec_new_variation_per_ticket_raw'+ticket_id).html().replace(/:v:/g, key); 1151 1152 jQuery('#mec_ticket_variations_list'+ticket_id).append(html); 1153 $input.val(parseInt(key)+1); 1154 1155 mec_init_sortable_sections(); 1156} 1157 1158function mec_init_sortable_instance(selector, options) 1159{ 1160 jQuery(selector).each(function() 1161 { 1162 var $element = jQuery(this); 1163 1164 if(!$element.length) return; 1165 1166 if(typeof $element.data('ui-sortable') === 'undefined') 1167 { 1168 $element.sortable(options); 1169 } 1170 else 1171 { 1172 $element.sortable('refresh'); 1173 } 1174 }); 1175} 1176 1177function mec_init_sortable_sections() 1178{ 1179 if(typeof jQuery.fn.sortable === 'undefined') return; 1180 1181 mec_init_sortable_instance('#mec_tickets', { handle: '.mec_field_sort', items: '> .mec_ticket_row' }); 1182 mec_init_sortable_instance('#mec_fees_list', { handle: '.mec_field_sort', items: '> .mec-box' }); 1183 mec_init_sortable_instance('[id^="mec_ticket_variations_list"]', { handle: '.mec_field_sort', items: '> .mec_ticket_variation_row' }); 1184 mec_init_sortable_instance('#mec_faq_list', { handle: '.mec_field_sort', items: '> .mec_faq_row' }); 1185} 1186 1187function mec_reg_fields_option_listeners() 1188{ 1189 jQuery('button.mec-reg-field-add-option').off('click').on('click', function() 1190 { 1191 var field_id = jQuery(this).data('field-id'); 1192 var key = jQuery('#mec_new_reg_field_option_key_'+field_id).val(); 1193 var html = jQuery('#mec_reg_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1194 1195 jQuery('#mec_reg_fields_'+field_id+'_options_container').append(html); 1196 jQuery('#mec_new_reg_field_option_key_'+field_id).val(parseInt(key)+1); 1197 }); 1198 1199 if(typeof jQuery.fn.sortable !== 'undefined') 1200 { 1201 jQuery("#mec_reg_form_fields").sortable( 1202 { 1203 handle: '.mec_reg_field_sort' 1204 }); 1205 1206 jQuery(".mec_reg_fields_options_container").sortable( 1207 { 1208 handle: '.mec_reg_field_option_sort' 1209 }); 1210 1211 jQuery(".mec-hourly-schedule-days").sortable( 1212 { 1213 handle: 'h4' 1214 }); 1215 1216 jQuery(".mec-hourly-schedule-schedules").sortable({ 1217 handle: '.mec_field_sort' 1218 }); 1219 } 1220} 1221 1222function mec_reg_fields_option_remove(field_key, key) 1223{ 1224 jQuery("#mec_reg_fields_option_"+field_key+"_"+key).remove(); 1225} 1226 1227function mec_reg_fields_remove(key) 1228{ 1229 jQuery("#mec_reg_fields_"+key).remove(); 1230} 1231 1232function mec_handle_add_price_date_button(e) 1233{ 1234 var key = jQuery(e).data('key'); 1235 var p = jQuery('#mec_new_ticket_price_key_'+key).val(); 1236 var html = jQuery('#mec_new_ticket_price_raw_'+key).html().replace(/:i:/g, key).replace(/:j:/g, p); 1237 1238 jQuery('#mec-ticket-price-dates-'+key).append(html); 1239 jQuery('#mec_new_ticket_price_key_'+key).val(parseInt(p)+1); 1240 jQuery('#mec-ticket-price-dates-'+key+' .new_added').datepicker( 1241 { 1242 changeYear: true, 1243 changeMonth: true, 1244 dateFormat: datepicker_format, 1245 gotoCurrent: true, 1246 yearRange: 'c-3:c+5', 1247 }); 1248} 1249 1250function mec_ticket_price_remove(ticket_key, price_key) 1251{ 1252 jQuery("#mec_ticket_price_raw_"+ticket_key+"_"+price_key).remove(); 1253} 1254 1255function mec_event_fields_option_listeners() 1256{ 1257 jQuery('button.mec-event-field-add-option').off('click').on('click', function() 1258 { 1259 var field_id = jQuery(this).data('field-id'); 1260 var key = jQuery('#mec_new_event_field_option_key_'+field_id).val(); 1261 var html = jQuery('#mec_event_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1262 1263 jQuery('#mec_event_fields_'+field_id+'_options_container').append(html); 1264 jQuery('#mec_new_event_field_option_key_'+field_id).val(parseInt(key)+1); 1265 }); 1266 1267 if(typeof jQuery.fn.sortable !== 'undefined') 1268 { 1269 jQuery("#mec_event_form_fields").sortable( 1270 { 1271 handle: '.mec_event_field_sort' 1272 }); 1273 1274 jQuery(".mec_event_fields_options_container").sortable( 1275 { 1276 handle: '.mec_event_field_option_sort' 1277 }); 1278 } 1279} 1280 1281function mec_event_fields_option_remove(field_key, key) 1282{ 1283 jQuery("#mec_event_fields_option_"+field_key+"_"+key).remove(); 1284} 1285 1286function mec_event_fields_remove(key) 1287{ 1288 jQuery("#mec_event_fields_"+key).remove(); 1289} 1290 1291function mec_bfixed_fields_option_listeners() 1292{ 1293 jQuery('button.mec-bfixed-field-add-option').off('click').on('click', function() 1294 { 1295 var field_id = jQuery(this).data('field-id'); 1296 var key = jQuery('#mec_new_bfixed_field_option_key_'+field_id).val(); 1297 var html = jQuery('#mec_bfixed_field_option').html().replace(/:i:/g, key).replace(/:fi:/g, field_id); 1298 1299 jQuery('#mec_bfixed_fields_'+field_id+'_options_container').append(html); 1300 jQuery('#mec_new_bfixed_field_option_key_'+field_id).val(parseInt(key)+1); 1301 }); 1302 1303 if(typeof jQuery.fn.sortable !== 'undefined') 1304 { 1305 jQuery("#mec_bfixed_form_fields").sortable( 1306 { 1307 handle: '.mec_bfixed_field_sort' 1308 }); 1309 1310 jQuery(".mec_bfixed_fields_options_container").sortable( 1311 { 1312 handle: '.mec_bfixed_field_option_sort' 1313 }); 1314 } 1315} 1316 1317function mec_bfixed_fields_option_remove(field_key, key) 1318{ 1319 jQuery("#mec_bfixed_fields_option_"+field_key+"_"+key).remove(); 1320} 1321 1322function mec_bfixed_fields_remove(key) 1323{ 1324 jQuery("#mec_bfixed_fields_"+key).remove(); 1325} 1326 1327function mec_additional_organizers_listeners() 1328{ 1329 jQuery('#mec_additional_organizers_add').off('click').on('click', function() 1330 { 1331 var value = jQuery('.mec-additional-organizers select').val(); 1332 console.log(value); 1333 if (!value) return; 1334 1335 var text = jQuery('.mec-additional-organizers select option:selected').text(); 1336 1337 var sortLabel = jQuery(this).data('sort-label'); 1338 var removeLabel = jQuery(this).data('remove-label'); 1339 1340 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>'); 1341 1342 mec_additional_organizers_listeners(); 1343 }); 1344 1345 if(typeof jQuery.fn.sortable !== 'undefined') 1346 { 1347 jQuery(".mec-additional-organizers-list").sortable( 1348 { 1349 handle: '.mec-additional-organizer-sort' 1350 }); 1351 } 1352} 1353 1354function mec_additional_organizers_remove(element) 1355{ 1356 jQuery(element).parent().remove(); 1357} 1358 1359function mec_faq_remove(key) 1360{ 1361 jQuery("#mec_faq_row"+key).remove(); 1362} 1363 1364jQuery(document).on('focus', '.mec_date_picker', function () 1365{ 1366 if (!jQuery(this).hasClass('hasDatepicker')) 1367 { 1368 jQuery(this).datepicker({ 1369 changeYear: true, 1370 changeMonth: true, 1371 dateFormat: 'yy-mm-dd', 1372 gotoCurrent: true, 1373 yearRange: 'c-3:c+5', 1374 }); 1375 } 1376});
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.