Created new js classes for variations media and actions
This commit is contained in:
parent
de01133142
commit
b819326b2a
|
@ -1,6 +1,6 @@
|
||||||
/* global wp, woocommerce_admin_meta_boxes_variations, woocommerce_admin, woocommerce_admin_meta_boxes, accounting */
|
/* global wp, woocommerce_admin_meta_boxes_variations, woocommerce_admin, woocommerce_admin_meta_boxes, accounting */
|
||||||
/*jshint devel: true */
|
/*jshint devel: true */
|
||||||
jQuery( function ( $ ) {
|
jQuery( function( $ ) {
|
||||||
|
|
||||||
$( '.wc-metaboxes-wrapper' ).on( 'click', 'a.bulk_edit', function () {
|
$( '.wc-metaboxes-wrapper' ).on( 'click', 'a.bulk_edit', function () {
|
||||||
var bulk_edit = $( 'select#field_to_edit' ).val(),
|
var bulk_edit = $( 'select#field_to_edit' ).val(),
|
||||||
|
@ -154,102 +154,172 @@ jQuery( function ( $ ) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$( '#variable_product_options' ).on( 'change', 'input.variable_is_downloadable', function () {
|
/**
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_downloadable' ).hide();
|
* Variations actions
|
||||||
|
*/
|
||||||
|
var wc_meta_boxes_product_variations_actions = {
|
||||||
|
|
||||||
if ( $( this ).is( ':checked' ) ) {
|
/**
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_downloadable' ).show();
|
* Initialize variations actions
|
||||||
}
|
*/
|
||||||
});
|
init: function() {
|
||||||
|
$( '#variable_product_options' )
|
||||||
|
.on( 'change', 'input.variable_is_downloadable', this.variable_is_downloadable )
|
||||||
|
.on( 'change', 'input.variable_is_virtual', this.variable_is_virtual )
|
||||||
|
.on( 'change', 'input.variable_manage_stock', this.variable_manage_stock );
|
||||||
|
|
||||||
$( '#variable_product_options' ).on( 'change', 'input.variable_is_virtual', function () {
|
$( 'input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock' ).change();
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.hide_if_variation_virtual' ).show();
|
|
||||||
|
|
||||||
if ( $( this ).is( ':checked' ) ) {
|
$( 'a.add_media' ).on( 'click', this.restore_media_post_id );
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.hide_if_variation_virtual' ).hide();
|
},
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$( '#variable_product_options' ).on( 'change', 'input.variable_manage_stock', function () {
|
/**
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_manage_stock' ).hide();
|
* Check if variation is downloadable and show/hide elements
|
||||||
|
*/
|
||||||
|
variable_is_downloadable: function() {
|
||||||
|
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_downloadable' ).hide();
|
||||||
|
|
||||||
if ( $( this ).is( ':checked' ) ) {
|
if ( $( this ).is( ':checked' ) ) {
|
||||||
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_manage_stock' ).show();
|
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_downloadable' ).show();
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$( 'input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock' ).change();
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
$( '#variable_product_options' ).on( 'click', '.upload_image_button', function ( event ) {
|
|
||||||
|
|
||||||
var $button = $( 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' ).eq( 0 ).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({
|
* Check if variation is virtual and show/hide elements
|
||||||
// Set the title of the modal.
|
*/
|
||||||
title: woocommerce_admin_meta_boxes_variations.i18n_choose_image,
|
variable_is_virtual: function() {
|
||||||
button: {
|
$( this ).closest( '.woocommerce_variation' ).find( '.hide_if_variation_virtual' ).show();
|
||||||
text: woocommerce_admin_meta_boxes_variations.i18n_set_image
|
|
||||||
},
|
|
||||||
states : [
|
|
||||||
new wp.media.controller.Library({
|
|
||||||
title: woocommerce_admin_meta_boxes_variations.i18n_choose_image,
|
|
||||||
filterable : 'all'
|
|
||||||
})
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// When an image is selected, run a callback.
|
if ( $( this ).is( ':checked' ) ) {
|
||||||
variable_image_frame.on( 'select', function () {
|
$( this ).closest( '.woocommerce_variation' ).find( '.hide_if_variation_virtual' ).hide();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
var attachment = variable_image_frame.state().get( 'selection' ).first().toJSON(),
|
/**
|
||||||
url = attachment.sizes.thumbnail ? attachment.sizes.thumbnail.url : attachment.url;
|
* Check if variation manage stock and show/hide elements
|
||||||
|
*/
|
||||||
|
variable_manage_stock: function() {
|
||||||
|
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_manage_stock' ).hide();
|
||||||
|
|
||||||
setting_variation_image.find( '.upload_image_id' ).val( attachment.id );
|
if ( $( this ).is( ':checked' ) ) {
|
||||||
setting_variation_image.find( '.upload_image_button' ).addClass( 'remove' );
|
$( this ).closest( '.woocommerce_variation' ).find( '.show_if_variation_manage_stock' ).show();
|
||||||
setting_variation_image.find( 'img' ).eq( 0 ).attr( 'src', url );
|
}
|
||||||
|
|
||||||
wp.media.model.settings.post.id = wp_media_post_id;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Finally, open the modal.
|
|
||||||
variable_image_frame.open();
|
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Restore ID
|
/**
|
||||||
$( 'a.add_media' ).on( 'click', function() {
|
* Variations media actions
|
||||||
wp.media.model.settings.post.id = wp_media_post_id;
|
*/
|
||||||
});
|
var wc_meta_boxes_product_variations_media = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wp.media frame object
|
||||||
|
*
|
||||||
|
* @type {object}
|
||||||
|
*/
|
||||||
|
variable_image_frame: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variation image ID
|
||||||
|
*
|
||||||
|
* @type {int}
|
||||||
|
*/
|
||||||
|
setting_variation_image_id: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variation image object
|
||||||
|
*
|
||||||
|
* @type {object}
|
||||||
|
*/
|
||||||
|
setting_variation_image: null,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wp.media post ID
|
||||||
|
*
|
||||||
|
* @type {int}
|
||||||
|
*/
|
||||||
|
wp_media_post_id: wp.media.model.settings.post.id,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize media actions
|
||||||
|
*/
|
||||||
|
init: function() {
|
||||||
|
$( '#variable_product_options' ).on( 'click', '.upload_image_button', this.add_image );
|
||||||
|
$( 'a.add_media' ).on( 'click', this.restore_wp_media_post_id );
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Added new image
|
||||||
|
*
|
||||||
|
* @param {object} event
|
||||||
|
*/
|
||||||
|
add_image: function( event ) {
|
||||||
|
var $button = $( this ),
|
||||||
|
post_id = $button.attr( 'rel' ),
|
||||||
|
$parent = $button.closest( '.upload_image' );
|
||||||
|
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image = $parent;
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image_id = post_id;
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
if ( $button.is( '.remove' ) ) {
|
||||||
|
|
||||||
|
$( '.upload_image_id', wc_meta_boxes_product_variations_media.setting_variation_image ).val( '' ).change();
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image.find( 'img' ).eq( 0 ).attr( 'src', woocommerce_admin_meta_boxes_variations.woocommerce_placeholder_img_src );
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image.find( '.upload_image_button' ).removeClass( 'remove' );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// If the media frame already exists, reopen it.
|
||||||
|
if ( wc_meta_boxes_product_variations_media.variable_image_frame ) {
|
||||||
|
wc_meta_boxes_product_variations_media.variable_image_frame.uploader.uploader.param( 'post_id', wc_meta_boxes_product_variations_media.setting_variation_image_id );
|
||||||
|
wc_meta_boxes_product_variations_media.variable_image_frame.open();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
wp.media.model.settings.post.id = wc_meta_boxes_product_variations_media.setting_variation_image_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the media frame.
|
||||||
|
wc_meta_boxes_product_variations_media.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
|
||||||
|
},
|
||||||
|
states: [
|
||||||
|
new wp.media.controller.Library({
|
||||||
|
title: woocommerce_admin_meta_boxes_variations.i18n_choose_image,
|
||||||
|
filterable: 'all'
|
||||||
|
})
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
// When an image is selected, run a callback.
|
||||||
|
wc_meta_boxes_product_variations_media.variable_image_frame.on( 'select', function () {
|
||||||
|
|
||||||
|
var attachment = wc_meta_boxes_product_variations_media.variable_image_frame.state().get( 'selection' ).first().toJSON(),
|
||||||
|
url = attachment.sizes.thumbnail ? attachment.sizes.thumbnail.url : attachment.url;
|
||||||
|
|
||||||
|
$( '.upload_image_id', wc_meta_boxes_product_variations_media.setting_variation_image ).val( attachment.id ).change();
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image.find( '.upload_image_button' ).addClass( 'remove' );
|
||||||
|
wc_meta_boxes_product_variations_media.setting_variation_image.find( 'img' ).eq( 0 ).attr( 'src', url );
|
||||||
|
|
||||||
|
wp.media.model.settings.post.id = wc_meta_boxes_product_variations_media.wp_media_post_id;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Finally, open the modal.
|
||||||
|
wc_meta_boxes_product_variations_media.variable_image_frame.open();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restore wp.media post ID.
|
||||||
|
*/
|
||||||
|
restore_wp_media_post_id: function() {
|
||||||
|
wp.media.model.settings.post.id = wc_meta_boxes_product_variations_media.wp_media_post_id;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Product variations metabox ajax methods
|
* Product variations metabox ajax methods
|
||||||
|
@ -688,6 +758,8 @@ jQuery( function ( $ ) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wc_meta_boxes_product_variations_actions.init();
|
||||||
|
wc_meta_boxes_product_variations_media.init();
|
||||||
wc_meta_boxes_product_variations_ajax.init();
|
wc_meta_boxes_product_variations_ajax.init();
|
||||||
wc_meta_boxes_product_variations_pagenav.init();
|
wc_meta_boxes_product_variations_pagenav.init();
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue