Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
6c7aa18199
|
@ -1,155 +1,164 @@
|
||||||
/*global wc_address_i18n_params */
|
/*global wc_address_i18n_params */
|
||||||
jQuery( function( $ ) {
|
jQuery( function( $ ) {
|
||||||
|
|
||||||
// wc_address_i18n_params is required to continue, ensure the object exists
|
// wc_address_i18n_params is required to continue, ensure the object exists
|
||||||
if ( typeof wc_address_i18n_params === 'undefined' ) {
|
if ( typeof wc_address_i18n_params === 'undefined' ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
var locale_json = wc_address_i18n_params.locale.replace( /"/g, '"' ),
|
|
||||||
locale = $.parseJSON( locale_json );
|
|
||||||
|
|
||||||
function field_is_required( field, is_required ) {
|
|
||||||
if ( is_required ) {
|
|
||||||
field.find( 'label' ).append( ' <abbr class="required" title="' + wc_address_i18n_params.i18n_required_text + '">*</abbr>' );
|
|
||||||
field.addClass( 'validate-required' );
|
|
||||||
} else {
|
|
||||||
field.find( 'label abbr' ).remove();
|
|
||||||
field.removeClass( 'validate-required' );
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$( document.body )
|
var locale_json = wc_address_i18n_params.locale.replace( /"/g, '"' ),
|
||||||
|
locale = $.parseJSON( locale_json );
|
||||||
|
|
||||||
// Handle locale
|
function field_is_required( field, is_required ) {
|
||||||
.bind( 'country_to_state_changing', function( event, country, wrapper ) {
|
if ( is_required ) {
|
||||||
|
field.find( 'label' ).append( ' <abbr class="required" title="' + wc_address_i18n_params.i18n_required_text + '">*</abbr>' );
|
||||||
var thisform = wrapper, thislocale;
|
field.addClass( 'validate-required' );
|
||||||
|
|
||||||
if ( typeof locale[ country ] !== 'undefined' ) {
|
|
||||||
thislocale = locale[ country ];
|
|
||||||
} else {
|
} else {
|
||||||
thislocale = locale['default'];
|
field.find( 'label abbr' ).remove();
|
||||||
|
field.removeClass( 'validate-required' );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var $postcodefield = thisform.find( '#billing_postcode_field, #shipping_postcode_field' ),
|
$( document.body )
|
||||||
$cityfield = thisform.find( '#billing_city_field, #shipping_city_field' ),
|
|
||||||
$statefield = thisform.find( '#billing_state_field, #shipping_state_field' );
|
|
||||||
|
|
||||||
if ( ! $postcodefield.attr( 'data-o_class' ) ) {
|
// Handle locale
|
||||||
$postcodefield.attr( 'data-o_class', $postcodefield.attr( 'class' ) );
|
.bind( 'country_to_state_changing', function( event, country, wrapper ) {
|
||||||
$cityfield.attr( 'data-o_class', $cityfield.attr( 'class' ) );
|
|
||||||
$statefield.attr( 'data-o_class', $statefield.attr( 'class' ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
var locale_fields = $.parseJSON( wc_address_i18n_params.locale_fields );
|
var thisform = wrapper, thislocale;
|
||||||
|
|
||||||
$.each( locale_fields, function( key, value ) {
|
if ( typeof locale[ country ] !== 'undefined' ) {
|
||||||
|
thislocale = locale[ country ];
|
||||||
var field = thisform.find( value );
|
} else {
|
||||||
|
thislocale = locale['default'];
|
||||||
if ( thislocale[ key ] ) {
|
|
||||||
|
|
||||||
if ( thislocale[ key ].label ) {
|
|
||||||
field.find( 'label' ).html( thislocale[ key ].label );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( thislocale[ key ].placeholder ) {
|
|
||||||
field.find( 'input' ).attr( 'placeholder', thislocale[ key ].placeholder );
|
|
||||||
field.find( '.select2-selection__placeholder' ).text( thislocale[ key ].placeholder );
|
|
||||||
|
|
||||||
// Use the i18n label as a placeholder if there is no label element or i18n placeholder.
|
|
||||||
} else if ( thislocale[ key ].label && ! field.find( 'label' ).length ) {
|
|
||||||
field.find( 'input' ).attr( 'placeholder', thislocale[ key ].label );
|
|
||||||
field.find( '.select2-selection__placeholder' ).text( thislocale[ key ].label );
|
|
||||||
}
|
|
||||||
|
|
||||||
field_is_required( field, false );
|
|
||||||
|
|
||||||
if ( typeof thislocale[ key ].required === 'undefined' && locale['default'][ key ].required === true ) {
|
|
||||||
field_is_required( field, true );
|
|
||||||
} else if ( thislocale[ key ].required === true ) {
|
|
||||||
field_is_required( field, true );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( key !== 'state' ) {
|
|
||||||
if ( thislocale[ key ].hidden === true ) {
|
|
||||||
field.hide().find( 'input' ).val( '' );
|
|
||||||
} else {
|
|
||||||
field.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( thislocale[ key ].priority ) {
|
|
||||||
field.data( 'priority', thislocale[ key ].priority );
|
|
||||||
} else if ( locale['default'][ key ].priority ) {
|
|
||||||
field.data( 'priority', locale['default'][ key ].priority );
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if ( locale['default'][ key ] ) {
|
|
||||||
|
|
||||||
if ( 'state' !== key ) {
|
|
||||||
if ( typeof locale['default'][ key ].hidden === 'undefined' || locale['default'][ key ].hidden === false ) {
|
|
||||||
field.show();
|
|
||||||
} else if ( locale['default'][ key ].hidden === true ) {
|
|
||||||
field.hide().find( 'input' ).val( '' );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( 'postcode' === key || 'city' === key || 'state' === key ) {
|
|
||||||
if ( locale['default'][ key ].label ) {
|
|
||||||
field.find( 'label' ).html( locale['default'][ key ].label );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( locale['default'][ key ].placeholder ) {
|
|
||||||
field.find( 'input' ).attr( 'placeholder', locale['default'][ key ].placeholder );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( locale['default'][ key ].required === true ) {
|
|
||||||
if ( field.find( 'label abbr' ).length === 0 ) {
|
|
||||||
field_is_required( field, true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( locale['default'][ key ].priority ) {
|
|
||||||
field.data( 'priority', locale['default'][ key ].priority );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
var $postcodefield = thisform.find( '#billing_postcode_field, #shipping_postcode_field' ),
|
||||||
|
$cityfield = thisform.find( '#billing_city_field, #shipping_city_field' ),
|
||||||
|
$statefield = thisform.find( '#billing_state_field, #shipping_state_field' );
|
||||||
|
|
||||||
var fieldsets = $('.woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper, .woocommerce-additional-fields__field-wrapper .woocommerce-account-fields');
|
if ( ! $postcodefield.attr( 'data-o_class' ) ) {
|
||||||
|
$postcodefield.attr( 'data-o_class', $postcodefield.attr( 'class' ) );
|
||||||
|
$cityfield.attr( 'data-o_class', $cityfield.attr( 'class' ) );
|
||||||
|
$statefield.attr( 'data-o_class', $statefield.attr( 'class' ) );
|
||||||
|
}
|
||||||
|
|
||||||
fieldsets.each( function( index, fieldset ) {
|
var locale_fields = $.parseJSON( wc_address_i18n_params.locale_fields );
|
||||||
var rows = $( fieldset ).find( '.form-row' );
|
|
||||||
var wrapper = rows.first().parent();
|
|
||||||
|
|
||||||
// Before sorting, ensure all fields have a priority for bW compatibility.
|
$.each( locale_fields, function( key, value ) {
|
||||||
var last_priority = 0;
|
|
||||||
|
|
||||||
rows.each( function() {
|
var field = thisform.find( value );
|
||||||
if ( ! $( this ).data( 'priority' ) ) {
|
|
||||||
$( this ).data( 'priority', last_priority + 1 );
|
// Set to defaults.
|
||||||
|
if ( locale['default'][ key ] ) {
|
||||||
|
if ( 'state' !== key ) {
|
||||||
|
if ( typeof locale['default'][ key ].hidden === 'undefined' || locale['default'][ key ].hidden === false ) {
|
||||||
|
field.show();
|
||||||
|
} else if ( locale['default'][ key ].hidden === true ) {
|
||||||
|
field.hide().find( 'input' ).val( '' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 'postcode' === key || 'city' === key || 'state' === key ) {
|
||||||
|
if ( locale['default'][ key ].label ) {
|
||||||
|
field.find( 'label' ).html( locale['default'][ key ].label );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( locale['default'][ key ].placeholder ) {
|
||||||
|
field.find( 'input' ).attr( 'placeholder', locale['default'][ key ].placeholder );
|
||||||
|
|
||||||
|
// Use the label as a placeholder if there is no label element and no placeholder.
|
||||||
|
} else if ( locale['default'][ key ].label && ! field.find( 'label' ).length ) {
|
||||||
|
field.find( 'input' ).attr( 'placeholder', locale['default'][ key ].label );
|
||||||
|
field.find( '.select2-selection__placeholder' ).text( locale['default'][ key ].label );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( locale['default'][ key ].required === true ) {
|
||||||
|
if ( field.find( 'label abbr' ).length === 0 ) {
|
||||||
|
field_is_required( field, true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( locale['default'][ key ].priority ) {
|
||||||
|
field.data( 'priority', locale['default'][ key ].priority );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
last_priority = $( this ).data( 'priority' );
|
|
||||||
} );
|
|
||||||
|
|
||||||
// Sort the fields.
|
// Set to locale.
|
||||||
rows.sort( function( a, b ) {
|
if ( thislocale[ key ] ) {
|
||||||
var asort = $( a ).data( 'priority' ),
|
|
||||||
bsort = $( b ).data( 'priority' );
|
if ( thislocale[ key ].label ) {
|
||||||
|
field.find( 'label' ).html( thislocale[ key ].label );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( thislocale[ key ].placeholder ) {
|
||||||
|
field.find( 'input' ).attr( 'placeholder', thislocale[ key ].placeholder );
|
||||||
|
field.find( '.select2-selection__placeholder' ).text( thislocale[ key ].placeholder );
|
||||||
|
|
||||||
|
// Use the i18n label as a placeholder if there is no label element and no i18n placeholder.
|
||||||
|
} else if ( thislocale[ key ].label && ! field.find( 'label' ).length ) {
|
||||||
|
field.find( 'input' ).attr( 'placeholder', thislocale[ key ].label );
|
||||||
|
field.find( '.select2-selection__placeholder' ).text( thislocale[ key ].label );
|
||||||
|
}
|
||||||
|
|
||||||
|
field_is_required( field, false );
|
||||||
|
|
||||||
|
if ( typeof thislocale[ key ].required === 'undefined' && locale['default'][ key ].required === true ) {
|
||||||
|
field_is_required( field, true );
|
||||||
|
} else if ( thislocale[ key ].required === true ) {
|
||||||
|
field_is_required( field, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( key !== 'state' ) {
|
||||||
|
if ( thislocale[ key ].hidden === true ) {
|
||||||
|
field.hide().find( 'input' ).val( '' );
|
||||||
|
} else {
|
||||||
|
field.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( thislocale[ key ].priority ) {
|
||||||
|
field.data( 'priority', thislocale[ key ].priority );
|
||||||
|
} else if ( locale['default'][ key ].priority ) {
|
||||||
|
field.data( 'priority', locale['default'][ key ].priority );
|
||||||
|
}
|
||||||
|
|
||||||
if ( asort > bsort ) {
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
if ( asort < bsort ) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
rows.detach().appendTo( wrapper );
|
var fieldsets = $('.woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper, .woocommerce-additional-fields__field-wrapper .woocommerce-account-fields');
|
||||||
} );
|
|
||||||
});
|
fieldsets.each( function( index, fieldset ) {
|
||||||
});
|
var rows = $( fieldset ).find( '.form-row' );
|
||||||
|
var wrapper = rows.first().parent();
|
||||||
|
|
||||||
|
// Before sorting, ensure all fields have a priority for bW compatibility.
|
||||||
|
var last_priority = 0;
|
||||||
|
|
||||||
|
rows.each( function() {
|
||||||
|
if ( ! $( this ).data( 'priority' ) ) {
|
||||||
|
$( this ).data( 'priority', last_priority + 1 );
|
||||||
|
}
|
||||||
|
last_priority = $( this ).data( 'priority' );
|
||||||
|
} );
|
||||||
|
|
||||||
|
// Sort the fields.
|
||||||
|
rows.sort( function( a, b ) {
|
||||||
|
var asort = $( a ).data( 'priority' ),
|
||||||
|
bsort = $( b ).data( 'priority' );
|
||||||
|
|
||||||
|
if ( asort > bsort ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if ( asort < bsort ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
rows.detach().appendTo( wrapper );
|
||||||
|
} );
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
jQuery(function(e){function a(e,a){a?(e.find("label").append(' <abbr class="required" title="'+wc_address_i18n_params.i18n_required_text+'">*</abbr>'),e.addClass("validate-required")):(e.find("label abbr").remove(),e.removeClass("validate-required"))}if("undefined"==typeof wc_address_i18n_params)return!1;var i=wc_address_i18n_params.locale.replace(/"/g,'"'),t=e.parseJSON(i);e(document.body).bind("country_to_state_changing",function(i,d,l){var r,o=l;r="undefined"!=typeof t[d]?t[d]:t["default"];var n=o.find("#billing_postcode_field, #shipping_postcode_field"),f=o.find("#billing_city_field, #shipping_city_field"),s=o.find("#billing_state_field, #shipping_state_field");n.attr("data-o_class")||(n.attr("data-o_class",n.attr("class")),f.attr("data-o_class",f.attr("class")),s.attr("data-o_class",s.attr("class")));var p=e.parseJSON(wc_address_i18n_params.locale_fields);e.each(p,function(e,i){var d=o.find(i);r[e]?(r[e].label&&d.find("label").html(r[e].label),r[e].placeholder?(d.find("input").attr("placeholder",r[e].placeholder),d.find(".select2-selection__placeholder").text(r[e].placeholder)):r[e].label&&!d.find("label").length&&(d.find("input").attr("placeholder",r[e].label),d.find(".select2-selection__placeholder").text(r[e].label)),a(d,!1),"undefined"==typeof r[e].required&&!0===t["default"][e].required?a(d,!0):!0===r[e].required&&a(d,!0),"state"!==e&&(!0===r[e].hidden?d.hide().find("input").val(""):d.show()),r[e].priority?d.data("priority",r[e].priority):t["default"][e].priority&&d.data("priority",t["default"][e].priority)):t["default"][e]&&("state"!==e&&("undefined"==typeof t["default"][e].hidden||!1===t["default"][e].hidden?d.show():!0===t["default"][e].hidden&&d.hide().find("input").val("")),"postcode"!==e&&"city"!==e&&"state"!==e||(t["default"][e].label&&d.find("label").html(t["default"][e].label),t["default"][e].placeholder&&d.find("input").attr("placeholder",t["default"][e].placeholder)),!0===t["default"][e].required&&0===d.find("label abbr").length&&a(d,!0),t["default"][e].priority&&d.data("priority",t["default"][e].priority))}),e(".woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper, .woocommerce-additional-fields__field-wrapper .woocommerce-account-fields").each(function(a,i){var t=e(i).find(".form-row"),d=t.first().parent(),l=0;t.each(function(){e(this).data("priority")||e(this).data("priority",l+1),l=e(this).data("priority")}),t.sort(function(a,i){var t=e(a).data("priority"),d=e(i).data("priority");return t>d?1:t<d?-1:0}),t.detach().appendTo(d)})})});
|
jQuery(function(e){function a(e,a){a?(e.find("label").append(' <abbr class="required" title="'+wc_address_i18n_params.i18n_required_text+'">*</abbr>'),e.addClass("validate-required")):(e.find("label abbr").remove(),e.removeClass("validate-required"))}if("undefined"==typeof wc_address_i18n_params)return!1;var t=wc_address_i18n_params.locale.replace(/"/g,'"'),i=e.parseJSON(t);e(document.body).bind("country_to_state_changing",function(t,l,d){var r,n=d;r="undefined"!=typeof i[l]?i[l]:i["default"];var o=n.find("#billing_postcode_field, #shipping_postcode_field"),f=n.find("#billing_city_field, #shipping_city_field"),s=n.find("#billing_state_field, #shipping_state_field");o.attr("data-o_class")||(o.attr("data-o_class",o.attr("class")),f.attr("data-o_class",f.attr("class")),s.attr("data-o_class",s.attr("class")));var p=e.parseJSON(wc_address_i18n_params.locale_fields);e.each(p,function(e,t){var l=n.find(t);i["default"][e]&&("state"!==e&&("undefined"==typeof i["default"][e].hidden||!1===i["default"][e].hidden?l.show():!0===i["default"][e].hidden&&l.hide().find("input").val("")),"postcode"!==e&&"city"!==e&&"state"!==e||(i["default"][e].label&&l.find("label").html(i["default"][e].label),i["default"][e].placeholder?l.find("input").attr("placeholder",i["default"][e].placeholder):i["default"][e].label&&!l.find("label").length&&(l.find("input").attr("placeholder",i["default"][e].label),l.find(".select2-selection__placeholder").text(i["default"][e].label))),!0===i["default"][e].required&&0===l.find("label abbr").length&&a(l,!0),i["default"][e].priority&&l.data("priority",i["default"][e].priority)),r[e]&&(r[e].label&&l.find("label").html(r[e].label),r[e].placeholder?(l.find("input").attr("placeholder",r[e].placeholder),l.find(".select2-selection__placeholder").text(r[e].placeholder)):r[e].label&&!l.find("label").length&&(l.find("input").attr("placeholder",r[e].label),l.find(".select2-selection__placeholder").text(r[e].label)),a(l,!1),"undefined"==typeof r[e].required&&!0===i["default"][e].required?a(l,!0):!0===r[e].required&&a(l,!0),"state"!==e&&(!0===r[e].hidden?l.hide().find("input").val(""):l.show()),r[e].priority?l.data("priority",r[e].priority):i["default"][e].priority&&l.data("priority",i["default"][e].priority))}),e(".woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper, .woocommerce-additional-fields__field-wrapper .woocommerce-account-fields").each(function(a,t){var i=e(t).find(".form-row"),l=i.first().parent(),d=0;i.each(function(){e(this).data("priority")||e(this).data("priority",d+1),d=e(this).data("priority")}),i.sort(function(a,t){var i=e(a).data("priority"),l=e(t).data("priority");return i>l?1:i<l?-1:0}),i.detach().appendTo(l)})})});
|
|
@ -1086,7 +1086,15 @@ class WC_Form_Handler {
|
||||||
wc_set_customer_auth_cookie( $new_customer );
|
wc_set_customer_auth_cookie( $new_customer );
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_safe_redirect( apply_filters( 'woocommerce_registration_redirect', wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( 'myaccount' ) ) );
|
if ( ! empty( $_POST['redirect'] ) ) {
|
||||||
|
$redirect = wp_sanitize_redirect( $_POST['redirect'] );
|
||||||
|
} elseif ( wc_get_raw_referer() ) {
|
||||||
|
$redirect = wc_get_raw_referer();
|
||||||
|
} else {
|
||||||
|
$redirect = wc_get_page_permalink( 'myaccount' );
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_redirect( wp_validate_redirect( apply_filters( 'woocommerce_registration_redirect', $redirect ), wc_get_page_permalink( 'myaccount' ) ) );
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
} catch ( Exception $e ) {
|
} catch ( Exception $e ) {
|
||||||
|
|
Loading…
Reference in New Issue