Untitled
unknown
plain_text
5 years ago
9.7 kB
11
Indexable
jQuery(document).ready(function($) {
var money = fx.noConflict();
var current_currency = wc_currency_converter_params.current_currency;
var currency_codes = JSON.parse( wc_currency_converter_params.currencies );
var currency_position = wc_currency_converter_params.currency_pos;
var currency_decimals = wc_currency_converter_params.num_decimals;
var remove_zeros = wc_currency_converter_params.trim_zeros;
money.rates = wc_currency_converter_params.rates;
money.base = wc_currency_converter_params.base;
money.settings.from = wc_currency_converter_params.currency;
money = set_default_rate_on_missing_currency( money, wc_currency_converter_params.currency );
money = set_default_rate_on_missing_currency( money, wc_currency_converter_params.current_currency );
if ( 'undefined' !== typeof( set_initial_currency ) ) {
jQuery.cookie( 'woocommerce_current_currency', set_initial_currency, { expires: 7, path: '/' } );
}
if ( money.settings.from == 'RMB' ) {
money.settings.from = 'CNY';
}
function set_default_rate_on_missing_currency( money, currency ) {
if ( ! money.rates[ currency ] ) {
money.rates[ currency ] = parseFloat( wc_currency_converter_params.currency_rate_default );
}
return money;
}
function switch_currency( to_currency ) {
if ( wc_currency_converter_params.symbol_positions[ to_currency ] ) {
currency_position = wc_currency_converter_params.symbol_positions[ to_currency ];
}
money = set_default_rate_on_missing_currency( money, to_currency );
// Span.amount
jQuery('span.amount').each(function(){
// Original markup
var original_code = jQuery(this).attr("data-original");
if (typeof original_code == 'undefined' || original_code == false) {
jQuery(this).attr("data-original", jQuery(this).html());
}
// Original price
var original_price = jQuery(this).attr("data-price");
if ( typeof original_price == 'undefined' || original_price == false ) {
// Get original price
var original_price = jQuery(this).html();
// Small hack to prevent errors with $ symbols
jQuery( '<del></del>' + original_price ).find('del').remove();
// Remove formatting
original_price = original_price.replace( wc_currency_converter_params.currency_format_symbol, '' );
original_price = original_price.split( wc_currency_converter_params.thousand_sep ).join( '' );
original_price = original_price.replace( wc_currency_converter_params.decimal_sep, '.' );
original_price = original_price.replace(/[^0-9\.]/g, '');
original_price = parseFloat( original_price );
// Store original price
jQuery(this).attr("data-price", original_price);
}
price = money( original_price ).from( money.settings.from ).to( to_currency );
price = price.toFixed( currency_decimals );
price = accounting.formatNumber( price, currency_decimals, wc_currency_converter_params.thousand_sep, wc_currency_converter_params.decimal_sep );
if ( remove_zeros ) {
price = price.replace( wc_currency_converter_params.zero_replace, '' );
}
if ( currency_codes[ to_currency ] ) {
if ( currency_position == 'left' ) {
jQuery(this).html( currency_codes[ to_currency ] + price );
} else if ( currency_position == 'right' ) {
jQuery(this).html( price + "" + currency_codes[ to_currency ] );
} else if ( currency_position == 'left_space' ) {
jQuery(this).html( currency_codes[ to_currency ] + " " + price );
} else if ( currency_position == 'right_space' ) {
jQuery(this).html( price + " " + currency_codes[ to_currency ] );
}
} else {
jQuery(this).html( price + " " + to_currency );
}
jQuery(this).attr( 'title', wc_currency_converter_params.i18n_oprice + original_price );
});
// #shipping_method prices
jQuery('#shipping_method option').each(function(){
// Original markup
var original_code = jQuery(this).attr("data-original");
if (typeof original_code == 'undefined' || original_code == false) {
original_code = jQuery(this).text();
jQuery(this).attr("data-original", original_code);
}
var current_option = original_code;
current_option = current_option.split(":");
if (!current_option[1] || current_option[1] == '') return;
price = current_option[1];
if (!price) return;
// Remove formatting
price = price.replace( wc_currency_converter_params.currency_format_symbol, '' );
price = price.split( wc_currency_converter_params.thousand_sep ).join( '' );
price = price.replace( wc_currency_converter_params.decimal_sep, '.' );
price = price.replace(/[^0-9\.]/g, '');
price = parseFloat( price );
price = money(price).to(to_currency);
price = price.toFixed( currency_decimals );
price = accounting.formatNumber( price, currency_decimals, wc_currency_converter_params.thousand_sep, wc_currency_converter_params.decimal_sep );
if ( remove_zeros ) {
price = price.replace( wc_currency_converter_params.zero_replace, '' );
}
jQuery(this).html( current_option[0] + ": " + price + " " + to_currency );
});
price_filter_update( to_currency );
jQuery('body').trigger( 'currency_converter_switch', [to_currency] );
jQuery('ul.currency_switcher li a').removeClass('active');
jQuery('ul.currency_switcher li a[data-currencycode="' + current_currency + '"]').addClass('active');
jQuery('select.currency_switcher').val( current_currency );
}
function price_filter_update( to_currency ) {
if ( to_currency ) {
jQuery('.ui-slider').each(function() {
theslider = jQuery( this );
values = theslider.slider("values");
original_price = "" + values[1];
original_price = original_price.replace( wc_currency_converter_params.currency_format_symbol, '' );
original_price = original_price.split( wc_currency_converter_params.thousand_sep ).join( '' );
original_price = original_price.replace( wc_currency_converter_params.decimal_sep, '.' );
original_price = original_price.replace(/[^0-9\.]/g, '');
original_price = parseFloat( original_price );
price_max = money(original_price).to(to_currency);
original_price = "" + values[0];
original_price = original_price.replace( wc_currency_converter_params.currency_format_symbol, '' );
original_price = original_price.split( wc_currency_converter_params.thousand_sep ).join( '' );
original_price = original_price.replace( wc_currency_converter_params.decimal_sep, '.' );
original_price = original_price.replace(/[^0-9\.]/g, '');
original_price = parseFloat( original_price );
price_min = money(original_price).to(to_currency);
jQuery('.price_slider_amount').find('span.from').html( price_min.toFixed(2) + " " + to_currency );
jQuery('.price_slider_amount').find('span.to').html( price_max.toFixed(2) + " " + to_currency );
});
}
}
jQuery(document).ready(function($) {
jQuery('body').on( "price_slider_create price_slider_slide price_slider_change", function() {
price_filter_update( current_currency );
} );
price_filter_update( current_currency );
});
// Ajax events
jQuery('body').bind('wc_fragments_refreshed wc_fragments_loaded show_variation updated_checkout updated_shipping_method added_to_cart cart_page_refreshed cart_widget_refreshed updated_addons', function() {
if ( current_currency ) {
switch_currency( current_currency );
}
});
jQuery( document.body ).on( 'wc_booking_form_changed wc_currency_converter_calculate', function() {
if ( current_currency ) {
switch_currency( current_currency );
}
});
// On load
if ( current_currency ) {
switch_currency( current_currency );
} else {
jQuery('ul.currency_switcher li a[data-currencycode="' + wc_currency_converter_params.currency + '"]').addClass('active');
jQuery('select.currency_switcher').val( wc_currency_converter_params.currency );
}
jQuery( document.body )
.on( 'click', 'a.wc-currency-converter-reset', function() {
jQuery('span.amount, #shipping_method option').each(function(){
var original_code = jQuery(this).attr("data-original");
if (typeof original_code !== 'undefined' && original_code !== false) {
jQuery(this).html( original_code );
}
});
jQuery('ul.currency_switcher li a').removeClass('active');
jQuery('ul.currency_switcher li a[data-currencycode="' + wc_currency_converter_params.currency + '"]').addClass('active');
jQuery('select.currency_switcher').val( wc_currency_converter_params.currency );
jQuery.cookie( 'woocommerce_current_currency', '', { expires: 7, path: '/' } );
current_currency = '';
jQuery('body').trigger('currency_converter_reset');
if ( jQuery( '.price_slider' ).length ) {
jQuery('body').trigger('price_slider_slide', [jQuery(".price_slider").slider("values", 0), jQuery(".price_slider").slider("values", 1)]);
}
return false;
})
.on( 'click', 'ul.currency_switcher li a:not(".reset")', function() {
current_currency = jQuery(this).attr('data-currencycode');
switch_currency( current_currency );
jQuery.cookie('woocommerce_current_currency', current_currency, { expires: 7, path: '/' });
return false;
})
.on( 'change', 'select.currency_switcher', function() {
current_currency = jQuery(this).val();
switch_currency( current_currency );
jQuery.cookie('woocommerce_current_currency', current_currency, { expires: 7, path: '/' });
return false;
});
});
Editor is loading...