2014-07-30 18:01:07 +00:00
/*global woocommerce_admin_meta_boxes */
jQuery ( function ( $ ) {
2014-07-08 13:14:29 +00:00
// Scroll to first checked category - https://github.com/scribu/wp-category-checklist-tree/blob/d1c3c1f449e1144542efa17dde84a9f52ade1739/category-checklist-tree.php
$ ( function ( ) {
$ ( '[id$="-all"] > ul.categorychecklist' ) . each ( function ( ) {
var $list = $ ( this ) ;
var $firstChecked = $list . find ( ':checked' ) . first ( ) ;
if ( ! $firstChecked . length )
return ;
var pos _first = $list . find ( 'input' ) . position ( ) . top ;
var pos _checked = $firstChecked . position ( ) . top ;
$list . closest ( '.tabs-panel' ) . scrollTop ( pos _checked - pos _first + 5 ) ;
} ) ;
} ) ;
// Prevent enter submitting post form
$ ( "#upsell_product_data" ) . bind ( "keypress" , function ( e ) {
if ( e . keyCode == 13 ) return false ;
} ) ;
// Type box
$ ( '.type_box' ) . appendTo ( '#woocommerce-product-data h3.hndle span' ) ;
$ ( function ( ) {
// Prevent inputs in meta box headings opening/closing contents
$ ( '#woocommerce-product-data h3.hndle' ) . unbind ( 'click.postboxes' ) ;
jQuery ( '#woocommerce-product-data' ) . on ( 'click' , 'h3.hndle' , function ( event ) {
// If the user clicks on some form input inside the h3 the box should not be toggled
if ( $ ( event . target ) . filter ( 'input, option, label, select' ) . length )
return ;
$ ( '#woocommerce-product-data' ) . toggleClass ( 'closed' ) ;
} ) ;
} ) ;
// Catalog Visibility
$ ( '#catalog-visibility .edit-catalog-visibility' ) . click ( function ( ) {
if ( $ ( '#catalog-visibility-select' ) . is ( ":hidden" ) ) {
$ ( '#catalog-visibility-select' ) . slideDown ( 'fast' ) ;
$ ( this ) . hide ( ) ;
}
return false ;
} ) ;
$ ( '#catalog-visibility .save-post-visibility' ) . click ( function ( ) {
$ ( '#catalog-visibility-select' ) . slideUp ( 'fast' ) ;
$ ( '#catalog-visibility .edit-catalog-visibility' ) . show ( ) ;
var value = $ ( 'input[name=_visibility]:checked' ) . val ( ) ;
var label = $ ( 'input[name=_visibility]:checked' ) . attr ( 'data-label' ) ;
if ( $ ( 'input[name=_featured]' ) . is ( ':checked' ) ) {
label = label + ', ' + woocommerce _admin _meta _boxes . featured _label
$ ( 'input[name=_featured]' ) . attr ( 'checked' , 'checked' ) ;
}
$ ( '#catalog-visibility-display' ) . text ( label ) ;
return false ;
} ) ;
$ ( '#catalog-visibility .cancel-post-visibility' ) . click ( function ( ) {
$ ( '#catalog-visibility-select' ) . slideUp ( 'fast' ) ;
$ ( '#catalog-visibility .edit-catalog-visibility' ) . show ( ) ;
var current _visibility = $ ( '#current_visibility' ) . val ( ) ;
var current _featured = $ ( '#current_featured' ) . val ( ) ;
$ ( 'input[name=_visibility]' ) . removeAttr ( 'checked' ) ;
$ ( 'input[name=_visibility][value=' + current _visibility + ']' ) . attr ( 'checked' , 'checked' ) ;
var label = $ ( 'input[name=_visibility]:checked' ) . attr ( 'data-label' ) ;
if ( current _featured == 'yes' ) {
label = label + ', ' + woocommerce _admin _meta _boxes . featured _label
$ ( 'input[name=_featured]' ) . attr ( 'checked' , 'checked' ) ;
} else {
$ ( 'input[name=_featured]' ) . removeAttr ( 'checked' ) ;
}
$ ( '#catalog-visibility-display' ) . text ( label ) ;
return false ;
} ) ;
// PRODUCT TYPE SPECIFIC OPTIONS
2014-07-30 18:01:07 +00:00
$ ( 'select#product-type' ) . change ( function ( ) {
2014-07-08 13:14:29 +00:00
// Get value
2014-07-30 18:01:07 +00:00
var select _val = $ ( this ) . val ( ) ;
2014-07-08 13:14:29 +00:00
2014-07-30 18:01:07 +00:00
if ( 'variable' === select _val ) {
$ ( 'input#_manage_stock' ) . change ( ) ;
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
} else if ( 'grouped' === select _val ) {
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
} else if ( 'external' === select _val ) {
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
2014-07-08 13:14:29 +00:00
}
show _and _hide _panels ( ) ;
2014-07-30 18:01:07 +00:00
$ ( 'ul.wc-tabs li:visible' ) . eq ( 0 ) . find ( 'a' ) . click ( ) ;
2014-07-08 13:14:29 +00:00
2014-07-30 18:01:07 +00:00
$ ( 'body' ) . trigger ( 'woocommerce-product-type-change' , select _val , $ ( this ) ) ;
2014-07-08 13:14:29 +00:00
} ) . change ( ) ;
2014-08-20 22:46:30 +00:00
$ ( 'body' ) . on ( 'woocommerce-product-type-change' , function ( e , select _val ) {
if ( 'variable' !== select _val && 0 < $ ( '#variable_product_options input[name^=variable_sku]' ) . length && $ ( 'body' ) . triggerHandler ( 'woocommerce-display-product-type-alert' , select _val ) !== false ) {
window . alert ( woocommerce _admin _meta _boxes . i18n _product _type _alert ) ;
}
} ) ;
2014-07-08 13:14:29 +00:00
$ ( 'input#_downloadable, input#_virtual' ) . change ( function ( ) {
show _and _hide _panels ( ) ;
} ) ;
function show _and _hide _panels ( ) {
var product _type = $ ( 'select#product-type' ) . val ( ) ;
var is _virtual = $ ( 'input#_virtual:checked' ) . size ( ) ;
var is _downloadable = $ ( 'input#_downloadable:checked' ) . size ( ) ;
// Hide/Show all with rules
var hide _classes = '.hide_if_downloadable, .hide_if_virtual' ;
var show _classes = '.show_if_downloadable, .show_if_virtual, .show_if_external' ;
$ . each ( woocommerce _admin _meta _boxes . product _types , function ( index , value ) {
hide _classes = hide _classes + ', .hide_if_' + value ;
show _classes = show _classes + ', .show_if_' + value ;
} ) ;
$ ( hide _classes ) . show ( ) ;
$ ( show _classes ) . hide ( ) ;
// Shows rules
if ( is _downloadable ) {
$ ( '.show_if_downloadable' ) . show ( ) ;
}
if ( is _virtual ) {
$ ( '.show_if_virtual' ) . show ( ) ;
}
$ ( '.show_if_' + product _type ) . show ( ) ;
// Hide rules
if ( is _downloadable ) {
$ ( '.hide_if_downloadable' ) . hide ( ) ;
}
if ( is _virtual ) {
$ ( '.hide_if_virtual' ) . hide ( ) ;
}
$ ( '.hide_if_' + product _type ) . hide ( ) ;
$ ( 'input#_manage_stock' ) . change ( ) ;
}
// Sale price schedule
$ ( '.sale_price_dates_fields' ) . each ( function ( ) {
var $these _sale _dates = $ ( this ) ;
var sale _schedule _set = false ;
var $wrap = $these _sale _dates . closest ( 'div, table' ) ;
$these _sale _dates . find ( 'input' ) . each ( function ( ) {
if ( $ ( this ) . val ( ) != '' )
sale _schedule _set = true ;
} ) ;
if ( sale _schedule _set ) {
$wrap . find ( '.sale_schedule' ) . hide ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . show ( ) ;
} else {
$wrap . find ( '.sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . hide ( ) ;
}
} ) ;
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.sale_schedule' , function ( ) {
var $wrap = $ ( this ) . closest ( 'div, table' ) ;
$ ( this ) . hide ( ) ;
$wrap . find ( '.cancel_sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . show ( ) ;
return false ;
} ) ;
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.cancel_sale_schedule' , function ( ) {
var $wrap = $ ( this ) . closest ( 'div, table' ) ;
$ ( this ) . hide ( ) ;
$wrap . find ( '.sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . hide ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . find ( 'input' ) . val ( '' ) ;
return false ;
} ) ;
// File inputs
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.downloadable_files a.insert' , function ( ) {
$ ( this ) . closest ( '.downloadable_files' ) . find ( 'tbody' ) . append ( $ ( this ) . data ( 'row' ) ) ;
return false ;
} ) ;
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.downloadable_files a.delete' , function ( ) {
$ ( this ) . closest ( 'tr' ) . remove ( ) ;
return false ;
} ) ;
// STOCK OPTIONS
$ ( 'input#_manage_stock' ) . change ( function ( ) {
if ( $ ( this ) . is ( ':checked' ) ) {
$ ( 'div.stock_fields' ) . show ( ) ;
} else {
$ ( 'div.stock_fields' ) . hide ( ) ;
}
} ) . change ( ) ;
// DATE PICKER FIELDS
var dates = $ ( ".sale_price_dates_fields input" ) . datepicker ( {
defaultDate : "" ,
dateFormat : "yy-mm-dd" ,
numberOfMonths : 1 ,
showButtonPanel : true ,
showOn : "button" ,
buttonImage : woocommerce _admin _meta _boxes . calendar _image ,
buttonImageOnly : true ,
onSelect : function ( selectedDate ) {
var option = $ ( this ) . is ( '#_sale_price_dates_from, .sale_price_dates_from' ) ? "minDate" : "maxDate" ;
var instance = $ ( this ) . data ( "datepicker" ) ,
date = $ . datepicker . parseDate (
instance . settings . dateFormat ||
$ . datepicker . _defaults . dateFormat ,
selectedDate , instance . settings ) ;
dates . not ( this ) . datepicker ( "option" , option , date ) ;
}
} ) ;
// ATTRIBUTE TABLES
// Multiselect attributes
$ ( ".product_attributes select.multiselect" ) . chosen ( ) ;
// Initial order
var woocommerce _attribute _items = $ ( '.product_attributes' ) . find ( '.woocommerce_attribute' ) . get ( ) ;
woocommerce _attribute _items . sort ( function ( a , b ) {
var compA = parseInt ( $ ( a ) . attr ( 'rel' ) ) ;
var compB = parseInt ( $ ( b ) . attr ( 'rel' ) ) ;
return ( compA < compB ) ? - 1 : ( compA > compB ) ? 1 : 0 ;
} )
$ ( woocommerce _attribute _items ) . each ( function ( idx , itm ) { $ ( '.product_attributes' ) . append ( itm ) ; } ) ;
function attribute _row _indexes ( ) {
$ ( '.product_attributes .woocommerce_attribute' ) . each ( function ( index , el ) {
$ ( '.attribute_position' , el ) . val ( parseInt ( $ ( el ) . index ( '.product_attributes .woocommerce_attribute' ) ) ) ;
} ) ;
} ;
// Add rows
$ ( 'button.add_attribute' ) . on ( 'click' , function ( ) {
var size = $ ( '.product_attributes .woocommerce_attribute' ) . size ( ) ;
var attribute _type = $ ( 'select.attribute_taxonomy' ) . val ( ) ;
if ( ! attribute _type ) {
var product _type = $ ( 'select#product-type' ) . val ( ) ;
if ( product _type != 'variable' ) enable _variation = 'style="display:none;"' ; else enable _variation = '' ;
// Add custom attribute row
$ ( '.product_attributes' ) . append ( ' < div class = "woocommerce_attribute wc-metabox" > \
< h3 > \
< button type = "button" class = "remove_row button" > ' + woocommerce_admin_meta_boxes.remove_label + ' < / b u t t o n > \
< div class = "handlediv" title = "' + woocommerce_admin_meta_boxes.click_to_toggle + '" > < / d i v > \
< strong class = "attribute_name" > < / s t r o n g > \
< / h 3 > \
< table cellpadding = "0" cellspacing = "0" class = "woocommerce_attribute_data" > \
< tbody > \
< tr > \
< td class = "attribute_name" > \
< label > ' + woocommerce_admin_meta_boxes.name_label + ' : < / l a b e l > \
< input type = "text" class = "attribute_name" name = "attribute_names[' + size + ']" / > \
< input type = "hidden" name = "attribute_is_taxonomy[' + size + ']" value = "0" / > \
< input type = "hidden" name = "attribute_position[' + size + ']" class = "attribute_position" value = "' + size + '" / > \
< / t d > \
< td rowspan = "3" > \
< label > ' + woocommerce_admin_meta_boxes.values_label + ' : < / l a b e l > \
< textarea name = "attribute_values[' + size + ']" cols = "5" rows = "5" placeholder = "' + woocommerce_admin_meta_boxes.text_attribute_tip + '" > < / t e x t a r e a > \
< / t d > \
< / t r > \
< tr > \
< td > \
< label > < input type = "checkbox" class = "checkbox" ' + ( woocommerce_admin_meta_boxes.default_attribute_visibility ? ' checked = "checked" ' : ' ' ) + ' name = "attribute_visibility[' + size + ']" value = "1" / > ' + woocommerce_admin_meta_boxes.visible_label + ' < / l a b e l > \
< / t d > \
< / t r > \
< tr > \
< td > \
< div class = "enable_variation show_if_variable" ' + enable_variation + ' > \
< label > < input type = "checkbox" class = "checkbox" ' + ( woocommerce_admin_meta_boxes.default_attribute_variation ? ' checked = "checked" ' : ' ' ) + ' name = "attribute_variation[' + size + ']" value = "1" / > ' + woocommerce_admin_meta_boxes.used_for_variations_label + ' < / l a b e l > \
< / d i v > \
< / t d > \
< / t r > \
< / t b o d y > \
< / t a b l e > \
< / d i v > ' ) ;
} else {
// Reveal taxonomy row
var thisrow = $ ( '.product_attributes .woocommerce_attribute.' + attribute _type ) ;
$ ( '.product_attributes' ) . append ( $ ( thisrow ) ) ;
$ ( thisrow ) . show ( ) . find ( '.woocommerce_attribute_data' ) . show ( ) ;
attribute _row _indexes ( ) ;
}
$ ( 'select.attribute_taxonomy' ) . val ( '' ) ;
} ) ;
$ ( '.product_attributes' ) . on ( 'blur' , 'input.attribute_name' , function ( ) {
$ ( this ) . closest ( '.woocommerce_attribute' ) . find ( 'strong.attribute_name' ) . text ( $ ( this ) . val ( ) ) ;
} ) ;
$ ( '.product_attributes' ) . on ( 'click' , 'button.select_all_attributes' , function ( ) {
$ ( this ) . closest ( 'td' ) . find ( 'select option' ) . attr ( "selected" , "selected" ) ;
$ ( this ) . closest ( 'td' ) . find ( 'select' ) . trigger ( "chosen:updated" ) ;
return false ;
} ) ;
$ ( '.product_attributes' ) . on ( 'click' , 'button.select_no_attributes' , function ( ) {
$ ( this ) . closest ( 'td' ) . find ( 'select option' ) . removeAttr ( "selected" ) ;
$ ( this ) . closest ( 'td' ) . find ( 'select' ) . trigger ( "chosen:updated" ) ;
return false ;
} ) ;
$ ( '.product_attributes' ) . on ( 'click' , 'button.remove_row' , function ( ) {
var answer = confirm ( woocommerce _admin _meta _boxes . remove _attribute ) ;
if ( answer ) {
var $parent = $ ( this ) . parent ( ) . parent ( ) ;
if ( $parent . is ( '.taxonomy' ) ) {
$parent . find ( 'select, input[type=text]' ) . val ( '' ) ;
$parent . hide ( ) ;
} else {
$parent . find ( 'select, input[type=text]' ) . val ( '' ) ;
$parent . hide ( ) ;
attribute _row _indexes ( ) ;
}
}
return false ;
} ) ;
// Attribute ordering
$ ( '.product_attributes' ) . sortable ( {
items : '.woocommerce_attribute' ,
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' ) ;
attribute _row _indexes ( ) ;
}
} ) ;
// Add a new attribute (via ajax)
$ ( '.product_attributes' ) . on ( 'click' , 'button.add_new_attribute' , function ( ) {
$ ( '.product_attributes' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _admin _meta _boxes . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
var attribute = $ ( this ) . attr ( 'data-attribute' ) ;
var $wrapper = $ ( this ) . closest ( '.woocommerce_attribute_data' ) ;
var new _attribute _name = prompt ( woocommerce _admin _meta _boxes . new _attribute _prompt ) ;
if ( new _attribute _name ) {
var data = {
action : 'woocommerce_add_new_attribute' ,
taxonomy : attribute ,
term : new _attribute _name ,
security : woocommerce _admin _meta _boxes . add _attribute _nonce
} ;
$ . post ( woocommerce _admin _meta _boxes . ajax _url , data , function ( response ) {
if ( response . error ) {
// Error
alert ( response . error ) ;
} else if ( response . slug ) {
// Success
$wrapper . find ( 'select.attribute_values' ) . append ( '<option value="' + response . slug + '" selected="selected">' + response . name + '</option>' ) ;
$wrapper . find ( 'select.attribute_values' ) . trigger ( "chosen:updated" ) ;
}
$ ( '.product_attributes' ) . unblock ( ) ;
} ) ;
} else {
$ ( '.product_attributes' ) . unblock ( ) ;
}
return false ;
} ) ;
// Save attributes and update variations
$ ( '.save_attributes' ) . on ( 'click' , function ( ) {
$ ( '.product_attributes' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _admin _meta _boxes . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
var data = {
post _id : woocommerce _admin _meta _boxes . post _id ,
data : $ ( '.product_attributes' ) . find ( 'input, select, textarea' ) . serialize ( ) ,
action : 'woocommerce_save_attributes' ,
security : woocommerce _admin _meta _boxes . save _attributes _nonce
} ;
$ . post ( woocommerce _admin _meta _boxes . ajax _url , data , function ( response ) {
var this _page = window . location . toString ( ) ;
this _page = this _page . replace ( 'post-new.php?' , 'post.php?post=' + woocommerce _admin _meta _boxes . post _id + '&action=edit&' ) ;
// Load variations panel
$ ( '#variable_product_options' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _admin _meta _boxes . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
$ ( '#variable_product_options' ) . load ( this _page + ' #variable_product_options_inner' , function ( ) {
$ ( '#variable_product_options' ) . unblock ( ) ;
} ) ;
$ ( '.product_attributes' ) . unblock ( ) ;
} ) ;
2014-07-30 18:01:07 +00:00
} ) ;
2014-07-08 13:14:29 +00:00
// Uploading files
var downloadable _file _frame ;
var file _path _field ;
jQuery ( document ) . on ( 'click' , '.upload_file_button' , function ( event ) {
var $el = $ ( this ) ;
file _path _field = $el . closest ( 'tr' ) . find ( 'td.file_url input' ) ;
event . preventDefault ( ) ;
// If the media frame already exists, reopen it.
if ( downloadable _file _frame ) {
downloadable _file _frame . open ( ) ;
return ;
}
var downloadable _file _states = [
// Main states.
new wp . media . controller . Library ( {
library : wp . media . query ( ) ,
multiple : true ,
title : $el . data ( 'choose' ) ,
priority : 20 ,
filterable : 'uploaded' ,
} )
] ;
// Create the media frame.
downloadable _file _frame = wp . media . frames . downloadable _file = wp . media ( {
// Set the title of the modal.
title : $el . data ( 'choose' ) ,
library : {
type : ''
} ,
button : {
text : $el . data ( 'update' ) ,
} ,
multiple : true ,
states : downloadable _file _states ,
} ) ;
// When an image is selected, run a callback.
downloadable _file _frame . on ( 'select' , function ( ) {
var file _path = '' ;
var selection = downloadable _file _frame . state ( ) . get ( 'selection' ) ;
selection . map ( function ( attachment ) {
attachment = attachment . toJSON ( ) ;
if ( attachment . url )
file _path = attachment . url
} ) ;
file _path _field . val ( file _path ) ;
} ) ;
// Set post to 0 and set our custom type
downloadable _file _frame . on ( 'ready' , function ( ) {
downloadable _file _frame . uploader . options . uploader . params = {
type : 'downloadable_product'
} ;
} ) ;
// Finally, open the modal.
downloadable _file _frame . open ( ) ;
} ) ;
// Download ordering
jQuery ( '.downloadable_files tbody' ) . sortable ( {
items : 'tr' ,
cursor : 'move' ,
axis : 'y' ,
handle : 'td.sort' ,
scrollSensitivity : 40 ,
forcePlaceholderSize : true ,
helper : 'clone' ,
opacity : 0.65 ,
} ) ;
// Product gallery file uploads
var product _gallery _frame ;
var $image _gallery _ids = $ ( '#product_image_gallery' ) ;
var $product _images = $ ( '#product_images_container ul.product_images' ) ;
jQuery ( '.add_product_images' ) . on ( 'click' , 'a' , function ( event ) {
var $el = $ ( this ) ;
var attachment _ids = $image _gallery _ids . val ( ) ;
event . preventDefault ( ) ;
// If the media frame already exists, reopen it.
if ( product _gallery _frame ) {
product _gallery _frame . open ( ) ;
return ;
}
// Create the media frame.
product _gallery _frame = wp . media . frames . product _gallery = wp . media ( {
// Set the title of the modal.
title : $el . data ( 'choose' ) ,
button : {
text : $el . data ( 'update' ) ,
} ,
states : [
new wp . media . controller . Library ( {
title : $el . data ( 'choose' ) ,
filterable : 'all' ,
multiple : true ,
} )
]
} ) ;
// When an image is selected, run a callback.
product _gallery _frame . on ( 'select' , function ( ) {
var selection = product _gallery _frame . state ( ) . get ( 'selection' ) ;
selection . map ( function ( attachment ) {
attachment = attachment . toJSON ( ) ;
if ( attachment . id ) {
attachment _ids = attachment _ids ? attachment _ids + "," + attachment . id : attachment . id ;
$product _images . append ( ' \
< li class = "image" data - attachment _id = "' + attachment.id + '" > \
2014-09-28 15:23:05 +00:00
< img src = "' + attachment.sizes.thumbnail.url + '" / > \
2014-07-08 13:14:29 +00:00
< ul class = "actions" > \
< li > < a href = "#" class = "delete" title = "' + $el.data('delete') + '" > ' + $el.data(' text ') + ' < / a > < / l i > \
< / u l > \
< / l i > ' ) ;
}
} ) ;
$image _gallery _ids . val ( attachment _ids ) ;
} ) ;
// Finally, open the modal.
product _gallery _frame . open ( ) ;
} ) ;
// Image ordering
$product _images . sortable ( {
items : 'li.image' ,
cursor : 'move' ,
scrollSensitivity : 40 ,
forcePlaceholderSize : true ,
forceHelperSize : false ,
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' ) ;
} ,
update : function ( event , ui ) {
var attachment _ids = '' ;
$ ( '#product_images_container ul li.image' ) . css ( 'cursor' , 'default' ) . each ( function ( ) {
var attachment _id = jQuery ( this ) . attr ( 'data-attachment_id' ) ;
attachment _ids = attachment _ids + attachment _id + ',' ;
} ) ;
$image _gallery _ids . val ( attachment _ids ) ;
}
} ) ;
// Remove images
$ ( '#product_images_container' ) . on ( 'click' , 'a.delete' , function ( ) {
$ ( this ) . closest ( 'li.image' ) . remove ( ) ;
var attachment _ids = '' ;
$ ( '#product_images_container ul li.image' ) . css ( 'cursor' , 'default' ) . each ( function ( ) {
var attachment _id = jQuery ( this ) . attr ( 'data-attachment_id' ) ;
attachment _ids = attachment _ids + attachment _id + ',' ;
} ) ;
$image _gallery _ids . val ( attachment _ids ) ;
runTipTip ( ) ;
return false ;
2014-07-30 18:01:07 +00:00
} ) ;
} ) ;