Improved coupon product id input. Closes #157.
This commit is contained in:
parent
5eedbc6607
commit
32e7140517
|
@ -25,7 +25,9 @@ function woocommerce_coupon_data_meta_box($post) {
|
||||||
</style>
|
</style>
|
||||||
<div id="coupon_options" class="panel woocommerce_options_panel">
|
<div id="coupon_options" class="panel woocommerce_options_panel">
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
echo '<div class="options_group">';
|
||||||
|
|
||||||
// Type
|
// Type
|
||||||
woocommerce_wp_select( array( 'id' => 'discount_type', 'label' => __('Discount type', 'woocommerce'), 'options' => $woocommerce->get_coupon_discount_types() ) );
|
woocommerce_wp_select( array( 'id' => 'discount_type', 'label' => __('Discount type', 'woocommerce'), 'options' => $woocommerce->get_coupon_discount_types() ) );
|
||||||
|
|
||||||
|
@ -41,17 +43,63 @@ function woocommerce_coupon_data_meta_box($post) {
|
||||||
// Free Shipping
|
// Free Shipping
|
||||||
woocommerce_wp_checkbox( array( 'id' => 'free_shipping', 'label' => __('Enable free shipping', 'woocommerce'), 'description' => sprintf(__('Check this box if the coupon enables free shipping (see <a href="%s">Free Shipping</a>)', 'woocommerce'), admin_url('admin.php?page=woocommerce&tab=shipping_methods&subtab=shipping-free_shipping')) ) );
|
woocommerce_wp_checkbox( array( 'id' => 'free_shipping', 'label' => __('Enable free shipping', 'woocommerce'), 'description' => sprintf(__('Check this box if the coupon enables free shipping (see <a href="%s">Free Shipping</a>)', 'woocommerce'), admin_url('admin.php?page=woocommerce&tab=shipping_methods&subtab=shipping-free_shipping')) ) );
|
||||||
|
|
||||||
|
echo '</div><div class="options_group">';
|
||||||
|
|
||||||
// Product ids
|
// Product ids
|
||||||
woocommerce_wp_text_input( array( 'id' => 'product_ids', 'label' => __('Product IDs', 'woocommerce'), 'placeholder' => _x('N/A', 'placeholder', 'woocommerce'), 'description' => __('(optional) Comma separate IDs which need to be in the cart to use this coupon or, for "Product Discounts", which products are discounted.', 'woocommerce') ) );
|
?>
|
||||||
|
<p class="form-field"><label for="product_ids"><?php _e('Products', 'woocommerce') ?></label>
|
||||||
|
<select id="product_ids" name="product_ids[]" class="ajax_chosen_select_products" multiple="multiple" data-placeholder="<?php _e('Search for a product...', 'woocommerce'); ?>">
|
||||||
|
<?php
|
||||||
|
$product_ids = get_post_meta( $post->ID, 'product_ids', true );
|
||||||
|
if ($product_ids) {
|
||||||
|
$product_ids = explode(',', $product_ids);
|
||||||
|
foreach ($product_ids as $product_id) {
|
||||||
|
$title = get_the_title($product_id);
|
||||||
|
$sku = get_post_meta($product_id, '_sku', true);
|
||||||
|
|
||||||
|
if (!$title) continue;
|
||||||
|
|
||||||
|
if (isset($sku) && $sku) $sku = ' (SKU: ' . $sku . ')';
|
||||||
|
|
||||||
|
echo '<option value="'.$product_id.'" selected="selected">'. $title . $sku .'</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select> <img class="help_tip" tip="<?php _e('Products which need to be in the cart to use this coupon or, for "Product Discounts", which products are discounted.', 'woocommerce') ?>" src="<?php echo $woocommerce->plugin_url(); ?>/assets/images/help.png" /></p>
|
||||||
|
<?php
|
||||||
|
|
||||||
// Exclude Product ids
|
// Exclude Product ids
|
||||||
woocommerce_wp_text_input( array( 'id' => 'exclude_product_ids', 'label' => __('Exclude Product IDs', 'woocommerce'), 'placeholder' => _x('N/A', 'placeholder', 'woocommerce'), 'description' => __('(optional) Comma separate IDs which must not be in the cart to use this coupon or, for "Product Discounts", which products are not discounted.', 'woocommerce') ) );
|
?>
|
||||||
|
<p class="form-field"><label for="exclude_product_ids"><?php _e('Exclude Products', 'woocommerce') ?></label>
|
||||||
|
<select id="exclude_product_ids" name="exclude_product_ids[]" class="ajax_chosen_select_products" multiple="multiple" data-placeholder="<?php _e('Search for a product…', 'woocommerce'); ?>">
|
||||||
|
<?php
|
||||||
|
$product_ids = get_post_meta( $post->ID, 'exclude_product_ids', true );
|
||||||
|
if ($product_ids) {
|
||||||
|
$product_ids = explode(',', $product_ids);
|
||||||
|
foreach ($product_ids as $product_id) {
|
||||||
|
$title = get_the_title($product_id);
|
||||||
|
$sku = get_post_meta($product_id, '_sku', true);
|
||||||
|
|
||||||
|
if (!$title) continue;
|
||||||
|
|
||||||
|
if (isset($sku) && $sku) $sku = ' (SKU: ' . $sku . ')';
|
||||||
|
|
||||||
|
echo '<option value="'.$product_id.'" selected="selected">'. $title . $sku .'</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select> <img class="help_tip" tip="<?php _e('Products which must not be in the cart to use this coupon or, for "Product Discounts", which products are not discounted.', 'woocommerce') ?>" src="<?php echo $woocommerce->plugin_url(); ?>/assets/images/help.png" /></p>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo '</div><div class="options_group">';
|
||||||
|
|
||||||
// Usage limit
|
// Usage limit
|
||||||
woocommerce_wp_text_input( array( 'id' => 'usage_limit', 'label' => __('Usage limit', 'woocommerce'), 'placeholder' => _x('Unlimited usage', 'placeholder', 'woocommerce'), 'description' => __('(optional) How many times this coupon can be used before it is void', 'woocommerce') ) );
|
woocommerce_wp_text_input( array( 'id' => 'usage_limit', 'label' => __('Usage limit', 'woocommerce'), 'placeholder' => _x('Unlimited usage', 'placeholder', 'woocommerce'), 'description' => __('How many times this coupon can be used before it is void', 'woocommerce') ) );
|
||||||
|
|
||||||
// Expiry date
|
// Expiry date
|
||||||
woocommerce_wp_text_input( array( 'id' => 'expiry_date', 'label' => __('Expiry date', 'woocommerce'), 'placeholder' => _x('Never expire', 'placeholder', 'woocommerce'), 'description' => __('(optional) The date this coupon will expire, <code>YYYY-MM-DD</code>', 'woocommerce'), 'class' => 'short date-picker' ) );
|
woocommerce_wp_text_input( array( 'id' => 'expiry_date', 'label' => __('Expiry date', 'woocommerce'), 'placeholder' => _x('Never expire', 'placeholder', 'woocommerce'), 'description' => __('The date this coupon will expire, <code>YYYY-MM-DD</code>', 'woocommerce'), 'class' => 'short date-picker' ) );
|
||||||
|
|
||||||
|
echo '</div>';
|
||||||
|
|
||||||
do_action('woocommerce_coupon_options');
|
do_action('woocommerce_coupon_options');
|
||||||
|
|
||||||
|
@ -75,14 +123,26 @@ function woocommerce_process_shop_coupon_meta( $post_id, $post ) {
|
||||||
// Add/Replace data to array
|
// Add/Replace data to array
|
||||||
$type = strip_tags(stripslashes( $_POST['discount_type'] ));
|
$type = strip_tags(stripslashes( $_POST['discount_type'] ));
|
||||||
$amount = strip_tags(stripslashes( $_POST['coupon_amount'] ));
|
$amount = strip_tags(stripslashes( $_POST['coupon_amount'] ));
|
||||||
$product_ids = strip_tags(stripslashes( $_POST['product_ids'] ));
|
|
||||||
$exclude_product_ids = strip_tags(stripslashes( $_POST['exclude_product_ids'] ));
|
|
||||||
$usage_limit = (isset($_POST['usage_limit']) && $_POST['usage_limit']>0) ? (int) $_POST['usage_limit'] : '';
|
$usage_limit = (isset($_POST['usage_limit']) && $_POST['usage_limit']>0) ? (int) $_POST['usage_limit'] : '';
|
||||||
$individual_use = isset($_POST['individual_use']) ? 'yes' : 'no';
|
$individual_use = isset($_POST['individual_use']) ? 'yes' : 'no';
|
||||||
$expiry_date = strip_tags(stripslashes( $_POST['expiry_date'] ));
|
$expiry_date = strip_tags(stripslashes( $_POST['expiry_date'] ));
|
||||||
$apply_before_tax = isset($_POST['apply_before_tax']) ? 'yes' : 'no';
|
$apply_before_tax = isset($_POST['apply_before_tax']) ? 'yes' : 'no';
|
||||||
$free_shipping = isset($_POST['free_shipping']) ? 'yes' : 'no';
|
$free_shipping = isset($_POST['free_shipping']) ? 'yes' : 'no';
|
||||||
|
|
||||||
|
if (isset($_POST['product_ids'])) {
|
||||||
|
$product_ids = (array) $_POST['product_ids'];
|
||||||
|
$product_ids = implode(',', array_filter(array_map('intval', $product_ids)));
|
||||||
|
} else {
|
||||||
|
$product_ids = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST['exclude_product_ids'])) {
|
||||||
|
$exclude_product_ids = (array) $_POST['exclude_product_ids'];
|
||||||
|
$exclude_product_ids = implode(',', array_filter(array_map('intval', $exclude_product_ids)));
|
||||||
|
} else {
|
||||||
|
$exclude_product_ids = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Save
|
// Save
|
||||||
update_post_meta( $post_id, 'discount_type', $type );
|
update_post_meta( $post_id, 'discount_type', $type );
|
||||||
update_post_meta( $post_id, 'coupon_amount', $amount );
|
update_post_meta( $post_id, 'coupon_amount', $amount );
|
||||||
|
|
|
@ -640,7 +640,7 @@ function process_product_meta_variable( $post_id ) {
|
||||||
// Disabled if downloadable and no URL
|
// Disabled if downloadable and no URL
|
||||||
if ($is_downloadable=='yes' && !$variable_file_path[$i]) $post_status = 'private';
|
if ($is_downloadable=='yes' && !$variable_file_path[$i]) $post_status = 'private';
|
||||||
|
|
||||||
// Generate a useful post title
|
/*// Generate a useful post title
|
||||||
$title = array();
|
$title = array();
|
||||||
|
|
||||||
foreach ($attributes as $attribute) :
|
foreach ($attributes as $attribute) :
|
||||||
|
@ -650,14 +650,16 @@ function process_product_meta_variable( $post_id ) {
|
||||||
endif;
|
endif;
|
||||||
endforeach;
|
endforeach;
|
||||||
|
|
||||||
$sku_string = '#'.$variation_id;
|
$sku_string = ($variable_sku[$i]) ? sprintf(__('(SKU: %s)', 'woocommerce'), $variable_sku[$i]) : sprintf(__('(ID: #%s)', 'woocommerce'), $variation_id);
|
||||||
if ($variable_sku[$i]) $sku_string .= ' SKU: ' . $variable_sku[$i];
|
*/
|
||||||
|
|
||||||
|
$variation_post_title = sprintf(__('Variation #%s of %s', 'woocommerce'), $variation_id, get_the_title($post_id));
|
||||||
|
|
||||||
// Update or Add post
|
// Update or Add post
|
||||||
if (!$variation_id) :
|
if (!$variation_id) :
|
||||||
|
|
||||||
$variation = array(
|
$variation = array(
|
||||||
'post_title' => '#' . $post_id . ' Variation ('.$sku_string.') - ' . implode(', ', $title),
|
'post_title' => $variation_post_title,
|
||||||
'post_content' => '',
|
'post_content' => '',
|
||||||
'post_status' => $post_status,
|
'post_status' => $post_status,
|
||||||
'post_author' => get_current_user_id(),
|
'post_author' => get_current_user_id(),
|
||||||
|
@ -668,7 +670,7 @@ function process_product_meta_variable( $post_id ) {
|
||||||
|
|
||||||
else :
|
else :
|
||||||
|
|
||||||
$wpdb->update( $wpdb->posts, array( 'post_status' => $post_status, 'post_title' => '#' . $post_id . ' Variation ('.$sku_string.') - ' . implode(', ', $title) ), array( 'ID' => $variation_id ) );
|
$wpdb->update( $wpdb->posts, array( 'post_status' => $post_status, 'post_title' => $variation_post_title ), array( 'ID' => $variation_id ) );
|
||||||
|
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,7 @@ function woocommerce_admin_scripts() {
|
||||||
wp_register_script( 'woocommerce_admin', $woocommerce->plugin_url() . '/assets/js/admin/woocommerce_admin'.$suffix.'.js', array('jquery', 'jquery-ui-widget', 'jquery-ui-core'), '1.0' );
|
wp_register_script( 'woocommerce_admin', $woocommerce->plugin_url() . '/assets/js/admin/woocommerce_admin'.$suffix.'.js', array('jquery', 'jquery-ui-widget', 'jquery-ui-core'), '1.0' );
|
||||||
wp_register_script( 'jquery-ui-datepicker', $woocommerce->plugin_url() . '/assets/js/admin/ui-datepicker.js', array('jquery','jquery-ui-core'), '1.0' );
|
wp_register_script( 'jquery-ui-datepicker', $woocommerce->plugin_url() . '/assets/js/admin/ui-datepicker.js', array('jquery','jquery-ui-core'), '1.0' );
|
||||||
wp_register_script( 'woocommerce_writepanel', $woocommerce->plugin_url() . '/assets/js/admin/write-panels'.$suffix.'.js', array('jquery', 'jquery-ui-datepicker') );
|
wp_register_script( 'woocommerce_writepanel', $woocommerce->plugin_url() . '/assets/js/admin/write-panels'.$suffix.'.js', array('jquery', 'jquery-ui-datepicker') );
|
||||||
|
wp_register_script( 'ajax-chosen', $woocommerce->plugin_url() . '/assets/js/ajax-chosen.jquery'.$suffix.'.js', array('jquery', 'chosen'), '1.0' );
|
||||||
wp_register_script( 'chosen', $woocommerce->plugin_url() . '/assets/js/chosen.jquery'.$suffix.'.js', array('jquery'), '1.0' );
|
wp_register_script( 'chosen', $woocommerce->plugin_url() . '/assets/js/chosen.jquery'.$suffix.'.js', array('jquery'), '1.0' );
|
||||||
|
|
||||||
// Get admin screen id
|
// Get admin screen id
|
||||||
|
@ -189,6 +190,7 @@ function woocommerce_admin_scripts() {
|
||||||
|
|
||||||
wp_enqueue_script( 'woocommerce_admin' );
|
wp_enqueue_script( 'woocommerce_admin' );
|
||||||
wp_enqueue_script('farbtastic');
|
wp_enqueue_script('farbtastic');
|
||||||
|
wp_enqueue_script( 'ajax-chosen' );
|
||||||
wp_enqueue_script( 'chosen' );
|
wp_enqueue_script( 'chosen' );
|
||||||
wp_enqueue_script('jquery-ui-sortable');
|
wp_enqueue_script('jquery-ui-sortable');
|
||||||
|
|
||||||
|
@ -209,6 +211,7 @@ function woocommerce_admin_scripts() {
|
||||||
wp_enqueue_script( 'jquery-ui-datepicker' );
|
wp_enqueue_script( 'jquery-ui-datepicker' );
|
||||||
wp_enqueue_script( 'media-upload' );
|
wp_enqueue_script( 'media-upload' );
|
||||||
wp_enqueue_script( 'thickbox' );
|
wp_enqueue_script( 'thickbox' );
|
||||||
|
wp_enqueue_script( 'ajax-chosen' );
|
||||||
wp_enqueue_script( 'chosen' );
|
wp_enqueue_script( 'chosen' );
|
||||||
|
|
||||||
$woocommerce_witepanel_params = array(
|
$woocommerce_witepanel_params = array(
|
||||||
|
@ -241,7 +244,7 @@ function woocommerce_admin_scripts() {
|
||||||
'add_order_item_nonce' => wp_create_nonce("add-order-item"),
|
'add_order_item_nonce' => wp_create_nonce("add-order-item"),
|
||||||
'calc_totals_nonce' => wp_create_nonce("calc-totals"),
|
'calc_totals_nonce' => wp_create_nonce("calc-totals"),
|
||||||
'get_customer_details_nonce' => wp_create_nonce("get-customer-details"),
|
'get_customer_details_nonce' => wp_create_nonce("get-customer-details"),
|
||||||
'upsell_crosssell_search_products_nonce' => wp_create_nonce("search-products"),
|
'search_products_nonce' => wp_create_nonce("search-products"),
|
||||||
'calendar_image' => $woocommerce->plugin_url().'/assets/images/calendar.png',
|
'calendar_image' => $woocommerce->plugin_url().'/assets/images/calendar.png',
|
||||||
'post_id' => $post->ID
|
'post_id' => $post->ID
|
||||||
);
|
);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1167,33 +1167,12 @@ table.wc_gateways, table.wc_shipping {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
img.help_tip {
|
||||||
|
vertical-align: middle;
|
||||||
|
margin: 0 0 0 9px;
|
||||||
|
}
|
||||||
|
|
||||||
.woocommerce {
|
.woocommerce {
|
||||||
table.widefat {
|
|
||||||
table.coupon_rows {
|
|
||||||
border: 0 !important;
|
|
||||||
width: 100%;
|
|
||||||
thead {
|
|
||||||
th {
|
|
||||||
padding: 1px;
|
|
||||||
border: 0;
|
|
||||||
font-weight: normal;
|
|
||||||
font-size: 11px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tbody {
|
|
||||||
td {
|
|
||||||
padding: 3px 3px 0 0;
|
|
||||||
border: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
input.text {
|
|
||||||
width: 95px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
table.form-table {
|
table.form-table {
|
||||||
margin: 0 0 0;
|
margin: 0 0 0;
|
||||||
textarea.input-text {
|
textarea.input-text {
|
||||||
|
@ -1208,6 +1187,7 @@ table.wc_gateways, table.wc_shipping {
|
||||||
margin: -4px 0 0 5px;
|
margin: -4px 0 0 5px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
cursor: help;
|
cursor: help;
|
||||||
|
line-height: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1340,7 +1320,7 @@ table.wc_gateways, table.wc_shipping {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#woocommerce-product-data .inside, #woocommerce-product-type-options .inside, #woocommerce-order-data .inside, #woocommerce-product-type .inside, #woocommerce-order-downloads .inside {
|
#woocommerce-product-data .inside, #woocommerce-product-type-options .inside, #woocommerce-order-data .inside, #woocommerce-product-type .inside, #woocommerce-order-downloads .inside, #woocommerce-coupon-data .inside {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
@ -1356,12 +1336,17 @@ table.wc_gateways, table.wc_shipping {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
.woocommerce_options_panel p, #woocommerce-product-type-options .panel p {
|
.woocommerce_options_panel p, #woocommerce-product-type-options .panel p {
|
||||||
overflow: hidden;
|
|
||||||
zoom: 1;
|
|
||||||
margin: 0 0 9px;
|
margin: 0 0 9px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
padding: 5px 9px;
|
padding: 5px 9px;
|
||||||
line-height: 24px;
|
line-height: 24px;
|
||||||
|
&:after {
|
||||||
|
content: ".";
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
clear: both;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.woocommerce_options_panel p {
|
.woocommerce_options_panel p {
|
||||||
margin: 9px 0 9px;
|
margin: 9px 0 9px;
|
||||||
|
@ -1950,6 +1935,13 @@ table.bar_chart {
|
||||||
width: 300px !important;
|
width: 300px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.form-field .chzn-container {
|
||||||
|
width: 60% !important;
|
||||||
|
float: left;
|
||||||
|
li.search-field input {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
.chzn-container .chzn-drop {
|
.chzn-container .chzn-drop {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border: 1px solid #aaa;
|
border: 1px solid #aaa;
|
||||||
|
|
|
@ -19,6 +19,77 @@ jQuery( function($){
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Chosen selects
|
||||||
|
jQuery("select.chosen_select").chosen();
|
||||||
|
|
||||||
|
jQuery("select.chosen_select_nostd").chosen({
|
||||||
|
allow_single_deselect: 'true'
|
||||||
|
});
|
||||||
|
|
||||||
|
// Ajax Chosen Product Selector
|
||||||
|
jQuery("select.ajax_chosen_select_products").ajaxChosen({
|
||||||
|
method: 'GET',
|
||||||
|
url: woocommerce_writepanel_params.ajax_url,
|
||||||
|
dataType: 'json',
|
||||||
|
data: {
|
||||||
|
action: 'woocommerce_json_search_products',
|
||||||
|
security: woocommerce_writepanel_params.search_products_nonce
|
||||||
|
}
|
||||||
|
}, function (data) {
|
||||||
|
|
||||||
|
var terms = {};
|
||||||
|
|
||||||
|
$.each(data, function (i, val) {
|
||||||
|
terms[i] = val;
|
||||||
|
});
|
||||||
|
|
||||||
|
return terms;
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.multi_select_products #product_search').bind('keyup click', function(){
|
||||||
|
|
||||||
|
$('.multi_select_products_source').addClass('loading');
|
||||||
|
$('.multi_select_products_source li:not(.product_search)').remove();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var search = $(this).val();
|
||||||
|
var input = this;
|
||||||
|
var name = $(this).attr('rel');
|
||||||
|
|
||||||
|
if (search.length<3) {
|
||||||
|
$('.multi_select_products_source').removeClass('loading');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var data = {
|
||||||
|
name: name,
|
||||||
|
search: encodeURI(search),
|
||||||
|
action: 'woocommerce_upsell_crosssell_search_products',
|
||||||
|
security: woocommerce_writepanel_params.search_products_nonce
|
||||||
|
};
|
||||||
|
|
||||||
|
xhr = $.ajax({
|
||||||
|
url: woocommerce_writepanel_params.ajax_url,
|
||||||
|
data: data,
|
||||||
|
type: 'POST',
|
||||||
|
success: function( response ) {
|
||||||
|
|
||||||
|
$('.multi_select_products_source').removeClass('loading');
|
||||||
|
$('.multi_select_products_source li:not(.product_search)').remove();
|
||||||
|
$(input).parent().parent().append( response );
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ORDERS
|
// ORDERS
|
||||||
jQuery('#woocommerce-order-actions input, #woocommerce-order-actions a').click(function(){
|
jQuery('#woocommerce-order-actions input, #woocommerce-order-actions a').click(function(){
|
||||||
window.onbeforeunload = '';
|
window.onbeforeunload = '';
|
||||||
|
@ -32,13 +103,6 @@ jQuery( function($){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
|
|
||||||
// Chosen selects
|
|
||||||
jQuery("select.chosen_select").chosen();
|
|
||||||
|
|
||||||
jQuery("select.chosen_select_nostd").chosen({
|
|
||||||
allow_single_deselect: 'true'
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#order_items_list .remove_row').live('click', function(){
|
$('#order_items_list .remove_row').live('click', function(){
|
||||||
var answer = confirm(woocommerce_writepanel_params.remove_item_notice);
|
var answer = confirm(woocommerce_writepanel_params.remove_item_notice);
|
||||||
if (answer){
|
if (answer){
|
||||||
|
@ -48,7 +112,6 @@ jQuery( function($){
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$('button.calc_line_taxes').live('click', function(){
|
$('button.calc_line_taxes').live('click', function(){
|
||||||
// Block write panel
|
// 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 } });
|
$('.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 } });
|
||||||
|
@ -184,10 +247,7 @@ jQuery( function($){
|
||||||
}, function() {
|
}, function() {
|
||||||
$('#woocommerce-order-totals .calculated').css('background-color', '');
|
$('#woocommerce-order-totals .calculated').css('background-color', '');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$('button.add_shop_order_item').click(function(){
|
$('button.add_shop_order_item').click(function(){
|
||||||
|
|
||||||
var add_item_id = $('select.add_item_id').val();
|
var add_item_id = $('select.add_item_id').val();
|
||||||
|
@ -733,7 +793,7 @@ jQuery( function($){
|
||||||
name: name,
|
name: name,
|
||||||
search: encodeURI(search),
|
search: encodeURI(search),
|
||||||
action: 'woocommerce_upsell_crosssell_search_products',
|
action: 'woocommerce_upsell_crosssell_search_products',
|
||||||
security: woocommerce_writepanel_params.upsell_crosssell_search_products_nonce
|
security: woocommerce_writepanel_params.search_products_nonce
|
||||||
};
|
};
|
||||||
|
|
||||||
xhr = $.ajax({
|
xhr = $.ajax({
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,74 @@
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
var chosen_xhr;
|
||||||
|
return $.fn.ajaxChosen = function(options, callback) {
|
||||||
|
var select;
|
||||||
|
select = this;
|
||||||
|
this.chosen();
|
||||||
|
this.next('.chzn-container').find(".search-field > input").bind('keyup', function() {
|
||||||
|
var field, val;
|
||||||
|
val = $.trim($(this).attr('value'));
|
||||||
|
if (val.length < 3 || val === $(this).data('prevVal')) return false;
|
||||||
|
if (this.timer) clearTimeout(this.timer);
|
||||||
|
$(this).data('prevVal', val);
|
||||||
|
field = $(this);
|
||||||
|
options.data.term = val;
|
||||||
|
if (typeof success === "undefined" || success === null) {
|
||||||
|
success = options.success;
|
||||||
|
}
|
||||||
|
options.success = function(data) {
|
||||||
|
var items;
|
||||||
|
if (!(data != null)) return;
|
||||||
|
select.find('option').each(function() {
|
||||||
|
if (!$(this).is(":selected")) return $(this).remove();
|
||||||
|
});
|
||||||
|
items = callback(data);
|
||||||
|
$.each(items, function(value, text) {
|
||||||
|
return $("<option />").attr('value', value).html(text).appendTo(select);
|
||||||
|
});
|
||||||
|
select.trigger("liszt:updated");
|
||||||
|
field.attr('value', val);
|
||||||
|
if (typeof success !== "undefined" && success !== null) return success();
|
||||||
|
};
|
||||||
|
return this.timer = setTimeout(function() {
|
||||||
|
if (chosen_xhr) chosen_xhr.abort();
|
||||||
|
chosen_xhr = $.ajax(options);
|
||||||
|
return chosen_xhr;
|
||||||
|
}, 800);
|
||||||
|
});
|
||||||
|
return this.next('.chzn-container').find(".chzn-search > input").bind('keyup', function() {
|
||||||
|
var field, val;
|
||||||
|
val = $.trim($(this).attr('value'));
|
||||||
|
if (val.length < 3 || val === $(this).data('prevVal')) return false;
|
||||||
|
field = $(this);
|
||||||
|
options.data = {
|
||||||
|
term: val
|
||||||
|
};
|
||||||
|
if (typeof success === "undefined" || success === null) {
|
||||||
|
success = options.success;
|
||||||
|
}
|
||||||
|
options.success = function(data) {
|
||||||
|
var items;
|
||||||
|
if (!(data != null)) return;
|
||||||
|
select.find('option').each(function() {
|
||||||
|
return $(this).remove();
|
||||||
|
});
|
||||||
|
items = callback(data);
|
||||||
|
$.each(items, function(value, text) {
|
||||||
|
return $("<option />").attr('value', value).html(text).appendTo(select);
|
||||||
|
});
|
||||||
|
select.trigger("liszt:updated");
|
||||||
|
field.attr('value', val);
|
||||||
|
if (typeof success !== "undefined" && success !== null) return success();
|
||||||
|
};
|
||||||
|
return this.timer = setTimeout(function() {
|
||||||
|
if (chosen_xhr) chosen_xhr.abort();
|
||||||
|
chosen_xhr = $.ajax(options);
|
||||||
|
return chosen_xhr;
|
||||||
|
}, 800);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
}).call(this);
|
|
@ -0,0 +1 @@
|
||||||
|
((function(){(function(a){var b;return a.fn.ajaxChosen=function(c,d){var e;e=this;this.chosen();this.next(".chzn-container").find(".search-field > input").bind("keyup",function(){var f,g;g=a.trim(a(this).attr("value"));if(g.length<3||g===a(this).data("prevVal"))return!1;this.timer&&clearTimeout(this.timer);a(this).data("prevVal",g);f=a(this);c.data.term=g;if(typeof success=="undefined"||success===null)success=c.success;c.success=function(b){var c;if(b==null)return;e.find("option").each(function(){if(!a(this).is(":selected"))return a(this).remove()});c=d(b);a.each(c,function(b,c){return a("<option />").attr("value",b).html(c).appendTo(e)});e.trigger("liszt:updated");f.attr("value",g);if(typeof success!="undefined"&&success!==null)return success()};return this.timer=setTimeout(function(){b&&b.abort();b=a.ajax(c);return b},800)});return this.next(".chzn-container").find(".chzn-search > input").bind("keyup",function(){var f,g;g=a.trim(a(this).attr("value"));if(g.length<3||g===a(this).data("prevVal"))return!1;f=a(this);c.data={term:g};if(typeof success=="undefined"||success===null)success=c.success;c.success=function(b){var c;if(b==null)return;e.find("option").each(function(){return a(this).remove()});c=d(b);a.each(c,function(b,c){return a("<option />").attr("value",b).html(c).appendTo(e)});e.trigger("liszt:updated");f.attr("value",g);if(typeof success!="undefined"&&success!==null)return success()};return this.timer=setTimeout(function(){b&&b.abort();b=a.ajax(c);return b},800)})}})(jQuery)})).call(this);
|
|
@ -815,6 +815,76 @@ function woocommerce_delete_order_note() {
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search for products and return json
|
||||||
|
*/
|
||||||
|
add_action('wp_ajax_woocommerce_json_search_products', 'woocommerce_json_search_products');
|
||||||
|
|
||||||
|
function woocommerce_json_search_products() {
|
||||||
|
|
||||||
|
check_ajax_referer( 'search-products', 'security' );
|
||||||
|
|
||||||
|
$term = (string) urldecode(stripslashes(strip_tags($_GET['term'])));
|
||||||
|
|
||||||
|
if (empty($term)) die();
|
||||||
|
|
||||||
|
if (is_numeric($term)) {
|
||||||
|
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'product',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post__in' => array(0, $term),
|
||||||
|
'fields' => 'ids'
|
||||||
|
);
|
||||||
|
|
||||||
|
$posts = get_posts( $args );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$args = array(
|
||||||
|
'post_type' => array('product', 'product_variation'),
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
's' => $term,
|
||||||
|
'fields' => 'ids'
|
||||||
|
);
|
||||||
|
|
||||||
|
$args2 = array(
|
||||||
|
'post_type' => array('product', 'product_variation'),
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'meta_query' => array(
|
||||||
|
array(
|
||||||
|
'key' => '_sku',
|
||||||
|
'value' => $term,
|
||||||
|
'compare' => 'LIKE'
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'fields' => 'ids'
|
||||||
|
);
|
||||||
|
|
||||||
|
$posts = array_unique(array_merge( get_posts( $args ), get_posts( $args2 ) ));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$found_products = array();
|
||||||
|
|
||||||
|
if ($posts) foreach ($posts as $post) {
|
||||||
|
|
||||||
|
$SKU = get_post_meta($post, '_sku', true);
|
||||||
|
|
||||||
|
if (isset($SKU) && $SKU) $SKU = ' (SKU: ' . $SKU . ')';
|
||||||
|
|
||||||
|
$found_products[$post] = get_the_title($post) . $SKU;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo json_encode( $found_products );
|
||||||
|
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search for products for upsells/crosssells
|
* Search for products for upsells/crosssells
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue