93 lines
2.7 KiB
JavaScript
93 lines
2.7 KiB
JavaScript
jQuery( function( $ ) {
|
|
|
|
// Orderby
|
|
$( '.woocommerce-ordering' ).on( 'change', 'select.orderby', function() {
|
|
$( this ).closest( 'form' ).submit();
|
|
});
|
|
|
|
// Target quantity inputs on product pages
|
|
$( 'input.qty:not(.product-quantity input.qty)' ).each( function() {
|
|
var min = parseFloat( $( this ).attr( 'min' ) );
|
|
|
|
if ( min >= 0 && parseFloat( $( this ).val() ) < min ) {
|
|
$( this ).val( min );
|
|
}
|
|
});
|
|
|
|
/* Storage Handling */
|
|
var $supports_html5_storage;
|
|
try {
|
|
$supports_html5_storage = ( 'sessionStorage' in window && window.sessionStorage !== null );
|
|
window.sessionStorage.setItem( 'wc', 'test' );
|
|
window.sessionStorage.removeItem( 'wc' );
|
|
} catch( err ) {
|
|
$supports_html5_storage = false;
|
|
}
|
|
|
|
function add_geolocation_to_links() {
|
|
if ( woocommerce_params.geolocation ) {
|
|
$( "a[href^='" + woocommerce_params.home_url + "'], a[href^='/']").each( function() {
|
|
var $this = $(this);
|
|
var href = $this.attr('href');
|
|
|
|
if ( href.indexOf( 'location=' ) > 0 ) {
|
|
return;
|
|
}
|
|
|
|
if ( href.indexOf( '?' ) > 0 ) {
|
|
$this.attr( "href", href + '&location=' + woocommerce_params.geolocation );
|
|
} else {
|
|
$this.attr( "href", href + '?location=' + woocommerce_params.geolocation );
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
if ( $supports_html5_storage && '1' === woocommerce_params.is_woocommerce ) {
|
|
|
|
// Redirect based on geolocation to get around static caching
|
|
var $geolocate_customer = {
|
|
url: woocommerce_params.wc_ajax_url + 'geolocate',
|
|
type: 'GET',
|
|
success: function( response ) {
|
|
if ( response.success && response.data.country ) {
|
|
sessionStorage.setItem( 'wc_geolocated_country', response.data.country );
|
|
sessionStorage.setItem( 'wc_geolocated_state', response.data.state );
|
|
handle_geolocation_redirect( response.data.country, response.data.state );
|
|
}
|
|
}
|
|
};
|
|
|
|
function handle_geolocation_redirect( country, state ) {
|
|
// Redirect if not base location
|
|
if ( country !== woocommerce_params.base_country || state !== woocommerce_params.base_state ) {
|
|
var this_page = window.location.toString();
|
|
|
|
if ( state ) {
|
|
state = ':' + state;
|
|
}
|
|
if ( this_page.indexOf( '?' ) > 0 ) {
|
|
this_page = this_page + '&location=' + country + state;
|
|
} else {
|
|
this_page = this_page + '?location=' + country + state;
|
|
}
|
|
window.location = this_page;
|
|
}
|
|
}
|
|
|
|
if ( window.location.toString().indexOf( 'location=' ) < 0 ) {
|
|
if ( ! sessionStorage.getItem( 'wc_geolocated_country' ) ) {
|
|
$.ajax( $geolocate_customer );
|
|
} else {
|
|
handle_geolocation_redirect( sessionStorage.getItem( 'wc_geolocated_country' ), sessionStorage.getItem( 'wc_geolocated_state' ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
$( document.body ).on( 'added_to_cart', function() {
|
|
add_geolocation_to_links();
|
|
});
|
|
|
|
add_geolocation_to_links();
|
|
});
|