| Current File : /home/bwalansa/www/wp-content/plugins/the-events-calendar/src/resources/js/tickets.js |
var ticketHeaderImage = window.ticketHeaderImage || {};
(function( window, $, undefined ) {
'use strict';
ticketHeaderImage = {
// Call this from the upload button to initiate the upload frame.
uploader: function() {
var frame = wp.media( {
title : HeaderImageData.title,
multiple: false,
library : { type: 'image' },
button : { text: HeaderImageData.button }
} );
// Handle results from media manager.
frame.on( 'close', function() {
var attachments = frame.state().get( 'selection' ).toJSON();
if ( attachments.length ) {
ticketHeaderImage.render( attachments[0] );
}
} );
frame.open();
return false;
},
// Output Image preview and populate widget form.
render : function( attachment ) {
$( '#tribe_ticket_header_preview' ).html( ticketHeaderImage.imgHTML( attachment ) );
$( '#tribe_ticket_header_image_id' ).val( attachment.id );
$( '#tribe_ticket_header_remove' ).show();
},
// Render html for the image.
imgHTML : function( attachment ) {
var img_html = '<img src="' + attachment.url + '" ';
img_html += 'width="' + attachment.width + '" ';
img_html += 'height="' + attachment.height + '" ';
img_html += '/>';
return img_html;
}
};
$( document ).ready( function() {
var $event_pickers = $( '#tribe-event-datepickers' );
var startofweek = 0;
if ( $event_pickers.length ) {
startofweek = $event_pickers.data( 'startofweek' );
}
var datepickerOpts = {
dateFormat : 'yy-mm-dd',
showAnim : 'fadeIn',
changeMonth : true,
changeYear : true,
numberOfMonths : 3,
firstDay : startofweek,
showButtonPanel: true,
onChange : function() {
},
onSelect : function( dateText, inst ) {
var the_date = $.datepicker.parseDate( 'yy-mm-dd', dateText );
if ( inst.id === 'ticket_start_date' ) {
$( '#ticket_end_date' ).datepicker( 'option', 'minDate', the_date );
if ( the_date ) {
$( '.ticket_start_time' ).show();
}
else {
$( '.ticket_start_time' ).hide();
}
}
else {
$( '#ticket_start_date' ).datepicker( 'option', 'maxDate', the_date );
if ( the_date ) {
$( '.ticket_end_time' ).show();
}
else {
$( '.ticket_end_time' ).hide();
}
}
}
};
$( '#ticket_start_date' ).datepicker( datepickerOpts ).keyup( function( e ) {
if ( e.keyCode === 8 || e.keyCode === 46 ) {
$.datepicker._clearDate( this );
}
} );
$( '#ticket_end_date' ).datepicker( datepickerOpts ).keyup( function( e ) {
if ( e.keyCode === 8 || e.keyCode === 46 ) {
$.datepicker._clearDate( this );
}
} );
/* Show the advanced metabox for the selected provider and hide the others on selection change */
$( 'input[name=ticket_provider]:radio' ).change( function() {
$( 'tr.ticket_advanced' ).hide();
$( 'tr.ticket_advanced_' + this.value ).show();
} );
/* Show the advanced metabox for the selected provider and hide the others at ready */
$( 'input[name=ticket_provider]:checked' ).each( function() {
$( 'tr.ticket_advanced' ).hide();
$( 'tr.ticket_advanced_' + this.value ).show();
} );
/* "Add a ticket" link action */
$( 'a#ticket_form_toggle' ).click( function( e ) {
$( 'h4.ticket_form_title_edit' ).hide();
$( 'h4.ticket_form_title_add' ).show();
$( this ).hide();
ticket_clear_form();
$( '#ticket_form' ).show();
$( 'html, body' ).animate( {
scrollTop: $( '#ticket_form_table' ).offset().top - 50
}, 500 );
e.preventDefault();
} );
/* "Cancel" button action */
$( '#ticket_form_cancel' ).click( function() {
ticket_clear_form();
$( 'html, body' ).animate( {
scrollTop: $( '#event_tickets' ).offset().top - 50
}, 500 );
} );
var $tribetickets = $('#tribetickets');
/* "Save Ticket" button action */
$( '#ticket_form_save' ).click( function( e ) {
$tribetickets.trigger( 'save-ticket.tec.tribe', e );
tickets_start_spin();
var params = {
action : 'tribe-ticket-add-' + $( 'input[name=ticket_provider]:checked' ).val(),
formdata: $( '.ticket_field' ).serialize(),
post_ID : $( '#post_ID' ).val(),
nonce : TribeTickets.add_ticket_nonce
};
$.post(
ajaxurl,
params,
function( response ) {
$tribetickets.trigger( 'saved-ticket.tec.tribe', response );
if ( response.success ) {
ticket_clear_form();
$( 'td.ticket_list_container' ).empty().html( response.data );
$( '.ticket_time' ).hide();
}
},
'json'
).complete( function() {
$( 'html, body' ).animate( {
scrollTop: $( '#event_tickets' ).offset().top - 50
}, 500 );
tickets_stop_spin();
} );
} );
/* "Delete Ticket" link action */
$tribetickets.on( 'click', '.ticket_delete', function( e ) {
e.preventDefault();
$tribetickets.trigger( 'delete-ticket.tec.tribe', e );
tickets_start_spin();
var params = {
action : 'tribe-ticket-delete-' + $( this ).attr( 'attr-provider' ),
post_ID : $( '#post_ID' ).val(),
ticket_id: $( this ).attr( 'attr-ticket-id' ),
nonce : TribeTickets.remove_ticket_nonce
};
$.post(
ajaxurl,
params,
function( response ) {
$tribetickets.trigger( 'deleted-ticket.tec.tribe', response );
if ( response.success ) {
ticket_clear_form();
$( 'td.ticket_list_container' ).empty().html( response.data );
}
},
'json'
).complete( function() {
tickets_stop_spin();
} );
} );
/* "Edit Ticket" link action */
$tribetickets
.on( 'click', '.ticket_edit', function( e ) {
e.preventDefault();
$( 'h4.ticket_form_title_edit' ).show();
$( 'h4.ticket_form_title_add' ).hide();
tickets_start_spin();
var params = {
action : 'tribe-ticket-edit-' + $( this ).attr( 'attr-provider' ),
post_ID : $( '#post_ID' ).val(),
ticket_id: $( this ).attr( 'attr-ticket-id' ),
nonce : TribeTickets.edit_ticket_nonce
};
$.post(
ajaxurl,
params,
function( response ) {
ticket_clear_form();
$tribetickets.trigger( 'edit-ticket.tec.tribe', response );
var regularPrice = response.data.price;
var salePrice = regularPrice;
var onSale = false;
if ( 'undefined' !== typeof response.data.on_sale && response.data.on_sale ) {
onSale = true;
regularPrice = response.data.regular_price;
}
$( '#ticket_id' ).val( response.data.ID );
$( '#ticket_name' ).val( response.data.name );
$( '#ticket_description' ).val( response.data.description );
var $ticket_price = $( document.getElementById( 'ticket_price' ) );
$ticket_price.val( regularPrice );
if ( 'undefined' !== typeof response.data.disallow_update_price_message ) {
$ticket_price.siblings( '.no-update-message' ).html( response.data.disallow_update_price_message );
} else {
$ticket_price.siblings( '.no-update-message' ).html( '' );
}
if ( 'undefined' !== typeof response.data.can_update_price && ! response.data.can_update_price ) {
$ticket_price.prop( 'disabled', 'disabled' );
$ticket_price.siblings( '.description' ).hide();
$ticket_price.siblings( '.no-update-message' ).show();
} else {
$ticket_price.removeProp( 'disabled' );
$ticket_price.siblings( '.description' ).show();
$ticket_price.siblings( '.no-update-message' ).hide();
}
$( '#ticket_sale_price' ).val( salePrice );
if ( onSale ) {
$( '.ticket.sale_price' ).show();
}
var start_date = response.data.start_date.substring( 0, 10 );
var end_date = response.data.end_date.substring( 0, 10 );
$( '#ticket_start_date' ).val( start_date );
$( '#ticket_end_date' ).val( end_date );
var $start_meridian = $( document.getElementById( 'ticket_start_meridian' ) ),
$end_meridian = $( document.getElementById( 'ticket_end_meridian' ) );
if ( response.data.start_date ) {
var start_hour = parseInt( response.data.start_date.substring( 11, 13 ) );
var start_meridian = 'am';
if ( start_hour > 12 && $start_meridian.length ) {
start_meridian = 'pm';
start_hour = parseInt( start_hour ) - 12;
start_hour = ( '0' + start_hour ).slice( - 2 );
}
if ( 12 === start_hour ) {
start_meridian = 'pm';
}
if ( 0 === start_hour && 'am' === start_meridian ) {
start_hour = 12;
}
// Return the start hour to a 0-padded string
start_hour = start_hour.toString();
if ( 1 === start_hour.length ) {
start_hour = '0' + start_hour;
}
$( '#ticket_start_hour' ).val( start_hour );
$( '#ticket_start_meridian' ).val( start_meridian );
$( '.ticket_start_time' ).show();
}
if ( response.data.end_date ) {
var end_hour = parseInt( response.data.end_date.substring( 11, 13 ) );
var end_meridian = 'am';
if ( end_hour > 12 && $end_meridian.length ) {
end_meridian = 'pm';
end_hour = parseInt( end_hour ) - 12;
end_hour = ( '0' + end_hour ).slice( - 2 );
}
if ( end_hour === 12 ) {
end_meridian = 'pm';
}
if ( 0 === end_hour && 'am' === end_meridian ) {
end_hour = 12;
}
// Return the end hour to a 0-padded string
end_hour = end_hour.toString();
if ( 1 === end_hour.length ) {
end_hour = '0' + end_hour;
}
$( '#ticket_end_hour' ).val( end_hour );
$( '#ticket_end_meridian' ).val( end_meridian );
$( '#ticket_start_minute' ).val( response.data.start_date.substring( 14, 16 ) );
$( '#ticket_end_minute' ).val( response.data.end_date.substring( 14, 16 ) );
$( '.ticket_end_time' ).show();
}
$( 'tr.ticket_advanced_' + response.data.provider_class ).remove();
$( 'tr.ticket.bottom' ).before( response.data.advanced_fields );
$( 'input:radio[name=ticket_provider]' ).filter( '[value=' + response.data.provider_class + ']' ).click();
$( 'a#ticket_form_toggle' ).hide();
$( '#ticket_form' ).show();
},
'json'
).complete( function() {
$( 'html, body' ).animate( {
scrollTop: $( '#ticket_form_table' ).offset().top - 50
}, 500 );
tickets_stop_spin();
} );
} )
.on( 'click', '#tribe_ticket_header_image', function( e ) {
e.preventDefault();
ticketHeaderImage.uploader( '', '' );
} );
var $remove = $( '#tribe_ticket_header_remove' );
var $preview = $( '#tribe_ticket_header_preview' );
if ( $preview.find( 'img' ).length ) {
$remove.show();
}
$('body').on( 'click', '#tribe_ticket_header_remove', function( e ) {
e.preventDefault();
$preview.html( '' );
$remove.hide();
$( '#tribe_ticket_header_image_id' ).val( '' );
} );
/* Helper functions */
function ticket_clear_form() {
$( 'a#ticket_form_toggle' ).show();
$( '#ticket_form input:not(:button):not(:radio):not(:checkbox)' ).val( '' );
$( '#ticket_form input:checkbox' ).attr( 'checked', false );
// Reset the min/max datepicker settings so that they aren't inherited by the next ticket that is edited
$( '#ticket_start_date' ).datepicker( 'option', 'maxDate', null );
$( '#ticket_end_date' ).datepicker( 'option', 'minDate', null );
$( '.ticket_start_time' ).hide();
$( '.ticket_end_time' ).hide();
$( '.ticket.sale_price' ).hide();
var $ticket_price = $( document.getElementById( 'ticket_price' ) );
var $no_update_message = $ticket_price.siblings( '.no-update-message' );
$no_update_message.html( '' ).hide();
$ticket_price.removeProp( 'disabled' );
$ticket_price.siblings( '.description' ).show();
$( '#ticket_form textarea' ).val( '' );
$( '#ticket_form' ).hide();
}
function tickets_start_spin() {
$( '#event_tickets' ).css( 'opacity', '0.5' );
$( '#tribe-loading' ).show();
}
function tickets_stop_spin() {
$( '#event_tickets' ).css( 'opacity', '1' );
$( '#tribe-loading' ).hide();
}
function tribe_fix_image_width() {
if ( $tribetickets.width() < $tiximg.width() ) {
$tiximg.css( 'width', '95%' );
}
}
if ( $( '#tribe_ticket_header_preview img' ).length ) {
var $tiximg = $( '#tribe_ticket_header_preview img' );
$tiximg.removeAttr( 'width' ).removeAttr( 'height' );
tribe_fix_image_width();
}
} );
})( window, jQuery );