2011-08-09 15:16:18 +00:00
jQuery ( function ( $ ) {
2012-11-27 16:22:47 +00:00
2012-11-22 13:46:01 +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 ;
2012-08-01 12:43:46 +00:00
2012-11-22 13:46:01 +00:00
var pos _first = $list . find ( ':checkbox' ) . position ( ) . top ;
var pos _checked = $firstChecked . position ( ) . top ;
$list . closest ( '.tabs-panel' ) . scrollTop ( pos _checked - pos _first + 5 ) ;
} ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2011-09-19 14:57:17 +00:00
// Prevent enter submitting post form
2011-11-05 19:03:03 +00:00
$ ( "#upsell_product_data" ) . bind ( "keypress" , function ( e ) {
2011-09-28 12:34:41 +00:00
if ( e . keyCode == 13 ) return false ;
2011-09-19 14:57:17 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
// Type box
$ ( '.type_box' ) . appendTo ( '#woocommerce-product-data h3.hndle span' ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
$ ( function ( ) {
2012-08-01 12:43:46 +00:00
// Prevent inputs in meta box headings opening/closing contents
$ ( '#woocommerce-product-data h3.hndle' ) . unbind ( 'click.postboxes' ) ;
2012-07-22 12:50:45 +00:00
jQuery ( '#woocommerce-product-data' ) . on ( 'click' , 'h3.hndle' , function ( event ) {
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
// If the user clicks on some form input inside the h3 the box should not be toggled
2012-08-01 12:43:46 +00:00
if ( $ ( event . target ) . filter ( 'input, option, label, select' ) . length )
2012-07-22 12:50:45 +00:00
return ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
$ ( '#woocommerce-product-data' ) . toggleClass ( 'closed' ) ;
} ) ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-10-10 17:03:49 +00:00
// Order emails
$ ( '#order-emails a.show-order-emails' ) . click ( function ( ) {
if ( $ ( '#order-emails-select' ) . is ( ":hidden" ) ) {
$ ( '#order-emails-select' ) . slideDown ( 'fast' ) ;
$ ( this ) . hide ( ) ;
}
return false ;
} ) ;
$ ( '#order-emails a.hide-order-emails' ) . click ( function ( ) {
2012-10-12 13:33:46 +00:00
$ ( 'input[name="order_email[]"]' ) . each ( function ( ) { $ ( this ) . attr ( 'checked' , false ) } ) ;
2012-10-10 17:03:49 +00:00
if ( $ ( '#order-emails-select' ) . is ( ":visible" ) ) {
$ ( '#order-emails-select' ) . slideUp ( 'fast' ) ;
$ ( '#order-emails a.show-order-emails' ) . show ( ) ;
}
return false ;
} ) ;
2012-07-22 12:50:45 +00:00
// 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 ( ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
var value = $ ( 'input[name=_visibility]:checked' ) . val ( ) ;
var label = $ ( 'input[name=_visibility]:checked' ) . attr ( 'data-label' ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
if ( $ ( 'input[name=_featured]' ) . is ( ':checked' ) ) {
label = label + ', ' + woocommerce _writepanel _params . featured _label
$ ( 'input[name=_featured]' ) . attr ( 'checked' , 'checked' ) ;
}
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
$ ( '#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 ( ) ;
2012-08-01 12:43:46 +00:00
2013-01-04 15:30:31 +00:00
var current _visibility = $ ( '#current_visibility' ) . val ( ) ;
2012-07-22 12:50:45 +00:00
var current _featured = $ ( '#current_featured' ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
$ ( 'input[name=_visibility]' ) . removeAttr ( 'checked' ) ;
$ ( 'input[name=_visibility][value=' + current _visibility + ']' ) . attr ( 'checked' , 'checked' ) ;
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
var label = $ ( 'input[name=_visibility]:checked' ) . attr ( 'data-label' ) ;
if ( current _featured == 'yes' ) {
label = label + ', ' + woocommerce _writepanel _params . featured _label
$ ( 'input[name=_featured]' ) . attr ( 'checked' , 'checked' ) ;
} else {
$ ( 'input[name=_featured]' ) . removeAttr ( 'checked' ) ;
}
2012-08-01 12:43:46 +00:00
2012-07-22 12:50:45 +00:00
$ ( '#catalog-visibility-display' ) . text ( label ) ;
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// TABS
2012-08-15 18:28:08 +00:00
$ ( 'ul.wc-tabs' ) . show ( ) ;
2011-11-05 19:03:03 +00:00
$ ( 'div.panel-wrap' ) . each ( function ( ) {
2012-12-05 15:05:50 +00:00
$ ( this ) . find ( 'div.panel:not(:first)' ) . hide ( ) ;
2011-08-09 15:16:18 +00:00
} ) ;
2012-08-15 18:28:08 +00:00
$ ( 'ul.wc-tabs a' ) . click ( function ( ) {
2011-11-05 19:03:03 +00:00
var panel _wrap = $ ( this ) . closest ( 'div.panel-wrap' ) ;
2012-08-15 18:28:08 +00:00
$ ( 'ul.wc-tabs li' , panel _wrap ) . removeClass ( 'active' ) ;
2011-11-05 19:03:03 +00:00
$ ( this ) . parent ( ) . addClass ( 'active' ) ;
$ ( 'div.panel' , panel _wrap ) . hide ( ) ;
$ ( $ ( this ) . attr ( 'href' ) ) . show ( ) ;
2011-08-09 15:16:18 +00:00
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-03-06 15:46:53 +00:00
// Chosen selects
jQuery ( "select.chosen_select" ) . chosen ( ) ;
2012-08-01 12:43:46 +00:00
2012-03-06 15:46:53 +00:00
jQuery ( "select.chosen_select_nostd" ) . chosen ( {
allow _single _deselect : 'true'
} ) ;
2012-08-01 12:43:46 +00:00
2012-03-12 17:26:11 +00:00
// Ajax Chosen Product Selectors
2012-03-06 15:46:53 +00:00
jQuery ( "select.ajax_chosen_select_products" ) . ajaxChosen ( {
method : 'GET' ,
url : woocommerce _writepanel _params . ajax _url ,
dataType : 'json' ,
2012-07-31 17:26:25 +00:00
afterTypeDelay : 100 ,
2012-03-06 15:46:53 +00:00
data : {
action : 'woocommerce_json_search_products' ,
security : woocommerce _writepanel _params . search _products _nonce
}
} , function ( data ) {
2012-08-01 12:43:46 +00:00
2012-03-06 15:46:53 +00:00
var terms = { } ;
2012-08-01 12:43:46 +00:00
2012-03-06 15:46:53 +00:00
$ . each ( data , function ( i , val ) {
terms [ i ] = val ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-03-06 15:46:53 +00:00
return terms ;
2012-08-01 12:43:46 +00:00
} ) ;
2012-03-12 17:26:11 +00:00
jQuery ( "select.ajax_chosen_select_products_and_variations" ) . ajaxChosen ( {
method : 'GET' ,
url : woocommerce _writepanel _params . ajax _url ,
dataType : 'json' ,
2012-03-13 12:18:15 +00:00
afterTypeDelay : 100 ,
2012-03-12 17:26:11 +00:00
data : {
action : 'woocommerce_json_search_products_and_variations' ,
2012-03-06 15:46:53 +00:00
security : woocommerce _writepanel _params . search _products _nonce
2012-03-12 17:26:11 +00:00
}
} , function ( data ) {
2012-08-01 12:43:46 +00:00
2012-07-31 17:26:25 +00:00
var terms = { } ;
2012-08-01 12:43:46 +00:00
2012-07-31 17:26:25 +00:00
$ . each ( data , function ( i , val ) {
terms [ i ] = val ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-07-31 17:26:25 +00:00
return terms ;
} ) ;
2012-03-06 15:46:53 +00:00
2011-08-09 15:16:18 +00:00
// ORDERS
2012-01-27 15:00:03 +00:00
jQuery ( '#woocommerce-order-actions input, #woocommerce-order-actions a' ) . click ( function ( ) {
window . onbeforeunload = '' ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-28 13:06:58 +00:00
$ ( 'a.edit_address' ) . click ( function ( event ) {
2011-11-25 19:31:06 +00:00
$ ( this ) . hide ( ) ;
2012-12-13 00:47:40 +00:00
$ ( this ) . closest ( '.order_data_column' ) . find ( 'div.address' ) . hide ( ) ;
$ ( this ) . closest ( '.order_data_column' ) . find ( 'div.edit_address' ) . show ( ) ;
2012-02-28 13:06:58 +00:00
event . preventDefault ( ) ;
2011-11-25 19:31:06 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$ ( '#order_items_list' ) . on ( 'init_row' , 'tr.item' , function ( ) {
var $row = $ ( this ) ;
var $qty = $row . find ( 'input.quantity' ) ;
var qty = $qty . val ( ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
var line _subtotal = $row . find ( 'input.line_subtotal' ) . val ( ) ;
var line _total = $row . find ( 'input.line_total' ) . val ( ) ;
var line _tax = $row . find ( 'input.line_tax' ) . val ( ) ;
var line _subtotal _tax = $row . find ( 'input.line_subtotal_tax' ) . val ( ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
if ( qty ) {
unit _subtotal = accounting . toFixed ( ( line _subtotal / qty ) , 2 ) ;
unit _subtotal _tax = accounting . toFixed ( ( line _subtotal _tax / qty ) , 2 ) ;
unit _total = accounting . toFixed ( ( line _total / qty ) , 2 ) ;
unit _total _tax = accounting . toFixed ( ( line _tax / qty ) , 2 ) ;
} else {
unit _subtotal = unit _subtotal _tax = unit _total = unit _total _tax = 0 ;
}
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$qty . attr ( 'data-o_qty' , qty ) ;
$row . attr ( 'data-unit_subtotal' , unit _subtotal ) ;
$row . attr ( 'data-unit_subtotal_tax' , unit _subtotal _tax ) ;
$row . attr ( 'data-unit_total' , unit _total ) ;
$row . attr ( 'data-unit_total_tax' , unit _total _tax ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// When the page is loaded, store the unit costs
$ ( '#order_items_list tr.item' ) . each ( function ( ) {
$ ( this ) . trigger ( 'init_row' ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// When the qty is changed, increase or decrease costs
$ ( '#order_items_list' ) . on ( 'change' , 'input.quantity' , function ( ) {
var $row = $ ( this ) . closest ( 'tr.item' ) ;
var qty = $ ( this ) . val ( ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
var unit _subtotal = $row . attr ( 'data-unit_subtotal' ) ;
var unit _subtotal _tax = $row . attr ( 'data-unit_subtotal_tax' ) ;
var unit _total = $row . attr ( 'data-unit_total' ) ;
var unit _total _tax = $row . attr ( 'data-unit_total_tax' ) ;
var o _qty = $ ( this ) . attr ( 'data-o_qty' ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
var subtotal = accounting . formatNumber ( unit _subtotal * qty , 2 , '' ) ;
var tax = accounting . formatNumber ( unit _subtotal _tax * qty , 2 , '' ) ;
var total = accounting . formatNumber ( unit _total * qty , 2 , '' ) ;
var total _tax = accounting . formatNumber ( unit _total _tax * qty , 2 , '' ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$row . find ( 'input.line_subtotal' ) . val ( subtotal ) ;
$row . find ( 'input.line_total' ) . val ( total ) ;
$row . find ( 'input.line_subtotal_tax' ) . val ( tax ) ;
$row . find ( 'input.line_tax' ) . val ( total _tax ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// When subtotal is changed, update the unit costs
$ ( '#order_items_list' ) . on ( 'change' , 'input.line_subtotal' , function ( ) {
var $row = $ ( this ) . closest ( 'tr.item' ) ;
var $qty = $row . find ( 'input.quantity' ) ;
var qty = $qty . val ( ) ;
var value = ( qty ) ? accounting . toFixed ( ( $ ( this ) . val ( ) / qty ) , 2 ) : 0 ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$row . attr ( 'data-unit_subtotal' , value ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// When total is changed, update the unit costs + discount amount
$ ( '#order_items_list' ) . on ( 'change' , 'input.line_total' , function ( ) {
var $row = $ ( this ) . closest ( 'tr.item' ) ;
var $qty = $row . find ( 'input.quantity' ) ;
var qty = $qty . val ( ) ;
var value = ( qty ) ? accounting . toFixed ( ( $ ( this ) . val ( ) / qty ) , 2 ) : 0 ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$row . attr ( 'data-unit_total' , value ) ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-09-18 18:07:13 +00:00
// When total is changed, update the unit costs + discount amount
$ ( '#order_items_list' ) . on ( 'change' , 'input.line_subtotal_tax' , function ( ) {
var $row = $ ( this ) . closest ( 'tr.item' ) ;
var $qty = $row . find ( 'input.quantity' ) ;
var qty = $qty . val ( ) ;
var value = ( qty ) ? accounting . toFixed ( ( $ ( this ) . val ( ) / qty ) , 2 ) : 0 ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$row . attr ( 'data-unit_subtotal_tax' , value ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// When total is changed, update the unit costs + discount amount
$ ( '#order_items_list' ) . on ( 'change' , 'input.line_tax' , function ( ) {
var $row = $ ( this ) . closest ( 'tr.item' ) ;
var $qty = $row . find ( 'input.quantity' ) ;
var qty = $qty . val ( ) ;
var value = ( qty ) ? accounting . toFixed ( ( $ ( this ) . val ( ) / qty ) , 2 ) : 0 ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$row . attr ( 'data-unit_total_tax' , value ) ;
} ) ;
2012-11-27 16:22:47 +00:00
// Display a total for taxes
2012-09-20 13:43:52 +00:00
$ ( '#woocommerce-order-totals' ) . on ( 'change' , '#_order_tax, #_order_shipping_tax, #_cart_discount, #_order_discount' , function ( ) {
2012-11-27 16:22:47 +00:00
2012-09-20 13:43:52 +00:00
var $this = $ ( this ) ;
var fields = $this . closest ( '.totals' ) . find ( 'input' ) ;
var total = 0 ;
2012-11-27 16:22:47 +00:00
2012-09-20 13:43:52 +00:00
fields . each ( function ( ) {
2012-11-12 18:53:40 +00:00
if ( $ ( this ) . val ( ) )
total = total + parseFloat ( $ ( this ) . val ( ) ) ;
2012-09-20 13:43:52 +00:00
} ) ;
var formatted _total = accounting . formatMoney ( total , {
symbol : woocommerce _writepanel _params . currency _format _symbol ,
decimal : woocommerce _writepanel _params . currency _format _decimal _sep ,
thousand : woocommerce _writepanel _params . currency _format _thousand _sep ,
precision : woocommerce _writepanel _params . currency _format _num _decimals ,
format : woocommerce _writepanel _params . currency _format
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-20 13:43:52 +00:00
$this . closest ( '.totals_group' ) . find ( 'span.inline_total' ) . text ( formatted _total ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-09-20 13:43:52 +00:00
$ ( 'span.inline_total' ) . closest ( '.totals_group' ) . find ( 'input' ) . change ( ) ;
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
// Calculate totals
2012-12-28 13:02:12 +00:00
$ ( 'button.calc_line_taxes' ) . click ( function ( ) {
2012-01-13 21:25:39 +00:00
// Block write panel
$ ( '.woocommerce_order_items_wrapper' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
var answer = confirm ( woocommerce _writepanel _params . calc _line _taxes ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
if ( answer ) {
2012-08-01 12:43:46 +00:00
2012-11-12 14:34:10 +00:00
var $items = $ ( '#order_items_list' ) . find ( 'tr.item, tr.fee' ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
var country = $ ( '#_shipping_country' ) . val ( ) ;
if ( country ) {
var state = $ ( '#_shipping_state' ) . val ( ) ;
var postcode = $ ( '#_shipping_postcode' ) . val ( ) ;
2012-09-23 16:16:39 +00:00
var city = $ ( '#_shipping_city' ) . val ( ) ;
2012-01-13 21:25:39 +00:00
} else {
country = $ ( '#_billing_country' ) . val ( ) ;
var state = $ ( '#_billing_state' ) . val ( ) ;
var postcode = $ ( '#_billing_postcode' ) . val ( ) ;
2012-09-23 16:16:39 +00:00
var city = $ ( '#_billing_city' ) . val ( ) ;
2012-01-13 21:25:39 +00:00
}
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
// Get items and values
var calculate _items = { } ;
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
$items . each ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-01-13 21:25:39 +00:00
var $row = $ ( this ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
var item _id = $row . find ( 'input.order_item_id' ) . val ( ) ;
var line _subtotal = $row . find ( 'input.line_subtotal' ) . val ( ) ;
var line _total = $row . find ( 'input.line_total' ) . val ( ) ;
var tax _class = $row . find ( 'select.tax_class' ) . val ( ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
calculate _items [ item _id ] = { } ;
calculate _items [ item _id ] . line _subtotal = line _subtotal ;
calculate _items [ item _id ] . line _total = line _total ;
calculate _items [ item _id ] . tax _class = tax _class ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
var data = {
action : 'woocommerce_calc_line_taxes' ,
2012-11-13 14:54:34 +00:00
order _id : woocommerce _writepanel _params . post _id ,
2012-11-12 18:53:40 +00:00
items : calculate _items ,
shipping : accounting . unformat ( $ ( '#_order_shipping' ) . val ( ) ) ,
country : country ,
state : state ,
postcode : postcode ,
city : city ,
security : woocommerce _writepanel _params . calc _totals _nonce
} ;
$ . post ( woocommerce _writepanel _params . ajax _url , data , function ( response ) {
2012-12-13 01:27:34 +00:00
2013-01-22 16:48:28 +00:00
if ( response ) {
2012-11-27 16:22:47 +00:00
2013-01-22 16:48:28 +00:00
$items . each ( function ( ) {
var $row = $ ( this ) ;
var item _id = $row . find ( 'input.order_item_id' ) . val ( ) ;
2012-11-27 16:22:47 +00:00
2013-01-22 16:48:28 +00:00
$row . find ( 'input.line_tax' ) . val ( response [ 'item_taxes' ] [ item _id ] [ 'line_tax' ] ) . change ( ) ;
$row . find ( 'input.line_subtotal_tax' ) . val ( response [ 'item_taxes' ] [ item _id ] [ 'line_subtotal_tax' ] ) . change ( ) ;
$ ( '#tax_rows' ) . empty ( ) . append ( response [ 'tax_row_html' ] ) ;
} ) ;
$ ( '#_order_tax' ) . val ( response [ 'item_tax' ] ) . change ( ) ;
$ ( '#_order_shipping_tax' ) . val ( response [ 'shipping_tax' ] ) . change ( ) ;
2012-11-27 16:22:47 +00:00
2013-01-22 16:48:28 +00:00
}
2012-11-27 16:22:47 +00:00
2012-11-12 18:53:40 +00:00
$ ( '.woocommerce_order_items_wrapper' ) . unblock ( ) ;
2012-01-13 21:25:39 +00:00
} ) ;
} else {
$ ( '.woocommerce_order_items_wrapper' ) . unblock ( ) ;
}
return false ;
} ) . hover ( function ( ) {
2012-11-13 14:54:34 +00:00
$ ( '#order_items_list input.line_subtotal_tax, #order_items_list input.line_tax, #_order_shipping_tax, #_order_tax, .tax_rows_group' ) . css ( 'background-color' , '#e3d2dd' ) ;
2012-01-13 21:25:39 +00:00
} , function ( ) {
2012-11-13 14:54:34 +00:00
$ ( '#order_items_list input.line_subtotal_tax, #order_items_list input.line_tax, #_order_shipping_tax, #_order_tax, .tax_rows_group' ) . css ( 'background-color' , '' ) ;
2012-01-13 21:25:39 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-12-28 13:02:12 +00:00
$ ( 'button.calc_totals' ) . click ( function ( ) {
2012-01-13 21:25:39 +00:00
// Block write panel
$ ( '#woocommerce-order-totals' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
var answer = confirm ( woocommerce _writepanel _params . calc _totals ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
if ( answer ) {
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
// Get row totals
2012-06-10 08:08:11 +00:00
var line _subtotals = 0 ;
var line _subtotal _taxes = 0 ;
var line _totals = 0 ;
var cart _discount = 0 ;
var cart _tax = 0 ;
2012-09-18 18:07:13 +00:00
var order _shipping = accounting . unformat ( $ ( '#_order_shipping' ) . val ( ) ) ;
var order _shipping _tax = accounting . unformat ( $ ( '#_order_shipping_tax' ) . val ( ) ) ;
var order _discount = accounting . unformat ( $ ( '#_order_discount' ) . val ( ) ) ;
2012-08-01 12:43:46 +00:00
2012-06-10 08:08:11 +00:00
if ( ! order _shipping ) order _shipping = 0 ;
if ( ! order _shipping _tax ) order _shipping _tax = 0 ;
if ( ! order _discount ) order _discount = 0 ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
$ ( '#order_items_list tr.item' ) . each ( function ( ) {
2012-08-01 12:43:46 +00:00
2012-09-18 18:07:13 +00:00
var line _subtotal = accounting . unformat ( $ ( this ) . find ( 'input.line_subtotal' ) . val ( ) ) ;
var line _subtotal _tax = accounting . unformat ( $ ( this ) . find ( 'input.line_subtotal_tax' ) . val ( ) ) ;
var line _total = accounting . unformat ( $ ( this ) . find ( 'input.line_total' ) . val ( ) ) ;
var line _tax = accounting . unformat ( $ ( this ) . find ( 'input.line_tax' ) . val ( ) ) ;
2012-08-01 12:43:46 +00:00
2012-06-10 08:08:11 +00:00
if ( ! line _subtotal ) line _subtotal = 0 ;
if ( ! line _subtotal _tax ) line _subtotal _tax = 0 ;
if ( ! line _total ) line _total = 0 ;
if ( ! line _tax ) line _tax = 0 ;
2012-08-01 12:43:46 +00:00
2012-09-18 18:07:13 +00:00
line _subtotals = line _subtotals + line _subtotal ;
line _subtotal _taxes = line _subtotal _taxes + line _subtotal _tax ;
line _totals = line _totals + line _total ;
2012-08-01 12:43:46 +00:00
2012-09-18 18:07:13 +00:00
if ( woocommerce _writepanel _params . round _at _subtotal == 'no' ) {
line _tax = accounting . toFixed ( line _tax , 2 ) ;
2012-01-13 21:25:39 +00:00
}
2012-08-01 12:43:46 +00:00
2012-11-12 14:34:10 +00:00
cart _tax = cart _tax + parseFloat ( line _tax ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-13 14:54:34 +00:00
// Tax
if ( woocommerce _writepanel _params . round _at _subtotal == 'yes' ) {
cart _tax = accounting . toFixed ( cart _tax , 2 ) ;
}
// Cart discount
var cart _discount = ( line _subtotals + line _subtotal _taxes ) - ( line _totals + cart _tax ) ;
if ( cart _discount < 0 ) cart _discount = 0 ;
cart _discount = accounting . toFixed ( cart _discount , 2 ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 14:34:10 +00:00
$ ( '#order_items_list tr.fee' ) . each ( function ( ) {
var line _total = accounting . unformat ( $ ( this ) . find ( 'input.line_total' ) . val ( ) ) ;
var line _tax = accounting . unformat ( $ ( this ) . find ( 'input.line_tax' ) . val ( ) ) ;
if ( ! line _total ) line _total = 0 ;
if ( ! line _tax ) line _tax = 0 ;
line _totals = line _totals + line _total ;
if ( woocommerce _writepanel _params . round _at _subtotal == 'no' ) {
line _tax = accounting . toFixed ( line _tax , 2 ) ;
}
2012-08-01 12:43:46 +00:00
2012-11-12 14:34:10 +00:00
cart _tax = cart _tax + parseFloat ( line _tax ) ;
2012-01-13 21:25:39 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
// Tax
if ( woocommerce _writepanel _params . round _at _subtotal == 'yes' ) {
2012-09-18 18:07:13 +00:00
cart _tax = accounting . toFixed ( cart _tax , 2 ) ;
2012-01-13 21:25:39 +00:00
}
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
// Total
2012-01-22 02:36:46 +00:00
var order _total = line _totals + cart _tax + order _shipping + order _shipping _tax - order _discount ;
2012-09-18 18:07:13 +00:00
order _total = accounting . toFixed ( order _total , 2 ) ;
cart _tax = accounting . toFixed ( cart _tax , 2 ) ;
2012-11-27 16:22:47 +00:00
2012-01-13 21:25:39 +00:00
// Set fields
2012-11-12 14:34:10 +00:00
$ ( '#_cart_discount' ) . val ( cart _discount ) . change ( ) ;
$ ( '#_order_tax' ) . val ( cart _tax ) . change ( ) ;
$ ( '#_order_total' ) . val ( order _total ) . change ( ) ;
2012-08-01 12:43:46 +00:00
2012-01-13 21:25:39 +00:00
$ ( '#woocommerce-order-totals' ) . unblock ( ) ;
2011-08-09 15:16:18 +00:00
2012-01-13 21:25:39 +00:00
} else {
$ ( '#woocommerce-order-totals' ) . unblock ( ) ;
2011-08-09 15:16:18 +00:00
}
return false ;
2012-01-13 21:25:39 +00:00
} ) . hover ( function ( ) {
2012-11-13 14:54:34 +00:00
$ ( '#woocommerce-order-totals .calculated' ) . css ( 'background-color' , '#e3d2dd' ) ;
2012-01-13 21:25:39 +00:00
} , function ( ) {
$ ( '#woocommerce-order-totals .calculated' ) . css ( 'background-color' , '' ) ;
2011-08-09 15:16:18 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 13:41:54 +00:00
// Add a line item
2012-10-19 14:05:23 +00:00
$ ( '#woocommerce-order-items button.add_order_item' ) . click ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-04-10 00:39:31 +00:00
var add _item _ids = $ ( 'select#add_item_id' ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2012-04-10 00:39:31 +00:00
if ( add _item _ids ) {
2012-08-01 12:43:46 +00:00
2012-04-10 00:39:31 +00:00
count = add _item _ids . length ;
2012-08-01 12:43:46 +00:00
2011-11-05 19:03:03 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2012-04-10 00:39:31 +00:00
$ . each ( add _item _ids , function ( index , value ) {
2012-08-01 12:43:46 +00:00
2012-04-10 00:39:31 +00:00
var data = {
action : 'woocommerce_add_order_item' ,
item _to _add : value ,
2012-10-19 14:05:23 +00:00
order _id : woocommerce _writepanel _params . post _id ,
2012-10-18 17:56:28 +00:00
security : woocommerce _writepanel _params . order _item _nonce
2012-04-10 00:39:31 +00:00
} ;
2012-08-01 12:43:46 +00:00
2012-10-19 14:05:23 +00:00
$ . post ( woocommerce _writepanel _params . ajax _url , data , function ( response ) {
2012-08-01 12:43:46 +00:00
$ ( 'table.woocommerce_order_items tbody#order_items_list' ) . append ( response ) ;
2012-04-10 00:39:31 +00:00
if ( ! -- count ) {
$ ( 'select#add_item_id, #add_item_id_chzn .chzn-choices' ) . css ( 'border-color' , '' ) . val ( '' ) ;
jQuery ( ".tips" ) . tipTip ( {
'attribute' : 'data-tip' ,
'fadeIn' : 50 ,
2012-07-22 12:50:45 +00:00
'fadeOut' : 50 ,
'delay' : 200
2012-04-10 00:39:31 +00:00
} ) ;
$ ( 'select#add_item_id' ) . trigger ( "liszt:updated" ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
2012-08-01 12:43:46 +00:00
}
2012-11-27 16:22:47 +00:00
2012-09-18 18:07:13 +00:00
$ ( '#order_items_list tr.new_row' ) . trigger ( 'init_row' ) . removeClass ( 'new_row' ) ;
2012-04-10 00:39:31 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
} ) ;
} else {
2012-04-10 00:39:31 +00:00
$ ( 'select#add_item_id, #add_item_id_chzn .chzn-choices' ) . css ( 'border-color' , 'red' ) ;
2011-08-09 15:16:18 +00:00
}
2012-11-12 13:41:54 +00:00
return false ;
2011-08-09 15:16:18 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 13:41:54 +00:00
// Add a fee
$ ( '#woocommerce-order-items button.add_order_fee' ) . click ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-12 13:41:54 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
var data = {
action : 'woocommerce_add_order_fee' ,
order _id : woocommerce _writepanel _params . post _id ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
$ . post ( woocommerce _writepanel _params . ajax _url , data , function ( response ) {
$ ( 'table.woocommerce_order_items tbody#order_items_list' ) . append ( response ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
} ) ;
return false ;
} ) ;
// Add some meta to a line item
2012-12-28 13:02:12 +00:00
$ ( '#order_items_list' ) . on ( 'click' , 'button.add_order_item_meta' , function ( ) {
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
var $button = $ ( this ) ;
var $item = $button . closest ( 'tr.item' ) ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
var data = {
2012-10-19 17:59:17 +00:00
order _item _id : $item . attr ( 'data-order_item_id' ) ,
2012-10-18 17:56:28 +00:00
action : 'woocommerce_add_order_item_meta' ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
$item . find ( 'tbody.meta_items' ) . append ( response ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
}
} ) ;
2012-08-01 12:43:46 +00:00
2011-08-19 20:11:04 +00:00
return false ;
2011-08-09 15:16:18 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-12-28 13:02:12 +00:00
$ ( '#order_items_list' ) . on ( 'click' , 'button.remove_order_item_meta' , function ( ) {
2012-10-18 17:56:28 +00:00
var answer = confirm ( woocommerce _writepanel _params . remove _item _meta )
if ( answer ) {
var $row = $ ( this ) . closest ( 'tr' ) ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
var data = {
meta _id : $row . attr ( 'data-meta_id' ) ,
action : 'woocommerce_remove_order_item_meta' ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-10-18 17:56:28 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
$row . hide ( ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
}
} ) ;
2011-08-19 20:11:04 +00:00
}
return false ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
// Bulk actions for line items
2012-11-12 12:30:37 +00:00
$ ( '#woocommerce-order-items' ) . on ( 'click' , 'input.check-column' , function ( ) {
if ( $ ( this ) . is ( ':checked' ) )
$ ( '#woocommerce-order-items' ) . find ( '.check-column input' ) . attr ( 'checked' , 'checked' ) ;
else
$ ( '#woocommerce-order-items' ) . find ( '.check-column input' ) . removeAttr ( 'checked' ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
$ ( '#woocommerce-order-items' ) . on ( 'click' , '.do_bulk_action' , function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
var action = $ ( this ) . closest ( '.bulk_actions' ) . find ( 'select' ) . val ( ) ;
var selected _rows = $ ( '#woocommerce-order-items' ) . find ( '.check-column input:checked' ) ;
2012-11-12 12:22:35 +00:00
var item _ids = [ ] ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ ( selected _rows ) . each ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var $item = $ ( this ) . closest ( 'tr.item, tr.fee' ) ;
item _ids . push ( $item . attr ( 'data-order_item_id' ) ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
if ( action == 'delete' ) {
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
var answer = confirm ( woocommerce _writepanel _params . remove _item _notice ) ;
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
if ( answer ) {
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var data = {
order _item _ids : item _ids ,
action : 'woocommerce_remove_order_item' ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
2012-11-12 14:34:10 +00:00
$ ( selected _rows ) . each ( function ( ) {
$ ( this ) . closest ( 'tr.item, tr.fee' ) . hide ( ) ;
} ) ;
2012-11-12 12:22:35 +00:00
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
}
2012-11-10 16:18:20 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
}
2012-11-27 16:22:47 +00:00
2012-11-10 16:25:50 +00:00
} else if ( action == 'reduce_stock' ) {
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var quantities = { } ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ ( selected _rows ) . each ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var $item = $ ( this ) . closest ( 'tr.item, tr.fee' ) ;
var $qty = $item . find ( 'input.quantity' ) ;
2012-11-27 16:22:47 +00:00
quantities [ $item . attr ( 'data-order_item_id' ) ] = $qty . val ( ) ;
2012-11-12 12:22:35 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var data = {
order _id : woocommerce _writepanel _params . post _id ,
order _item _ids : item _ids ,
order _item _qty : quantities ,
action : 'woocommerce_reduce_order_item_stock' ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
alert ( response ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
}
2012-11-27 16:22:47 +00:00
} ) ;
2012-11-12 12:22:35 +00:00
} else if ( action == 'increase_stock' ) {
$ ( 'table.woocommerce_order_items' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var quantities = { } ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ ( selected _rows ) . each ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var $item = $ ( this ) . closest ( 'tr.item, tr.fee' ) ;
var $qty = $item . find ( 'input.quantity' ) ;
2012-11-27 16:22:47 +00:00
quantities [ $item . attr ( 'data-order_item_id' ) ] = $qty . val ( ) ;
2012-11-12 12:22:35 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
var data = {
order _id : woocommerce _writepanel _params . post _id ,
order _item _ids : item _ids ,
order _item _qty : quantities ,
action : 'woocommerce_increase_order_item_stock' ,
security : woocommerce _writepanel _params . order _item _nonce
} ;
2012-11-27 16:22:47 +00:00
2012-11-12 12:22:35 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
alert ( response ) ;
$ ( 'table.woocommerce_order_items' ) . unblock ( ) ;
}
2012-11-27 16:22:47 +00:00
} ) ;
2012-11-10 16:18:20 +00:00
}
2012-11-27 16:22:47 +00:00
2012-11-10 16:18:20 +00:00
return false ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-08-01 12:43:46 +00:00
2012-12-28 13:02:12 +00:00
$ ( 'button.load_customer_billing' ) . click ( function ( ) {
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
var answer = confirm ( woocommerce _writepanel _params . load _billing ) ;
if ( answer ) {
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
// Get user ID to load data for
var user _id = $ ( '#customer_user' ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
if ( ! user _id ) {
alert ( woocommerce _writepanel _params . no _customer _selected ) ;
return false ;
}
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
var data = {
user _id : user _id ,
type _to _load : 'billing' ,
action : 'woocommerce_get_customer_details' ,
security : woocommerce _writepanel _params . get _customer _details _nonce
} ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ ( this ) . closest ( '.edit_address' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
2013-01-22 14:35:10 +00:00
var info = response ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
if ( info ) {
$ ( 'input#_billing_first_name' ) . val ( info . billing _first _name ) ;
$ ( 'input#_billing_last_name' ) . val ( info . billing _last _name ) ;
$ ( 'input#_billing_company' ) . val ( info . billing _company ) ;
$ ( 'input#_billing_address_1' ) . val ( info . billing _address _1 ) ;
$ ( 'input#_billing_address_2' ) . val ( info . billing _address _2 ) ;
$ ( 'input#_billing_city' ) . val ( info . billing _city ) ;
$ ( 'input#_billing_postcode' ) . val ( info . billing _postcode ) ;
2012-07-11 15:22:18 +00:00
$ ( '#_billing_country' ) . val ( info . billing _country ) ;
2011-11-26 16:15:25 +00:00
$ ( 'input#_billing_state' ) . val ( info . billing _state ) ;
$ ( 'input#_billing_email' ) . val ( info . billing _email ) ;
$ ( 'input#_billing_phone' ) . val ( info . billing _phone ) ;
}
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ ( '.edit_address' ) . unblock ( ) ;
}
} ) ;
}
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-12-28 13:02:12 +00:00
$ ( 'button.load_customer_shipping' ) . click ( function ( ) {
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
var answer = confirm ( woocommerce _writepanel _params . load _shipping ) ;
if ( answer ) {
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
// Get user ID to load data for
var user _id = $ ( '#customer_user' ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
if ( ! user _id ) {
alert ( woocommerce _writepanel _params . no _customer _selected ) ;
return false ;
}
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
var data = {
user _id : user _id ,
type _to _load : 'shipping' ,
action : 'woocommerce_get_customer_details' ,
security : woocommerce _writepanel _params . get _customer _details _nonce
} ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ ( this ) . closest ( '.edit_address' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
2013-01-22 14:35:10 +00:00
var info = response ;
2013-01-22 16:48:28 +00:00
2011-11-26 16:15:25 +00:00
if ( info ) {
$ ( 'input#_shipping_first_name' ) . val ( info . shipping _first _name ) ;
$ ( 'input#_shipping_last_name' ) . val ( info . shipping _last _name ) ;
$ ( 'input#_shipping_company' ) . val ( info . shipping _company ) ;
$ ( 'input#_shipping_address_1' ) . val ( info . shipping _address _1 ) ;
$ ( 'input#_shipping_address_2' ) . val ( info . shipping _address _2 ) ;
$ ( 'input#_shipping_city' ) . val ( info . shipping _city ) ;
$ ( 'input#_shipping_postcode' ) . val ( info . shipping _postcode ) ;
2012-07-11 15:22:18 +00:00
$ ( '#_shipping_country' ) . val ( info . shipping _country ) ;
2011-11-26 16:15:25 +00:00
$ ( 'input#_shipping_state' ) . val ( info . shipping _state ) ;
}
2012-08-01 12:43:46 +00:00
2011-11-26 16:15:25 +00:00
$ ( '.edit_address' ) . unblock ( ) ;
}
} ) ;
}
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-12-28 13:02:12 +00:00
$ ( 'button.billing-same-as-shipping' ) . click ( function ( ) {
2011-09-19 10:30:23 +00:00
var answer = confirm ( woocommerce _writepanel _params . copy _billing ) ;
2011-08-09 15:16:18 +00:00
if ( answer ) {
2011-11-26 16:15:25 +00:00
$ ( 'input#_shipping_first_name' ) . val ( $ ( 'input#_billing_first_name' ) . val ( ) ) ;
$ ( 'input#_shipping_last_name' ) . val ( $ ( 'input#_billing_last_name' ) . val ( ) ) ;
$ ( 'input#_shipping_company' ) . val ( $ ( 'input#_billing_company' ) . val ( ) ) ;
$ ( 'input#_shipping_address_1' ) . val ( $ ( 'input#_billing_address_1' ) . val ( ) ) ;
$ ( 'input#_shipping_address_2' ) . val ( $ ( 'input#_billing_address_2' ) . val ( ) ) ;
$ ( 'input#_shipping_city' ) . val ( $ ( 'input#_billing_city' ) . val ( ) ) ;
$ ( 'input#_shipping_postcode' ) . val ( $ ( 'input#_billing_postcode' ) . val ( ) ) ;
2012-08-10 11:31:18 +00:00
$ ( '#_shipping_country' ) . val ( $ ( '#_billing_country' ) . val ( ) ) ;
2012-08-01 12:43:46 +00:00
$ ( 'input#_shipping_state' ) . val ( $ ( 'input#_billing_state' ) . val ( ) ) ;
2011-08-09 15:16:18 +00:00
}
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-11-13 14:54:34 +00:00
// Add a tax row
2012-12-28 13:02:12 +00:00
$ ( 'a.add_tax_row' ) . click ( function ( ) {
2012-08-01 12:43:46 +00:00
2012-11-13 14:54:34 +00:00
var data = {
order _id : woocommerce _writepanel _params . post _id ,
action : 'woocommerce_add_line_tax' ,
security : woocommerce _writepanel _params . calc _totals _nonce
} ;
$ ( '#tax_rows' ) . closest ( '.totals_group' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
$ ( '#tax_rows' ) . append ( response ) . closest ( '.totals_group' ) . unblock ( ) ;
}
} ) ;
2012-08-01 12:43:46 +00:00
2012-01-27 15:00:03 +00:00
return false ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-13 14:54:34 +00:00
// Delete a tax row
2013-01-25 03:22:44 +00:00
$ ( '#tax_rows' ) . on ( 'click' , 'a.delete_tax_row' , function ( ) {
2012-11-27 16:22:47 +00:00
2013-01-25 03:26:16 +00:00
var $tax _row = $ ( this ) . closest ( '.tax_row' ) ;
var tax _row _id = $tax _row . attr ( 'data-order_item_id' ) ;
2012-11-27 16:22:47 +00:00
2012-11-13 14:54:34 +00:00
var data = {
tax _row _id : tax _row _id ,
action : 'woocommerce_remove_line_tax' ,
security : woocommerce _writepanel _params . calc _totals _nonce
} ;
$ ( '#tax_rows' ) . closest ( '.totals_group' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
$ . ajax ( {
url : woocommerce _writepanel _params . ajax _url ,
data : data ,
type : 'POST' ,
success : function ( response ) {
$tax _row . remove ( ) ;
$ ( '#tax_rows' ) . closest ( '.totals_group' ) . unblock ( ) ;
}
} ) ;
2012-11-27 16:22:47 +00:00
2011-12-31 19:03:41 +00:00
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// PRODUCT TYPE SPECIFIC OPTIONS
$ ( 'select#product-type' ) . change ( function ( ) {
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// Get value
2011-11-05 19:03:03 +00:00
var select _val = $ ( this ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
if ( select _val == 'variable' ) {
2011-12-24 16:57:36 +00:00
$ ( 'input#_manage_stock' ) . change ( ) ;
2012-12-07 10:51:06 +00:00
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
2011-11-05 19:03:03 +00:00
}
2012-08-01 12:43:46 +00:00
2011-11-05 19:03:03 +00:00
else if ( select _val == 'grouped' ) {
2012-12-07 10:51:06 +00:00
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
2011-11-05 19:03:03 +00:00
}
2012-08-01 12:43:46 +00:00
2011-11-08 16:15:36 +00:00
else if ( select _val == 'external' ) {
2012-12-07 10:51:06 +00:00
$ ( 'input#_downloadable' ) . prop ( 'checked' , false ) ;
$ ( 'input#_virtual' ) . removeAttr ( 'checked' ) ;
2011-11-08 16:15:36 +00:00
}
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
show _and _hide _panels ( ) ;
2012-08-15 18:28:08 +00:00
$ ( 'ul.wc-tabs li:visible' ) . eq ( 0 ) . find ( 'a' ) . click ( ) ;
2012-08-01 12:43:46 +00:00
2011-08-10 17:11:11 +00:00
$ ( 'body' ) . trigger ( 'woocommerce-product-type-change' , select _val , $ ( this ) ) ;
2011-08-09 15:16:18 +00:00
} ) . change ( ) ;
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +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 ( ) ;
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
// Hide/Show all with rules
$ ( '.hide_if_simple, .hide_if_grouped, .hide_if_variable, .hide_if_external, .hide_if_downloadable, .hide_if_virtual' ) . show ( ) ;
$ ( '.show_if_simple, .show_if_grouped, .show_if_variable, .show_if_external, .show_if_downloadable, .show_if_virtual' ) . hide ( ) ;
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
// Shows rules
if ( is _downloadable ) {
2011-11-05 19:03:03 +00:00
$ ( '.show_if_downloadable' ) . show ( ) ;
}
2012-12-07 10:51:06 +00:00
if ( is _virtual ) {
$ ( '.show_if_virtual' ) . show ( ) ;
}
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
if ( product _type == 'simple' ) {
$ ( '.show_if_simple' ) . show ( ) ;
} else if ( product _type == 'variable' ) {
$ ( '.show_if_variable' ) . show ( ) ;
} else if ( product _type == 'grouped' ) {
$ ( '.show_if_grouped' ) . show ( ) ;
} else if ( product _type == 'external' ) {
$ ( '.show_if_external' ) . show ( ) ;
}
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
// Hide rules
if ( is _downloadable ) {
$ ( '.hide_if_downloadable' ) . hide ( ) ;
}
if ( is _virtual ) {
2011-12-24 15:32:18 +00:00
$ ( '.hide_if_virtual' ) . hide ( ) ;
2011-11-06 13:45:18 +00:00
}
2012-08-01 12:43:46 +00:00
2012-12-07 10:51:06 +00:00
if ( product _type == 'simple' ) {
$ ( '.hide_if_simple' ) . hide ( ) ;
} else if ( product _type == 'variable' ) {
$ ( '.hide_if_variable' ) . hide ( ) ;
} else if ( product _type == 'grouped' ) {
$ ( '.hide_if_grouped' ) . hide ( ) ;
} else if ( product _type == 'external' ) {
$ ( '.hide_if_external' ) . hide ( ) ;
}
}
2012-08-01 12:43:46 +00:00
2011-12-24 15:32:18 +00:00
// Sale price schedule
2012-10-08 11:51:00 +00:00
$ ( '.sale_price_dates_fields' ) . each ( function ( ) {
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
var $these _sale _dates = $ ( this ) ;
var sale _schedule _set = false ;
var $wrap = $these _sale _dates . closest ( 'div, table' ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
$these _sale _dates . find ( 'input' ) . each ( function ( ) {
2012-11-27 16:22:47 +00:00
if ( $ ( this ) . val ( ) != '' )
2012-10-08 11:51:00 +00:00
sale _schedule _set = true ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
if ( sale _schedule _set ) {
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
$wrap . find ( '.sale_schedule' ) . hide ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . show ( ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
} else {
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
$wrap . find ( '.sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . hide ( ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
}
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.sale_schedule' , function ( ) {
var $wrap = $ ( this ) . closest ( 'div, table' ) ;
2012-11-27 16:22:47 +00:00
2011-12-24 15:32:18 +00:00
$ ( this ) . hide ( ) ;
2012-10-08 11:51:00 +00:00
$wrap . find ( '.cancel_sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . show ( ) ;
2012-11-27 16:22:47 +00:00
2011-12-24 15:32:18 +00:00
return false ;
} ) ;
2012-10-08 11:51:00 +00:00
$ ( '#woocommerce-product-data' ) . on ( 'click' , '.cancel_sale_schedule' , function ( ) {
var $wrap = $ ( this ) . closest ( 'div, table' ) ;
2012-11-27 16:22:47 +00:00
2012-10-08 11:51:00 +00:00
$ ( this ) . hide ( ) ;
$wrap . find ( '.sale_schedule' ) . show ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . hide ( ) ;
$wrap . find ( '.sale_price_dates_fields' ) . find ( 'input' ) . val ( '' ) ;
2012-11-27 16:22:47 +00:00
2011-12-24 15:32:18 +00:00
return false ;
} ) ;
2012-11-27 16:22:47 +00:00
2011-08-09 15:16:18 +00:00
// STOCK OPTIONS
2011-12-24 16:57:36 +00:00
$ ( 'input#_manage_stock' ) . change ( function ( ) {
2011-11-05 19:03:03 +00:00
if ( $ ( this ) . is ( ':checked' ) ) $ ( 'div.stock_fields' ) . show ( ) ;
else $ ( 'div.stock_fields' ) . hide ( ) ;
2011-08-09 15:16:18 +00:00
} ) . change ( ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// DATE PICKER FIELDS
2012-10-08 11:51:00 +00:00
var dates = $ ( ".sale_price_dates_fields input" ) . datepicker ( {
2011-09-19 10:30:23 +00:00
defaultDate : "" ,
dateFormat : "yy-mm-dd" ,
numberOfMonths : 1 ,
showButtonPanel : true ,
showOn : "button" ,
buttonImage : woocommerce _writepanel _params . calendar _image ,
buttonImageOnly : true ,
onSelect : function ( selectedDate ) {
2012-11-13 23:58:32 +00:00
var option = $ ( this ) . is ( '#_sale_price_dates_from, .sale_price_dates_from' ) ? "minDate" : "maxDate" ;
var instance = $ ( this ) . data ( "datepicker" ) ,
2011-11-05 19:03:03 +00:00
date = $ . datepicker . parseDate (
2011-09-19 10:30:23 +00:00
instance . settings . dateFormat ||
2011-11-05 19:03:03 +00:00
$ . datepicker . _defaults . dateFormat ,
2011-09-19 10:30:23 +00:00
selectedDate , instance . settings ) ;
dates . not ( this ) . datepicker ( "option" , option , date ) ;
2011-08-09 15:16:18 +00:00
}
2011-09-19 10:30:23 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2011-11-05 19:03:03 +00:00
$ ( ".date-picker" ) . datepicker ( {
2011-09-20 15:05:07 +00:00
dateFormat : "yy-mm-dd" ,
numberOfMonths : 1 ,
showButtonPanel : true ,
showOn : "button" ,
buttonImage : woocommerce _writepanel _params . calendar _image ,
buttonImageOnly : true
} ) ;
2012-08-01 12:43:46 +00:00
2012-03-26 17:30:00 +00:00
$ ( ".date-picker-field" ) . datepicker ( {
dateFormat : "yy-mm-dd" ,
numberOfMonths : 1 ,
showButtonPanel : true ,
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-25 11:43:25 +00:00
// META BOXES
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
// Open/close
2012-03-15 13:20:44 +00:00
jQuery ( '.wc-metaboxes-wrapper' ) . on ( 'click' , '.wc-metabox h3' , function ( event ) {
// If the user clicks on some form input inside the h3, like a select list (for variations), the box should not be toggled
2012-03-20 14:59:04 +00:00
if ( $ ( event . target ) . filter ( ':input, option' ) . length ) return ;
2012-03-15 13:20:44 +00:00
2012-02-25 19:48:09 +00:00
jQuery ( this ) . next ( '.wc-metabox-content' ) . toggle ( ) ;
2012-12-18 07:23:13 +00:00
} )
. on ( 'click' , '.expand_all' , function ( event ) {
jQuery ( this ) . closest ( '.wc-metaboxes-wrapper' ) . find ( '.wc-metabox > table' ) . show ( ) ;
return false ;
} )
. on ( 'click' , '.close_all' , function ( event ) {
jQuery ( this ) . closest ( '.wc-metaboxes-wrapper' ) . find ( '.wc-metabox > table' ) . hide ( ) ;
return false ;
2012-02-13 19:21:52 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-25 11:43:25 +00:00
jQuery ( '.wc-metabox.closed' ) . each ( function ( ) {
2012-02-25 19:48:09 +00:00
jQuery ( this ) . find ( '.wc-metabox-content' ) . hide ( ) ;
2012-02-13 19:21:52 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-25 11:43:25 +00:00
// ATTRIBUTE TABLES
2011-09-11 17:35:22 +00:00
// Multiselect attributes
2012-08-01 12:43:46 +00:00
$ ( ".woocommerce_attributes select.multiselect" ) . chosen ( ) ;
2011-08-09 15:16:18 +00:00
// Initial order
2012-02-13 19:21:52 +00:00
var woocommerce _attribute _items = $ ( '.woocommerce_attributes' ) . find ( '.woocommerce_attribute' ) . get ( ) ;
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
woocommerce _attribute _items . sort ( function ( a , b ) {
var compA = parseInt ( $ ( a ) . attr ( 'rel' ) ) ;
var compB = parseInt ( $ ( b ) . attr ( 'rel' ) ) ;
2011-08-09 15:16:18 +00:00
return ( compA < compB ) ? - 1 : ( compA > compB ) ? 1 : 0 ;
} )
2012-02-13 19:21:52 +00:00
$ ( woocommerce _attribute _items ) . each ( function ( idx , itm ) { $ ( '.woocommerce_attributes' ) . append ( itm ) ; } ) ;
2012-08-01 12:43:46 +00:00
2012-03-13 13:26:20 +00:00
function attribute _row _indexes ( ) {
2012-08-01 12:43:46 +00:00
$ ( '.woocommerce_attributes .woocommerce_attribute' ) . each ( function ( index , el ) {
$ ( '.attribute_position' , el ) . val ( parseInt ( $ ( el ) . index ( '.woocommerce_attributes .woocommerce_attribute' ) ) ) ;
2012-02-13 19:21:52 +00:00
} ) ;
2011-08-09 15:16:18 +00:00
} ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// Add rows
2012-02-13 19:21:52 +00:00
$ ( 'button.add_attribute' ) . on ( 'click' , function ( ) {
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
var size = $ ( '.woocommerce_attributes .woocommerce_attribute' ) . size ( ) ;
2012-08-01 12:43:46 +00:00
2011-11-05 19:03:03 +00:00
var attribute _type = $ ( 'select.attribute_taxonomy' ) . val ( ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
if ( ! attribute _type ) {
2012-08-01 12:43:46 +00:00
2011-11-05 19:03:03 +00:00
var product _type = $ ( 'select#product-type' ) . val ( ) ;
2011-09-11 13:28:15 +00:00
if ( product _type != 'variable' ) enable _variation = 'style="display:none;"' ; else enable _variation = '' ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// Add custom attribute row
2012-03-04 12:42:24 +00:00
$ ( '.woocommerce_attributes' ) . append ( ' < div class = "woocommerce_attribute wc-metabox" > \
2012-02-13 19:21:52 +00:00
< h3 > \
< button type = "button" class = "remove_row button" > ' + woocommerce_writepanel_params.remove_label + ' < / b u t t o n > \
< div class = "handlediv" title = "' + woocommerce_writepanel_params.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_writepanel_params.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_writepanel_params.values_label + ' : < / l a b e l > \
2012-02-14 10:59:00 +00:00
< textarea name = "attribute_values[' + size + ']" cols = "5" rows = "5" placeholder = "' + woocommerce_writepanel_params.text_attribute_tip + '" > < / t e x t a r e a > \
2012-02-13 19:21:52 +00:00
< / t d > \
< / t r > \
< tr > \
< td > \
< label > < input type = "checkbox" class = "checkbox" checked = "checked" name = "attribute_visibility[' + size + ']" value = "1" / > ' + woocommerce_writepanel_params.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" name = "attribute_variation[' + size + ']" value = "1" / > ' + woocommerce_writepanel_params.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 > ' ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
} else {
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
// Reveal taxonomy row
2012-02-13 19:21:52 +00:00
var thisrow = $ ( '.woocommerce_attributes .woocommerce_attribute.' + attribute _type ) ;
$ ( '.woocommerce_attributes' ) . append ( $ ( thisrow ) ) ;
$ ( thisrow ) . show ( ) . find ( '.woocommerce_attribute_data' ) . show ( ) ;
2012-03-13 13:26:20 +00:00
attribute _row _indexes ( ) ;
2012-08-01 12:43:46 +00:00
2011-08-09 15:16:18 +00:00
}
2012-08-01 12:43:46 +00:00
2012-02-09 18:10:38 +00:00
$ ( 'select.attribute_taxonomy' ) . val ( '' ) ;
2011-08-09 15:16:18 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
$ ( '.woocommerce_attributes' ) . on ( 'blur' , 'input.attribute_name' , function ( ) {
$ ( this ) . closest ( '.woocommerce_attribute' ) . find ( 'strong.attribute_name' ) . text ( $ ( this ) . val ( ) ) ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
$ ( '.woocommerce_attributes' ) . on ( 'click' , 'button.select_all_attributes' , function ( ) {
$ ( this ) . closest ( 'td' ) . find ( 'select option' ) . attr ( "selected" , "selected" ) ;
$ ( this ) . closest ( 'td' ) . find ( 'select' ) . trigger ( "liszt:updated" ) ;
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
$ ( '.woocommerce_attributes' ) . on ( 'click' , 'button.select_no_attributes' , function ( ) {
$ ( this ) . closest ( 'td' ) . find ( 'select option' ) . removeAttr ( "selected" ) ;
$ ( this ) . closest ( 'td' ) . find ( 'select' ) . trigger ( "liszt:updated" ) ;
2011-08-09 15:16:18 +00:00
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
$ ( '.woocommerce_attributes' ) . on ( 'click' , 'button.remove_row' , function ( ) {
2012-02-12 16:29:32 +00:00
var answer = confirm ( woocommerce _writepanel _params . remove _attribute ) ;
2011-08-09 15:16:18 +00:00
if ( answer ) {
2012-02-13 19:21:52 +00:00
var $parent = $ ( this ) . parent ( ) . parent ( ) ;
2012-08-01 12:43:46 +00:00
2012-02-13 19:21:52 +00:00
if ( $parent . is ( '.taxonomy' ) ) {
$parent . find ( 'select, input[type=text]' ) . val ( '' ) ;
$parent . hide ( ) ;
} else {
$parent . find ( 'select, input[type=text]' ) . val ( '' ) ;
$parent . hide ( ) ;
2012-03-13 13:26:20 +00:00
attribute _row _indexes ( ) ;
2012-02-13 19:21:52 +00:00
}
2011-08-09 15:16:18 +00:00
}
return false ;
} ) ;
2012-08-01 12:43:46 +00:00
2011-09-19 14:57:17 +00:00
// Attribute ordering
2012-02-13 19:21:52 +00:00
$ ( '.woocommerce_attributes' ) . sortable ( {
items : '.woocommerce_attribute' ,
2011-09-19 14:57:17 +00:00
cursor : 'move' ,
axis : 'y' ,
2012-02-13 19:21:52 +00:00
handle : 'h3' ,
2011-09-19 14:57:17 +00:00
scrollSensitivity : 40 ,
2012-02-13 19:21:52 +00:00
forcePlaceholderSize : true ,
helper : 'clone' ,
opacity : 0.65 ,
2012-02-25 11:43:25 +00:00
placeholder : 'wc-metabox-sortable-placeholder' ,
2011-09-19 14:57:17 +00:00
start : function ( event , ui ) {
ui . item . css ( 'background-color' , '#f6f6f6' ) ;
} ,
stop : function ( event , ui ) {
ui . item . removeAttr ( 'style' ) ;
2012-03-13 13:26:20 +00:00
attribute _row _indexes ( ) ;
2011-09-19 14:57:17 +00:00
}
2011-08-09 15:16:18 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
// Add a new attribute (via ajax)
$ ( '.woocommerce_attributes' ) . on ( 'click' , 'button.add_new_attribute' , function ( ) {
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
$ ( '.woocommerce_attributes' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
var attribute = $ ( this ) . attr ( 'data-attribute' ) ;
var $wrapper = $ ( this ) . closest ( '.woocommerce_attribute_data' ) ;
var new _attribute _name = prompt ( woocommerce _writepanel _params . new _attribute _prompt ) ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
if ( new _attribute _name ) {
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
var data = {
action : 'woocommerce_add_new_attribute' ,
taxonomy : attribute ,
term : new _attribute _name ,
security : woocommerce _writepanel _params . add _attribute _nonce
} ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
$ . post ( woocommerce _writepanel _params . ajax _url , data , function ( response ) {
2012-08-01 12:43:46 +00:00
2013-01-22 16:31:54 +00:00
if ( response . error ) {
2012-04-08 23:57:38 +00:00
// Error
2013-01-22 16:31:54 +00:00
alert ( response . error ) ;
} else if ( response . slug ) {
2012-04-08 23:57:38 +00:00
// Success
2013-01-22 16:31:54 +00:00
$wrapper . find ( 'select.attribute_values' ) . append ( '<option value="' + response . slug + '" selected="selected">' + response . name + '</option>' ) ;
2012-04-08 23:57:38 +00:00
$wrapper . find ( 'select.attribute_values' ) . trigger ( "liszt:updated" ) ;
}
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
$ ( '.woocommerce_attributes' ) . unblock ( ) ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2012-05-26 16:42:26 +00:00
} else {
$ ( '.woocommerce_attributes' ) . unblock ( ) ;
2012-04-08 23:57:38 +00:00
}
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
return false ;
2012-08-01 12:43:46 +00:00
2012-04-08 23:57:38 +00:00
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
// Save attributes and update variations
$ ( '.save_attributes' ) . on ( 'click' , function ( ) {
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
$ ( '.woocommerce_attributes' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . plugin _url + '/assets/images/ajax-loader.gif) no-repeat center' , opacity : 0.6 } } ) ;
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
var data = {
post _id : woocommerce _writepanel _params . post _id ,
2012-12-18 07:08:16 +00:00
data : $ ( '.woocommerce_attributes' ) . find ( 'input, select, textarea' ) . serialize ( ) ,
2012-11-26 17:27:55 +00:00
action : 'woocommerce_save_attributes' ,
security : woocommerce _writepanel _params . save _attributes _nonce
} ;
$ . post ( woocommerce _writepanel _params . ajax _url , data , function ( response ) {
var this _page = window . location . toString ( ) ;
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
this _page = this _page . replace ( 'post-new.php?' , 'post.php?post=' + woocommerce _writepanel _params . post _id + '&action=edit&' ) ;
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
// Load variations panel
$ ( '#variable_product_options' ) . block ( { message : null , overlayCSS : { background : '#fff url(' + woocommerce _writepanel _params . 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 ( ) ;
} ) ;
$ ( '.woocommerce_attributes' ) . unblock ( ) ;
} ) ;
2012-11-27 16:22:47 +00:00
2012-11-26 17:27:55 +00:00
} ) ;
2012-08-01 12:43:46 +00:00
2011-11-09 23:06:17 +00:00
// Uploading files
2012-12-18 12:04:33 +00:00
var downloadable _file _frame ;
2012-12-28 13:02:12 +00:00
jQuery ( document ) . on ( 'click' , '.upload_file_button' , function ( event ) {
2012-12-18 12:04:33 +00:00
var $el = $ ( this ) ;
var $file _path _field = $el . parent ( ) . find ( '.file_paths' ) ;
var file _paths = $file _path _field . val ( ) ;
event . preventDefault ( ) ;
// If the media frame already exists, reopen it.
if ( downloadable _file _frame ) {
downloadable _file _frame . open ( ) ;
return ;
}
2012-12-18 21:56:01 +00:00
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' ,
} )
] ;
2012-12-18 12:04:33 +00:00
// 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 ,
2012-12-18 21:56:01 +00:00
states : downloadable _file _states ,
2012-12-18 12:04:33 +00:00
} ) ;
// When an image is selected, run a callback.
downloadable _file _frame . on ( 'select' , function ( ) {
var selection = downloadable _file _frame . state ( ) . get ( 'selection' ) ;
selection . map ( function ( attachment ) {
attachment = attachment . toJSON ( ) ;
if ( attachment . url )
file _paths = file _paths ? file _paths + "\n" + attachment . url : attachment . url
} ) ;
$file _path _field . val ( file _paths ) ;
} ) ;
2012-12-18 21:56:01 +00:00
// 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'
} ;
} ) ;
2012-12-18 12:04:33 +00:00
// Finally, open the modal.
downloadable _file _frame . open ( ) ;
} ) ;
2011-08-09 15:16:18 +00:00
2012-09-18 18:07:13 +00:00
} ) ;
/ * !
* accounting . js v0 . 3.2 , copyright 2011 Joss Crowcroft , MIT license , http : //josscrowcroft.github.com/accounting.js
* /
( function ( p , z ) { function q ( a ) { return ! ! ( "" === a || a && a . charCodeAt && a . substr ) } function m ( a ) { return u ? u ( a ) : "[object Array]" === v . call ( a ) } function r ( a ) { return "[object Object]" === v . call ( a ) } function s ( a , b ) { var d , a = a || { } , b = b || { } ; for ( d in b ) b . hasOwnProperty ( d ) && null == a [ d ] && ( a [ d ] = b [ d ] ) ; return a } function j ( a , b , d ) { var c = [ ] , e , h ; if ( ! a ) return c ; if ( w && a . map === w ) return a . map ( b , d ) ; for ( e = 0 , h = a . length ; e < h ; e ++ ) c [ e ] = b . call ( d , a [ e ] , e , a ) ; return c } function n ( a , b ) { a = Math . round ( Math . abs ( a ) ) ; return isNaN ( a ) ? b : a } function x ( a ) { var b = c . settings . currency . format ; "function" === typeof a && ( a = a ( ) ) ; return q ( a ) && a . match ( "%v" ) ? { pos : a , neg : a . replace ( "-" , "" ) . replace ( "%v" , "-%v" ) , zero : a } : ! a || ! a . pos || ! a . pos . match ( "%v" ) ? ! q ( b ) ? b : c . settings . currency . format = { pos : b , neg : b . replace ( "%v" , "-%v" ) , zero : b } : a } var c = { version : "0.3.2" , settings : { currency : { symbol : "$" , format : "%s%v" , decimal : "." , thousand : "," , precision : 2 , grouping : 3 } , number : { precision : 0 , grouping : 3 , thousand : "," , decimal : "." } } } , w = Array . prototype . map , u = Array . isArray , v = Object . prototype . toString , o = c . unformat = c . parse = function ( a , b ) { if ( m ( a ) ) return j ( a , function ( a ) { return o ( a , b ) } ) ; a = a || 0 ; if ( "number" === typeof a ) return a ; var b = b || "." , c = RegExp ( "[^0-9-" + b + "]" , [ "g" ] ) , c = parseFloat ( ( "" + a ) . replace ( /\((.*)\)/ , "-$1" ) . replace ( c , "" ) . replace ( b , "." ) ) ; return ! isNaN ( c ) ? c : 0 } , y = c . toFixed = function ( a , b ) { var b = n ( b , c . settings . number . precision ) , d = Math . pow ( 10 , b ) ; return ( Math . round ( c . unformat ( a ) * d ) / d ) . toFixed ( b ) } , t = c . formatNumber = function ( a , b , d , i ) { if ( m ( a ) ) return j ( a , function ( a ) { return t ( a , b , d , i ) } ) ; var a = o ( a ) , e = s ( r ( b ) ? b : { precision : b , thousand : d , decimal : i } , c . settings . number ) , h = n ( e . precision ) , f = 0 > a ? "-" : "" , g = parseInt ( y ( Math . abs ( a || 0 ) , h ) , 10 ) + "" , l = 3 < g . length ? g . length % 3 : 0 ; return f + ( l ? g . substr ( 0 , l ) + e . thousand : "" ) + g . substr ( l ) . replace ( /(\d{3})(?=\d)/g , "$1" + e . thousand ) + ( h ? e . decimal + y ( Math . abs ( a ) , h ) . split ( "." ) [ 1 ] : "" ) } , A = c . formatMoney = function ( a , b , d , i , e , h ) { if ( m ( a ) ) return j ( a , function ( a ) { return A ( a , b , d , i , e , h ) } ) ; var a = o ( a ) , f = s ( r ( b ) ? b : { symbol : b , precision : d , thousand : i , decimal : e , format : h } , c . settings . currency ) , g = x ( f . format ) ; return ( 0 < a ? g . pos : 0 > a ? g . neg : g . zero ) . replace ( "%s" , f . symbol ) . replace ( "%v" , t ( Math . abs ( a ) , n ( f . precision ) , f . thousand , f . decimal ) ) } ; c . formatColumn = function ( a , b , d , i , e , h ) { if ( ! a ) return [ ] ; var f = s ( r ( b ) ? b : { symbol : b , precision : d , thousand : i , decimal : e , format : h } , c . settings . currency ) , g = x ( f . format ) , l = g . pos . indexOf ( "%s" ) < g . pos . indexOf ( "%v" ) ? ! 0 : ! 1 , k = 0 , a = j ( a , function ( a ) { if ( m ( a ) ) return c . formatColumn ( a , f ) ; a = o ( a ) ; a = ( 0 < a ? g . pos : 0 > a ? g . neg : g . zero ) . replace ( "%s" , f . symbol ) . replace ( "%v" , t ( Math . abs ( a ) , n ( f . precision ) , f . thousand , f . decimal ) ) ; if ( a . length > k ) k = a . length ; return a } ) ; return j ( a , function ( a ) { return q ( a ) && a . length < k ? l ? a . replace ( f . symbol , f . symbol + Array ( k - a . length + 1 ) . join ( " " ) ) : Array ( k - a . length + 1 ) . join ( " " ) + a : a } ) } ; if ( "undefined" !== typeof exports ) { if ( "undefined" !== typeof module && module . exports ) exports = module . exports = c ; exports . accounting = c } else "function" === typeof define && define . amd ? define ( [ ] , function ( ) { return c } ) : ( c . noConflict = function ( a ) { return function ( ) { p . accounting = a ; c . noConflict = z ; return c } } ( p . accounting ) , p . accounting = c ) } ) ( this ) ;