Files
old-new-wiaas/backend/wp-content/plugins/woocommerce-gateway-paypal-express-checkout/assets/js/wc-gateway-ppec-generate-cart.js
2018-06-14 16:49:28 +02:00

92 lines
2.1 KiB
JavaScript

/* global wc_ppec_context */
;(function( $, window, document ) {
'use strict';
var button_enabled = true;
var toggle_button_availability = function( available ) {
if ( available ) {
button_enabled = true;
$( '#woo_pp_ec_button_product' ).css( {
'cursor': '',
'-webkit-filter': '', // Safari 6.0 - 9.0
'filter': '',
} );
} else {
button_enabled = false;
$( '#woo_pp_ec_button_product' ).css( {
'cursor': 'not-allowed',
'-webkit-filter': 'grayscale( 100% )', // Safari 6.0 - 9.0
'filter': 'grayscale( 100% )',
} );
}
}
var get_attributes = function() {
var select = $( '.variations_form' ).find( '.variations select' ),
data = {},
count = 0,
chosen = 0;
select.each( function() {
var attribute_name = $( this ).data( 'attribute_name' ) || $( this ).attr( 'name' );
var value = $( this ).val() || '';
if ( value.length > 0 ) {
chosen++;
}
count++;
data[ attribute_name ] = value;
} );
return {
'count' : count,
'chosenCount': chosen,
'data' : data
};
};
// It's a variations form, button availability should depend on its events
if ( $( '.variations_form' ).length ) {
toggle_button_availability( false );
$( '.variations_form' )
.on( 'show_variation', function( event, form, purchasable ) {
toggle_button_availability( purchasable );
} )
.on( 'hide_variation', function() {
toggle_button_availability( false );
} );
}
$( '#woo_pp_ec_button_product' ).click( function( event ) {
event.preventDefault();
if ( ! button_enabled ) {
return;
}
toggle_button_availability( false );
var data = {
'nonce': wc_ppec_context.generate_cart_nonce,
'qty': $( '.quantity .qty' ).val(),
'attributes': $( '.variations_form' ).length ? get_attributes().data : [],
'add-to-cart': $( '[name=add-to-cart]' ).val(),
};
var href = $(this).attr( 'href' );
$.ajax( {
type: 'POST',
data: data,
url: wc_ppec_context.ajaxurl,
success: function( response ) {
window.location.href = href;
}
} );
} );
})( jQuery, window, document );