Enabled product bundles
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
/**
|
||||
* Booster for WooCommerce - Variations Radio Buttons
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @author Algoritmika Ltd.
|
||||
*/
|
||||
|
||||
/**
|
||||
* maybe_hide_unavailable.
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @since 2.9.0
|
||||
*/
|
||||
function maybe_hide_unavailable(variation) {
|
||||
if ( ! variation.is_purchasable || ! variation.is_in_stock || ! variation.variation_is_visible ) {
|
||||
jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-selection-needed' ).addClass( 'disabled wc-variation-is-unavailable' );
|
||||
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* process_variations.
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @since 2.9.0
|
||||
*/
|
||||
function process_variations(variation_id) {
|
||||
var data_product_variations = jQuery.parseJSON(jQuery("form.variations_form.cart").attr('data-product_variations'));
|
||||
data_product_variations.forEach(function(variation){
|
||||
if(variation_id == variation.variation_id){
|
||||
maybe_hide_unavailable(variation);
|
||||
jQuery("form.variations_form.cart").wc_variations_image_update(variation);
|
||||
jQuery("div.woocommerce-variation-price").html(variation.price_html);
|
||||
jQuery("div.woocommerce-variation-availability").html(variation.availability_html);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* hide_all.
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @since 2.9.0
|
||||
*/
|
||||
function hide_all() {
|
||||
jQuery("div.woocommerce-variation-availability").hide();
|
||||
jQuery("div.woocommerce-variation-price").hide();
|
||||
jQuery( '.single_add_to_cart_button' ).removeClass( 'wc-variation-is-unavailable' ).addClass( 'disabled wc-variation-selection-needed' );
|
||||
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-enabled' ).addClass( 'woocommerce-variation-add-to-cart-disabled' );
|
||||
}
|
||||
|
||||
/**
|
||||
* show_all.
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @since 2.9.0
|
||||
*/
|
||||
function show_all() {
|
||||
jQuery("div.woocommerce-variation-availability").show();
|
||||
jQuery("div.woocommerce-variation-price").show();
|
||||
jQuery( '.single_add_to_cart_button' ).removeClass( 'disabled wc-variation-selection-needed wc-variation-is-unavailable' );
|
||||
jQuery( '.woocommerce-variation-add-to-cart' ).removeClass( 'woocommerce-variation-add-to-cart-disabled' ).addClass( 'woocommerce-variation-add-to-cart-enabled' );
|
||||
}
|
||||
|
||||
/**
|
||||
* fill_values.
|
||||
*
|
||||
* @version 2.9.0
|
||||
* @since 2.9.0
|
||||
*/
|
||||
function fill_values(variation_id,radio_element) {
|
||||
jQuery("input:hidden[name='variation_id']").val(variation_id);
|
||||
jQuery(radio_element.attributes).each(
|
||||
function(i, attribute){
|
||||
if(attribute.name.match("^attribute_")){
|
||||
jQuery("input:hidden[name='" + attribute.name + "']").val(attribute.value);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* document ready.
|
||||
*
|
||||
* @version 2.9.0
|
||||
*/
|
||||
jQuery(document).ready(function() {
|
||||
// Initial display
|
||||
jQuery("form.variations_form.cart").on('wc_variation_form',function(){
|
||||
if(jQuery("input:radio[name='wcj_variations']").is(':checked')){
|
||||
show_all();
|
||||
var checked_radio = jQuery("input:radio[name='wcj_variations']:checked");
|
||||
var variation_id = checked_radio.attr("variation_id");
|
||||
fill_values(variation_id, checked_radio[0]);
|
||||
process_variations(variation_id);
|
||||
} else {
|
||||
hide_all();
|
||||
}
|
||||
});
|
||||
// On change
|
||||
jQuery("input:radio[name='wcj_variations']").change(
|
||||
function(){
|
||||
show_all();
|
||||
var variation_id = jQuery(this).attr("variation_id");
|
||||
fill_values(variation_id, this);
|
||||
process_variations(variation_id);
|
||||
}
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user