334 lines
11 KiB
JavaScript
334 lines
11 KiB
JavaScript
jQuery( function($){
|
|
|
|
var variation_sortable_options = {
|
|
items:'.woocommerce_variation',
|
|
cursor:'move',
|
|
axis:'y',
|
|
handle: 'h3',
|
|
scrollSensitivity:40,
|
|
forcePlaceholderSize: true,
|
|
helper: 'clone',
|
|
opacity: 0.65,
|
|
placeholder: 'wc-metabox-sortable-placeholder',
|
|
start:function(event,ui){
|
|
ui.item.css('background-color','#f6f6f6');
|
|
},
|
|
stop:function(event,ui){
|
|
ui.item.removeAttr('style');
|
|
variation_row_indexes();
|
|
}
|
|
};
|
|
|
|
// Add a variation
|
|
jQuery('#variable_product_options').on('click', 'button.add_variation', function(){
|
|
|
|
jQuery('.woocommerce_variations').block({ message: null, overlayCSS: { background: '#fff url(' + woocommerce_admin_meta_boxes_variations.plugin_url + '/assets/images/ajax-loader.gif) no-repeat center', opacity: 0.6 } });
|
|
|
|
var loop = jQuery('.woocommerce_variation').size();
|
|
|
|
var data = {
|
|
action: 'woocommerce_add_variation',
|
|
post_id: woocommerce_admin_meta_boxes_variations.post_id,
|
|
loop: loop,
|
|
security: woocommerce_admin_meta_boxes_variations.add_variation_nonce
|
|
};
|
|
|
|
jQuery.post( woocommerce_admin_meta_boxes_variations.ajax_url, data, function(response) {
|
|
|
|
jQuery('.woocommerce_variations').append( response );
|
|
|
|
jQuery(".tips").tipTip({
|
|
'attribute' : 'data-tip',
|
|
'fadeIn' : 50,
|
|
'fadeOut' : 50
|
|
});
|
|
|
|
jQuery('input.variable_is_downloadable, input.variable_is_virtual').change();
|
|
|
|
jQuery('.woocommerce_variations').unblock();
|
|
jQuery('#variable_product_options').trigger('woocommerce_variations_added');
|
|
});
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
jQuery('#variable_product_options').on('click', 'button.link_all_variations', function() {
|
|
|
|
var answer = confirm( woocommerce_admin_meta_boxes_variations.i18n_link_all_variations );
|
|
|
|
if (answer) {
|
|
|
|
jQuery('#variable_product_options').block({ message: null, overlayCSS: { background: '#fff url(' + woocommerce_admin_meta_boxes_variations.plugin_url + '/assets/images/ajax-loader.gif) no-repeat center', opacity: 0.6 } });
|
|
|
|
var data = {
|
|
action: 'woocommerce_link_all_variations',
|
|
post_id: woocommerce_admin_meta_boxes_variations.post_id,
|
|
security: woocommerce_admin_meta_boxes_variations.link_variation_nonce
|
|
};
|
|
|
|
jQuery.post( woocommerce_admin_meta_boxes_variations.ajax_url, data, function(response) {
|
|
|
|
var count = parseInt( response );
|
|
|
|
if (count==1) {
|
|
alert( count + ' ' + woocommerce_admin_meta_boxes_variations.i18n_variation_added );
|
|
} else if (count==0 || count>1) {
|
|
alert( count + ' ' + woocommerce_admin_meta_boxes_variations.i18n_variations_added );
|
|
} else {
|
|
alert( woocommerce_admin_meta_boxes_variations.i18n_no_variations_added );
|
|
}
|
|
|
|
if (count>0) {
|
|
var this_page = window.location.toString();
|
|
|
|
this_page = this_page.replace( 'post-new.php?', 'post.php?post=' + woocommerce_admin_meta_boxes_variations.post_id + '&action=edit&' );
|
|
|
|
$('#variable_product_options').load( this_page + ' #variable_product_options_inner', function() {
|
|
$('#variable_product_options').unblock();
|
|
jQuery('#variable_product_options').trigger('woocommerce_variations_added');
|
|
} );
|
|
} else {
|
|
$('#variable_product_options').unblock();
|
|
}
|
|
});
|
|
}
|
|
return false;
|
|
});
|
|
|
|
jQuery('#variable_product_options').on('click', 'button.remove_variation', function(e){
|
|
e.preventDefault();
|
|
var answer = confirm( woocommerce_admin_meta_boxes_variations.i18n_remove_variation );
|
|
if (answer){
|
|
|
|
var el = jQuery(this).parent().parent();
|
|
|
|
var variation = jQuery(this).attr('rel');
|
|
|
|
if (variation>0) {
|
|
|
|
jQuery(el).block({ message: null, overlayCSS: { background: '#fff url(' + woocommerce_admin_meta_boxes_variations.plugin_url + '/assets/images/ajax-loader.gif) no-repeat center', opacity: 0.6 } });
|
|
|
|
var data = {
|
|
action: 'woocommerce_remove_variation',
|
|
variation_id: variation,
|
|
security: woocommerce_admin_meta_boxes_variations.delete_variation_nonce
|
|
};
|
|
|
|
jQuery.post(woocommerce_admin_meta_boxes_variations.ajax_url, data, function(response) {
|
|
// Success
|
|
jQuery(el).fadeOut('300', function(){
|
|
jQuery(el).remove();
|
|
});
|
|
});
|
|
|
|
} else {
|
|
jQuery(el).fadeOut('300', function(){
|
|
jQuery(el).remove();
|
|
});
|
|
}
|
|
|
|
}
|
|
return false;
|
|
});
|
|
|
|
jQuery('.wc-metaboxes-wrapper').on('click', 'a.bulk_edit', function(event){
|
|
var bulk_edit = jQuery('select#field_to_edit').val();
|
|
|
|
switch( bulk_edit ) {
|
|
case 'toggle_enabled':
|
|
var checkbox = jQuery('input[name^="variable_enabled"]');
|
|
checkbox.attr('checked', !checkbox.attr('checked'));
|
|
break;
|
|
case 'toggle_downloadable':
|
|
var checkbox = jQuery('input[name^="variable_is_downloadable"]');
|
|
checkbox.attr('checked', !checkbox.attr('checked'));
|
|
jQuery('input.variable_is_downloadable').change();
|
|
break;
|
|
case 'toggle_virtual':
|
|
var checkbox = jQuery('input[name^="variable_is_virtual"]');
|
|
checkbox.attr('checked', !checkbox.attr('checked'));
|
|
jQuery('input.variable_is_virtual').change();
|
|
break;
|
|
case 'delete_all':
|
|
var answer = confirm( woocommerce_admin_meta_boxes_variations.i18n_delete_all_variations );
|
|
|
|
if (answer){
|
|
|
|
var answer = confirm( woocommerce_admin_meta_boxes_variations.i18n_last_warning );
|
|
|
|
if (answer) {
|
|
|
|
var variation_ids = [];
|
|
|
|
jQuery('.woocommerce_variations .woocommerce_variation').block({ message: null, overlayCSS: { background: '#fff url(' + woocommerce_admin_meta_boxes_variations.plugin_url + '/assets/images/ajax-loader.gif) no-repeat center', opacity: 0.6 } });
|
|
|
|
jQuery('.woocommerce_variations .woocommerce_variation .remove_variation').each(function(){
|
|
|
|
var variation = jQuery(this).attr('rel');
|
|
if (variation>0) {
|
|
variation_ids.push(variation);
|
|
}
|
|
});
|
|
|
|
var data = {
|
|
action: 'woocommerce_remove_variations',
|
|
variation_ids: variation_ids,
|
|
security: woocommerce_admin_meta_boxes_variations.delete_variations_nonce
|
|
};
|
|
|
|
jQuery.post(woocommerce_admin_meta_boxes_variations.ajax_url, data, function(response) {
|
|
jQuery('.woocommerce_variations .woocommerce_variation').fadeOut('300', function(){
|
|
jQuery('.woocommerce_variations .woocommerce_variation').remove();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
break;
|
|
case 'variable_regular_price_increase':
|
|
case 'variable_regular_price_decrease':
|
|
case 'variable_sale_price_increase':
|
|
case 'variable_sale_price_decrease':
|
|
if ( bulk_edit.lastIndexOf( 'variable_regular_price', 0 ) === 0 )
|
|
var edit_field = 'variable_regular_price';
|
|
else
|
|
var edit_field = 'variable_sale_price';
|
|
|
|
var value = prompt( woocommerce_admin_meta_boxes_variations.i18n_enter_a_value_fixed_or_percent );
|
|
|
|
jQuery( ':input[name^="' + edit_field + '["]').each(function() {
|
|
var current_value = Number( jQuery(this).val() );
|
|
|
|
if ( value.indexOf("%") >= 0 )
|
|
value = Number( ( Number( current_value ) / 100 ) * Number( value.replace(/\%/, "" ) ) );
|
|
else
|
|
value = Number( value );
|
|
|
|
if ( bulk_edit.indexOf( "increase" ) != -1 )
|
|
var new_value = current_value + value;
|
|
else
|
|
var new_value = current_value - value;
|
|
|
|
jQuery(this).val( new_value ).change();
|
|
});
|
|
break;
|
|
case 'variable_regular_price' :
|
|
case 'variable_sale_price' :
|
|
case 'variable_stock' :
|
|
case 'variable_weight' :
|
|
case 'variable_length' :
|
|
case 'variable_width' :
|
|
case 'variable_height' :
|
|
case 'variable_download_limit' :
|
|
case 'variable_download_expiry' :
|
|
var value = prompt( woocommerce_admin_meta_boxes_variations.i18n_enter_a_value );
|
|
|
|
jQuery( ':input[name^="' + bulk_edit + '["]').val( value ).change();
|
|
break;
|
|
default:
|
|
jQuery('select#field_to_edit').trigger(bulk_edit);
|
|
break;
|
|
|
|
}
|
|
});
|
|
|
|
jQuery('#variable_product_options').on('change', 'input.variable_is_downloadable', function(){
|
|
|
|
jQuery(this).closest('.woocommerce_variation').find('.show_if_variation_downloadable').hide();
|
|
|
|
if (jQuery(this).is(':checked')) {
|
|
jQuery(this).closest('.woocommerce_variation').find('.show_if_variation_downloadable').show();
|
|
}
|
|
|
|
});
|
|
|
|
jQuery('#variable_product_options').on('change', 'input.variable_is_virtual', function(){
|
|
|
|
jQuery(this).closest('.woocommerce_variation').find('.hide_if_variation_virtual').show();
|
|
|
|
if (jQuery(this).is(':checked')) {
|
|
jQuery(this).closest('.woocommerce_variation').find('.hide_if_variation_virtual').hide();
|
|
}
|
|
|
|
});
|
|
|
|
jQuery('input.variable_is_downloadable, input.variable_is_virtual').change();
|
|
|
|
// Ordering
|
|
$('#variable_product_options').on( 'woocommerce_variations_added', function() {
|
|
$('.woocommerce_variations').sortable( variation_sortable_options );
|
|
} );
|
|
|
|
$('.woocommerce_variations').sortable( variation_sortable_options );
|
|
|
|
function variation_row_indexes() {
|
|
$('.woocommerce_variations .woocommerce_variation').each(function(index, el){
|
|
$('.variation_menu_order', el).val( parseInt( $(el).index('.woocommerce_variations .woocommerce_variation') ) );
|
|
});
|
|
};
|
|
|
|
// Uploader
|
|
var variable_image_frame;
|
|
var setting_variation_image_id;
|
|
var setting_variation_image;
|
|
var wp_media_post_id = wp.media.model.settings.post.id;
|
|
|
|
jQuery('#variable_product_options').on('click', '.upload_image_button', function( event ) {
|
|
|
|
var $button = jQuery( this );
|
|
var post_id = $button.attr('rel');
|
|
var $parent = $button.closest('.upload_image');
|
|
setting_variation_image = $parent;
|
|
setting_variation_image_id = post_id;
|
|
|
|
event.preventDefault();
|
|
|
|
if ( $button.is('.remove') ) {
|
|
|
|
setting_variation_image.find( '.upload_image_id' ).val( '' );
|
|
setting_variation_image.find( 'img' ).attr( 'src', woocommerce_admin_meta_boxes_variations.woocommerce_placeholder_img_src );
|
|
setting_variation_image.find( '.upload_image_button' ).removeClass( 'remove' );
|
|
|
|
} else {
|
|
|
|
// If the media frame already exists, reopen it.
|
|
if ( variable_image_frame ) {
|
|
variable_image_frame.uploader.uploader.param( 'post_id', setting_variation_image_id );
|
|
variable_image_frame.open();
|
|
return;
|
|
} else {
|
|
wp.media.model.settings.post.id = setting_variation_image_id;
|
|
}
|
|
|
|
// Create the media frame.
|
|
variable_image_frame = wp.media.frames.variable_image = wp.media({
|
|
// Set the title of the modal.
|
|
title: woocommerce_admin_meta_boxes_variations.i18n_choose_image,
|
|
button: {
|
|
text: woocommerce_admin_meta_boxes_variations.i18n_set_image
|
|
}
|
|
});
|
|
|
|
// When an image is selected, run a callback.
|
|
variable_image_frame.on( 'select', function() {
|
|
|
|
attachment = variable_image_frame.state().get('selection').first().toJSON();
|
|
|
|
setting_variation_image.find( '.upload_image_id' ).val( attachment.id );
|
|
setting_variation_image.find( '.upload_image_button' ).addClass( 'remove' );
|
|
setting_variation_image.find( 'img' ).attr( 'src', attachment.url );
|
|
|
|
wp.media.model.settings.post.id = wp_media_post_id;
|
|
});
|
|
|
|
// Finally, open the modal.
|
|
variable_image_frame.open();
|
|
}
|
|
});
|
|
|
|
// Restore ID
|
|
jQuery('a.add_media').on('click', function() {
|
|
wp.media.model.settings.post.id = wp_media_post_id;
|
|
} );
|
|
|
|
}); |