woocommerce/assets/js/frontend/geolocation.js

70 lines
2.0 KiB
JavaScript
Raw Normal View History

2015-07-10 05:13:30 +00:00
/*global wc_geolocation_params */
jQuery( function( $ ) {
2015-06-22 13:55:15 +00:00
var this_page = window.location.toString();
2015-06-22 13:55:15 +00:00
var $append_hashes = function() {
if ( wc_geolocation_params.hash ) {
2015-07-10 05:13:30 +00:00
$( 'a[href^="' + wc_geolocation_params.home_url + '"]:not(a[href*="v="]), a[href^="/"]:not(a[href*="v="])' ).each( function() {
var $this = $( this );
var href = $this.attr( 'href' );
if ( href.indexOf( '?' ) > 0 ) {
2015-07-10 05:13:30 +00:00
$this.attr( 'href', href + '&v=' + wc_geolocation_params.hash );
} else {
2015-07-10 05:13:30 +00:00
$this.attr( 'href', href + '?v=' + wc_geolocation_params.hash );
}
});
}
2015-07-10 05:13:30 +00:00
};
2015-06-22 13:55:15 +00:00
var $geolocation_redirect = function( hash ) {
if ( this_page.indexOf( '?v=' ) > 0 || this_page.indexOf( '&v=' ) > 0 ) {
2015-07-10 05:13:30 +00:00
this_page = this_page.replace( /v=[^&]+/, 'v=' + hash );
2015-06-22 13:55:15 +00:00
} else if ( this_page.indexOf( '?' ) > 0 ) {
this_page = this_page + '&v=' + hash;
} else {
2015-06-22 13:55:15 +00:00
this_page = this_page + '?v=' + hash;
}
window.location = this_page;
2015-07-10 05:13:30 +00:00
};
2015-06-22 13:55:15 +00:00
var $geolocate_customer = {
2015-07-27 16:55:37 +00:00
url: wc_geolocation_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_customer_location' ),
2015-06-22 13:55:15 +00:00
type: 'GET',
success: function( response ) {
if ( response.success && response.data.hash && response.data.hash !== wc_geolocation_params.hash ) {
$geolocation_redirect( response.data.hash );
}
}
2015-06-22 13:55:15 +00:00
};
if ( '1' !== wc_geolocation_params.is_checkout && '1' !== wc_geolocation_params.is_cart && '1' !== wc_geolocation_params.is_account_page ) {
2015-06-22 13:55:15 +00:00
$.ajax( $geolocate_customer );
2015-09-01 15:49:03 +00:00
// Support form elements
$( 'form' ).each(function(){
$this = $(this);
if ( 'get' === $this.attr( 'method' ).toLowerCase() ) {
$this.append( '<input type="hidden" name="v" value="' + wc_geolocation_params.hash + '" />' );
} else {
2015-09-01 15:49:03 +00:00
var href = $this.attr( 'action' );
if ( href ) {
if ( href.indexOf( '?' ) > 0 ) {
$this.attr( 'action', href + '&v=' + wc_geolocation_params.hash );
} else {
$this.attr( 'action', href + '?v=' + wc_geolocation_params.hash );
}
}
}
2015-09-01 15:49:03 +00:00
});
}
2015-06-17 12:59:04 +00:00
$( document.body ).on( 'added_to_cart', function() {
2015-06-22 13:55:15 +00:00
$append_hashes();
});
2015-09-01 15:49:03 +00:00
2015-07-10 05:13:30 +00:00
});