From b6387a152e71cd3a7eb0aadac07030a5c57f70d0 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 3 Jan 2013 12:34:31 +0000 Subject: [PATCH] New checkout field layout Closes #2120. --- assets/js/frontend/checkout.js | 32 +++---- assets/js/frontend/checkout.min.js | 2 +- assets/js/frontend/woocommerce.js | 29 ++++--- assets/js/frontend/woocommerce.min.js | 2 +- classes/class-wc-countries.php | 110 +++++++++---------------- templates/cart/shipping-calculator.php | 9 +- woocommerce-template.php | 54 ++++++++---- 7 files changed, 111 insertions(+), 127 deletions(-) diff --git a/assets/js/frontend/checkout.js b/assets/js/frontend/checkout.js index 4019c09f864..4e6814f09d9 100644 --- a/assets/js/frontend/checkout.js +++ b/assets/js/frontend/checkout.js @@ -351,9 +351,9 @@ jQuery(document).ready(function($) { if ( key !== 'state' ) { if ( thislocale[key]['hidden'] == true ) { - field.fadeOut(200).find('input').val(''); + field.hide().find('input').val(''); } else { - field.fadeIn(500); + field.show(); } } @@ -362,34 +362,24 @@ jQuery(document).ready(function($) { if (field.find('label abbr').size()==0) field.find('label').append( required ); } if ( key !== 'state' && (typeof locale['default'][key]['hidden'] == 'undefined' || locale['default'][key]['hidden'] == false) ) { - field.fadeIn(500); + field.show(); } } }); - var postcodefield = thisform.find('#billing_postcode_field, #shipping_postcode_field'); - var cityfield = thisform.find('#billing_city_field, #shipping_city_field'); + var $postcodefield = thisform.find('#billing_postcode_field, #shipping_postcode_field'); + var $cityfield = thisform.find('#billing_city_field, #shipping_city_field'); // Re-order postcode/city if ( thislocale['postcode_before_city'] ) { - if (cityfield.is('.form-row-first')) { - cityfield.fadeOut(200, function() { - cityfield.removeClass('form-row-first').addClass('form-row-last').insertAfter( postcodefield ).fadeIn(500); - }); - postcodefield.fadeOut(200, function (){ - postcodefield.removeClass('form-row-last').addClass('form-row-first').fadeIn(500); - }); - } + $postcodefield.removeClass('form-row-last').addClass('form-row-wide'); + $cityfield.removeClass('form-row-wide').addClass('form-row-first'); + $postcodefield.insertBefore( $cityfield ); } else { - if (cityfield.is('.form-row-last')) { - cityfield.fadeOut(200, function() { - cityfield.removeClass('form-row-last').addClass('form-row-first').insertBefore( postcodefield ).fadeIn(500); - }); - postcodefield.fadeOut(200, function (){ - postcodefield.removeClass('form-row-first').addClass('form-row-last').fadeIn(500); - }); - } + $postcodefield.removeClass('form-row-wide').addClass('form-row-last'); + $cityfield.removeClass('form-row-first').addClass('form-row-wide'); + $postcodefield.insertAfter( $cityfield ); } }) diff --git a/assets/js/frontend/checkout.min.js b/assets/js/frontend/checkout.min.js index e433a734798..1cd6c98a2ea 100644 --- a/assets/js/frontend/checkout.min.js +++ b/assets/js/frontend/checkout.min.js @@ -1 +1 @@ -jQuery(document).ready(function(e){function i(){r&&r.abort();if(e("select#shipping_method").size()>0)var t=e("select#shipping_method").val();else var t=e("input[name=shipping_method]:checked").val();var n=e("#order_review input[name=payment_method]:checked").val(),i=e("#billing_country").val(),s=e("#billing_state").val(),o=e("input#billing_postcode").val(),u=e("input#billing_city").val(),a=e("input#billing_address_1").val(),f=e("input#billing_address_2").val();if(e("#shiptobilling input").is(":checked")||e("#shiptobilling input").size()==0)var l=i,c=s,h=o,p=u,d=a,v=f;else var l=e("#shipping_country").val(),c=e("#shipping_state").val(),h=e("input#shipping_postcode").val(),p=e("input#shipping_city").val(),d=e("input#shipping_address_1").val(),v=e("input#shipping_address_2").val();e("#order_methods, #order_review").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var m={action:"woocommerce_update_order_review",security:woocommerce_params.update_order_review_nonce,shipping_method:t,payment_method:n,country:i,state:s,postcode:o,city:u,address:a,address_2:f,s_country:l,s_state:c,s_postcode:h,s_city:p,s_address:d,s_address_2:v,post_data:e("form.checkout").serialize()};r=e.ajax({type:"POST",url:woocommerce_params.ajax_url,data:m,success:function(t){if(t){e("#order_review").after(t).remove();e("body").trigger("updated_checkout")}}})}function s(){n=!1;e("body").trigger("update_checkout")}var t,n=!1,r;e("body").bind("update_checkout",function(){clearTimeout(t);i()});e("p.password, form.login, .checkout_coupon, div.shipping_address").hide();e("input.show_password").change(function(){e("p.password").slideToggle()});e("a.showlogin").click(function(){e("form.login").slideToggle();return!1});e("a.showcoupon").click(function(){e(".checkout_coupon").slideToggle();return!1});e("#shiptobilling input").change(function(){e("div.shipping_address").hide();e(this).is(":checked")||e("div.shipping_address").slideDown()}).change();if(woocommerce_params.option_guest_checkout=="yes"){e("div.create-account").hide();e("input#createaccount").change(function(){e("div.create-account").hide();e(this).is(":checked")&&e("div.create-account").slideDown()}).change()}e("form.checkout").on("click",".payment_methods input.input-radio",function(){if(e(".payment_methods input.input-radio").length>1){e("div.payment_box").filter(":visible").slideUp(250);e(this).is(":checked")&&e("div.payment_box."+e(this).attr("ID")).slideDown(250)}else e("div.payment_box").show()}).on("change","select#shipping_method, input[name=shipping_method], #shiptobilling input, .update_totals_on_change select",function(){clearTimeout(t);e("body").trigger("update_checkout")}).on("change",".update_totals_on_change input",function(){if(n){clearTimeout(t);e("body").trigger("update_checkout")}}).on("keydown",".update_totals_on_change input.input-text",function(e){var r=e.keyCode||e.which;if(r=="9")return;n=!0;clearTimeout(t);t=setTimeout(s,"1000")}).on("blur change",".input-text, select",function(){var t=e(this),n=t.closest(".form-row"),r=!0;if(n.is(".validate-required")&&t.val()==""){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-required-field");r=!1}if(n.is(".validate-email")&&t.val()){var i=new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);if(!i.test(t.val())){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-email");r=!1}}r&&n.removeClass("woocommerce-invalid woocommerce-invalid-required-field").addClass("woocommerce-validated")}).submit(function(){clearTimeout(t);var n=e(this);if(n.is(".processing"))return!1;if(n.triggerHandler("checkout_place_order")!==!1&&n.triggerHandler("checkout_place_order_"+e("#order_review input[name=payment_method]:checked").val())!==!1){n.addClass("processing");var r=n.data();r["blockUI.isBlocked"]!=1&&n.block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});e.ajax({type:"POST",url:woocommerce_params.checkout_url,data:n.serialize(),success:function(t){try{var t=t.split("")[0],r=e.parseJSON(t);if(r.result=="success")window.location=decodeURI(r.redirect);else{if(r.result!="failure")throw"Invalid response";e(".woocommerce-error, .woocommerce-message").remove();n.prepend(r.messages);n.removeClass("processing").unblock();n.find(".input-text, select").blur();r.refresh=="true"&&e("body").trigger("update_checkout");e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3)}}catch(i){e(".woocommerce-error, .woocommerce-message").remove();n.prepend(t);n.removeClass("processing").unblock();n.find(".input-text, select").blur();e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3)}},dataType:"html"})}return!1}).find("#order_review input[name=payment_method]:checked").click();e("form.checkout_coupon").submit(function(){var t=e(this);if(t.is(".processing"))return!1;t.addClass("processing").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var n={action:"woocommerce_apply_coupon",security:woocommerce_params.apply_coupon_nonce,coupon_code:t.find("input[name=coupon_code]").val()};e.ajax({type:"POST",url:woocommerce_params.ajax_url,data:n,success:function(n){e(".woocommerce-error, .woocommerce-message").remove();t.removeClass("processing").unblock();if(n){t.before(n);t.slideUp();e("body").trigger("update_checkout")}},dataType:"html"});return!1});var o=woocommerce_params.locale.replace(/"/g,'"'),u=e.parseJSON(o),a=' *';e("body").bind("country_to_state_changing",function(t,n,r){var i=r;if(u[n])var s=u[n];else var s=u["default"];var o={address_1:"#billing_address_1_field, #shipping_address_1_field",address_2:"#billing_address_2_field, #shipping_address_2_field",state:"#billing_state_field, #shipping_state_field",postcode:"#billing_postcode_field, #shipping_postcode_field",city:"#billing_city_field, #shipping_city_field"};e.each(o,function(e,t){var n=i.find(t);if(s[e]){s[e].label&&n.find("label").html(s[e].label);s[e].placeholder&&n.find("input").attr("placeholder",s[e].placeholder);n.find("label abbr").remove();(typeof s[e]["required"]=="undefined"||s[e]["required"]==1)&&n.find("label").append(a);e!=="state"&&(s[e]["hidden"]==1?n.fadeOut(200).find("input").val(""):n.fadeIn(500))}else if(u["default"][e]){u["default"][e]["required"]==1&&n.find("label abbr").size()==0&&n.find("label").append(a);e!=="state"&&(typeof u["default"][e]["hidden"]=="undefined"||u["default"][e]["hidden"]==0)&&n.fadeIn(500)}});var f=i.find("#billing_postcode_field, #shipping_postcode_field"),l=i.find("#billing_city_field, #shipping_city_field");if(s.postcode_before_city){if(l.is(".form-row-first")){l.fadeOut(200,function(){l.removeClass("form-row-first").addClass("form-row-last").insertAfter(f).fadeIn(500)});f.fadeOut(200,function(){f.removeClass("form-row-last").addClass("form-row-first").fadeIn(500)})}}else if(l.is(".form-row-last")){l.fadeOut(200,function(){l.removeClass("form-row-last").addClass("form-row-first").insertBefore(f).fadeIn(500)});f.fadeOut(200,function(){f.removeClass("form-row-first").addClass("form-row-last").fadeIn(500)})}}).bind("init_checkout",function(){e("#billing_country, #shipping_country, .country_to_state").change();e("body").trigger("update_checkout")});woocommerce_params.is_checkout==1&&e("body").trigger("init_checkout")}); \ No newline at end of file +jQuery(document).ready(function(e){function i(){r&&r.abort();if(e("select#shipping_method").size()>0)var t=e("select#shipping_method").val();else var t=e("input[name=shipping_method]:checked").val();var n=e("#order_review input[name=payment_method]:checked").val(),i=e("#billing_country").val(),s=e("#billing_state").val(),o=e("input#billing_postcode").val(),u=e("input#billing_city").val(),a=e("input#billing_address_1").val(),f=e("input#billing_address_2").val();if(e("#shiptobilling input").is(":checked")||e("#shiptobilling input").size()==0)var l=i,c=s,h=o,p=u,d=a,v=f;else var l=e("#shipping_country").val(),c=e("#shipping_state").val(),h=e("input#shipping_postcode").val(),p=e("input#shipping_city").val(),d=e("input#shipping_address_1").val(),v=e("input#shipping_address_2").val();e("#order_methods, #order_review").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var m={action:"woocommerce_update_order_review",security:woocommerce_params.update_order_review_nonce,shipping_method:t,payment_method:n,country:i,state:s,postcode:o,city:u,address:a,address_2:f,s_country:l,s_state:c,s_postcode:h,s_city:p,s_address:d,s_address_2:v,post_data:e("form.checkout").serialize()};r=e.ajax({type:"POST",url:woocommerce_params.ajax_url,data:m,success:function(t){if(t){e("#order_review").after(t).remove();e("body").trigger("updated_checkout")}}})}function s(){n=!1;e("body").trigger("update_checkout")}var t,n=!1,r;e("body").bind("update_checkout",function(){clearTimeout(t);i()});e("p.password, form.login, .checkout_coupon, div.shipping_address").hide();e("input.show_password").change(function(){e("p.password").slideToggle()});e("a.showlogin").click(function(){e("form.login").slideToggle();return!1});e("a.showcoupon").click(function(){e(".checkout_coupon").slideToggle();return!1});e("#shiptobilling input").change(function(){e("div.shipping_address").hide();e(this).is(":checked")||e("div.shipping_address").slideDown()}).change();if(woocommerce_params.option_guest_checkout=="yes"){e("div.create-account").hide();e("input#createaccount").change(function(){e("div.create-account").hide();e(this).is(":checked")&&e("div.create-account").slideDown()}).change()}e("form.checkout").on("click",".payment_methods input.input-radio",function(){if(e(".payment_methods input.input-radio").length>1){e("div.payment_box").filter(":visible").slideUp(250);e(this).is(":checked")&&e("div.payment_box."+e(this).attr("ID")).slideDown(250)}else e("div.payment_box").show()}).on("change","select#shipping_method, input[name=shipping_method], #shiptobilling input, .update_totals_on_change select",function(){clearTimeout(t);e("body").trigger("update_checkout")}).on("change",".update_totals_on_change input",function(){if(n){clearTimeout(t);e("body").trigger("update_checkout")}}).on("keydown",".update_totals_on_change input.input-text",function(e){var r=e.keyCode||e.which;if(r=="9")return;n=!0;clearTimeout(t);t=setTimeout(s,"1000")}).on("blur change",".input-text, select",function(){var t=e(this),n=t.closest(".form-row"),r=!0;if(n.is(".validate-required")&&t.val()==""){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-required-field");r=!1}if(n.is(".validate-email")&&t.val()){var i=new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);if(!i.test(t.val())){n.removeClass("woocommerce-validated").addClass("woocommerce-invalid woocommerce-invalid-email");r=!1}}r&&n.removeClass("woocommerce-invalid woocommerce-invalid-required-field").addClass("woocommerce-validated")}).submit(function(){clearTimeout(t);var n=e(this);if(n.is(".processing"))return!1;if(n.triggerHandler("checkout_place_order")!==!1&&n.triggerHandler("checkout_place_order_"+e("#order_review input[name=payment_method]:checked").val())!==!1){n.addClass("processing");var r=n.data();r["blockUI.isBlocked"]!=1&&n.block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});e.ajax({type:"POST",url:woocommerce_params.checkout_url,data:n.serialize(),success:function(t){try{var t=t.split("")[0],r=e.parseJSON(t);if(r.result=="success")window.location=decodeURI(r.redirect);else{if(r.result!="failure")throw"Invalid response";e(".woocommerce-error, .woocommerce-message").remove();n.prepend(r.messages);n.removeClass("processing").unblock();n.find(".input-text, select").blur();r.refresh=="true"&&e("body").trigger("update_checkout");e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3)}}catch(i){e(".woocommerce-error, .woocommerce-message").remove();n.prepend(t);n.removeClass("processing").unblock();n.find(".input-text, select").blur();e("html, body").animate({scrollTop:e("form.checkout").offset().top-100},1e3)}},dataType:"html"})}return!1}).find("#order_review input[name=payment_method]:checked").click();e("form.checkout_coupon").submit(function(){var t=e(this);if(t.is(".processing"))return!1;t.addClass("processing").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_params.ajax_loader_url+") no-repeat center",backgroundSize:"16px 16px",opacity:.6}});var n={action:"woocommerce_apply_coupon",security:woocommerce_params.apply_coupon_nonce,coupon_code:t.find("input[name=coupon_code]").val()};e.ajax({type:"POST",url:woocommerce_params.ajax_url,data:n,success:function(n){e(".woocommerce-error, .woocommerce-message").remove();t.removeClass("processing").unblock();if(n){t.before(n);t.slideUp();e("body").trigger("update_checkout")}},dataType:"html"});return!1});var o=woocommerce_params.locale.replace(/"/g,'"'),u=e.parseJSON(o),a=' *';e("body").bind("country_to_state_changing",function(t,n,r){var i=r;if(u[n])var s=u[n];else var s=u["default"];var o={address_1:"#billing_address_1_field, #shipping_address_1_field",address_2:"#billing_address_2_field, #shipping_address_2_field",state:"#billing_state_field, #shipping_state_field",postcode:"#billing_postcode_field, #shipping_postcode_field",city:"#billing_city_field, #shipping_city_field"};e.each(o,function(e,t){var n=i.find(t);if(s[e]){s[e].label&&n.find("label").html(s[e].label);s[e].placeholder&&n.find("input").attr("placeholder",s[e].placeholder);n.find("label abbr").remove();(typeof s[e]["required"]=="undefined"||s[e]["required"]==1)&&n.find("label").append(a);e!=="state"&&(s[e]["hidden"]==1?n.hide().find("input").val(""):n.show())}else if(u["default"][e]){u["default"][e]["required"]==1&&n.find("label abbr").size()==0&&n.find("label").append(a);e!=="state"&&(typeof u["default"][e]["hidden"]=="undefined"||u["default"][e]["hidden"]==0)&&n.show()}});var f=i.find("#billing_postcode_field, #shipping_postcode_field"),l=i.find("#billing_city_field, #shipping_city_field");if(s.postcode_before_city){f.removeClass("form-row-last").addClass("form-row-wide");l.removeClass("form-row-wide").addClass("form-row-first");f.insertBefore(l)}else{f.removeClass("form-row-wide").addClass("form-row-last");l.removeClass("form-row-first").addClass("form-row-wide");f.insertAfter(l)}}).bind("init_checkout",function(){e("#billing_country, #shipping_country, .country_to_state").change();e("body").trigger("update_checkout")});woocommerce_params.is_checkout==1&&e("body").trigger("init_checkout")}); \ No newline at end of file diff --git a/assets/js/frontend/woocommerce.js b/assets/js/frontend/woocommerce.js index a6f70402e5e..b3d96ac6ccd 100644 --- a/assets/js/frontend/woocommerce.js +++ b/assets/js/frontend/woocommerce.js @@ -72,21 +72,22 @@ jQuery(document).ready(function($) { var input_name = $statebox.attr('name'); var input_id = $statebox.attr('id'); var value = $statebox.val(); + var placeholder = $statebox.attr('placeholder'); if (states[country]) { if (states[country].length == 0) { // Empty array means state field is not used - $parent.fadeOut(200, function() { + //$parent.fadeOut(200, function() { $statebox.parent().find('.chzn-container').remove(); $statebox.replaceWith(''); $('body').trigger('country_to_state_changed', [country, $(this).closest('div')]); - }); + //}); } else { - $parent.fadeOut(200, function() { + //$parent.fadeOut(200, function() { var options = ''; var state = states[country]; for(var index in state) { @@ -94,7 +95,7 @@ jQuery(document).ready(function($) { } if ($statebox.is('input')) { // Change for select - $statebox.replaceWith(''); + $statebox.replaceWith(''); $statebox = $(this).closest('div').find('#billing_state, #shipping_state, #calc_shipping_state'); } $statebox.html( '' + options); @@ -103,33 +104,35 @@ jQuery(document).ready(function($) { $('body').trigger('country_to_state_changed', [country, $(this).closest('div')]); - $parent.fadeIn(500); - }); + //$parent.fadeIn(500); + //}); } } else { if ($statebox.is('select')) { - $parent.fadeOut(200, function() { + //$parent.fadeOut(200, function() { $parent.find('.chzn-container').remove(); - $statebox.replaceWith(''); + $statebox.replaceWith(''); $('body').trigger('country_to_state_changed', [country, $(this).closest('div')]); - $parent.fadeIn(500); - }); + //$parent.fadeIn(500); + //}); } else if ($statebox.is('.hidden')) { $parent.find('.chzn-container').remove(); - $statebox.replaceWith(''); + $statebox.replaceWith(''); $('body').trigger('country_to_state_changed', [country, $(this).closest('div')]); - $parent.delay(200).fadeIn(500); + //$parent.delay(200).fadeIn(500); } } - $('body').delay(200).trigger('country_to_state_changing', [country, $(this).closest('div')]); + $('body') + //.delay(200) + .trigger('country_to_state_changing', [country, $(this).closest('div')]); }); diff --git a/assets/js/frontend/woocommerce.min.js b/assets/js/frontend/woocommerce.min.js index c42304d8d9a..cc9ce14bc48 100644 --- a/assets/js/frontend/woocommerce.min.js +++ b/assets/js/frontend/woocommerce.min.js @@ -1 +1 @@ -jQuery(document).ready(function(e){e("select.orderby").change(function(){e(this).closest("form").submit()});e("div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)").addClass("buttons_added").append('').prepend('');e("input.qty:not(.product-quantity input.qty)").each(function(){var t=parseFloat(e(this).attr("min"));t&&t>0&&parseFloat(e(this).val())r)?t.val(r):t.val(n+parseFloat(s)):i&&(i==n||n0&&t.val(n-parseFloat(s));t.trigger("change")});var t=woocommerce_params.countries.replace(/"/g,'"'),n=e.parseJSON(t);e("select.country_to_state").change(function(){var t=e(this).val(),r=e(this).closest("div").find("#billing_state, #shipping_state, #calc_shipping_state"),i=r.parent(),s=r.attr("name"),o=r.attr("id"),u=r.val();if(n[t])n[t].length==0?i.fadeOut(200,function(){r.parent().find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")])}):i.fadeOut(200,function(){var a="",f=n[t];for(var l in f)a=a+'";if(r.is("input")){r.replaceWith('');r=e(this).closest("div").find("#billing_state, #shipping_state, #calc_shipping_state")}r.html('"+a);r.val(u);e("body").trigger("country_to_state_changed",[t,e(this).closest("div")]);i.fadeIn(500)});else if(r.is("select"))i.fadeOut(200,function(){i.find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")]);i.fadeIn(500)});else if(r.is(".hidden")){i.find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")]);i.delay(200).fadeIn(500)}e("body").delay(200).trigger("country_to_state_changing",[t,e(this).closest("div")])})}); \ No newline at end of file +jQuery(document).ready(function(e){e("select.orderby").change(function(){e(this).closest("form").submit()});e("div.quantity:not(.buttons_added), td.quantity:not(.buttons_added)").addClass("buttons_added").append('').prepend('');e("input.qty:not(.product-quantity input.qty)").each(function(){var t=parseFloat(e(this).attr("min"));t&&t>0&&parseFloat(e(this).val())r)?t.val(r):t.val(n+parseFloat(s)):i&&(i==n||n0&&t.val(n-parseFloat(s));t.trigger("change")});var t=woocommerce_params.countries.replace(/"/g,'"'),n=e.parseJSON(t);e("select.country_to_state").change(function(){var t=e(this).val(),r=e(this).closest("div").find("#billing_state, #shipping_state, #calc_shipping_state"),i=r.parent(),s=r.attr("name"),o=r.attr("id"),u=r.val(),a=r.attr("placeholder");if(n[t])if(n[t].length==0){r.parent().find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")])}else{var f="",l=n[t];for(var c in l)f=f+'";if(r.is("input")){r.replaceWith('');r=e(this).closest("div").find("#billing_state, #shipping_state, #calc_shipping_state")}r.html('"+f);r.val(u);e("body").trigger("country_to_state_changed",[t,e(this).closest("div")])}else if(r.is("select")){i.find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")])}else if(r.is(".hidden")){i.find(".chzn-container").remove();r.replaceWith('');e("body").trigger("country_to_state_changed",[t,e(this).closest("div")])}e("body").trigger("country_to_state_changing",[t,e(this).closest("div")])})}); \ No newline at end of file diff --git a/classes/class-wc-countries.php b/classes/class-wc-countries.php index a1e8f96f9af..d2c163ac1fe 100644 --- a/classes/class-wc-countries.php +++ b/classes/class-wc-countries.php @@ -357,7 +357,7 @@ class WC_Countries { * @return array */ public function get_allowed_countries() { - + if ( apply_filters('woocommerce_sort_countries', true ) ) asort( $this->countries ); @@ -405,7 +405,7 @@ class WC_Countries { * @return array */ public function get_european_union_countries() { - return array('AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HU', 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'); + return array( 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HU', 'IE', 'IT', 'LT', 'LU', 'LV', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK' ); } @@ -704,14 +704,12 @@ class WC_Countries { 'CA' => array( 'state' => array( 'label' => __( 'Province', 'woocommerce' ), - 'placeholder' => __( 'Province', 'woocommerce' ) ) ), 'CH' => array( 'postcode_before_city' => true, 'state' => array( 'label' => __( 'Canton', 'woocommerce' ), - 'placeholder' => __( 'Canton', 'woocommerce' ), 'required' => false ) ), @@ -721,13 +719,11 @@ class WC_Countries { ), 'state' => array( 'label' => __( 'Municipality', 'woocommerce' ), - 'placeholder' => __( 'Municipality', 'woocommerce' ) ) ), 'CN' => array( 'state' => array( 'label' => __( 'Province', 'woocommerce' ), - 'placeholder' => __( 'Province', 'woocommerce' ) ) ), 'CO' => array( @@ -769,12 +765,10 @@ class WC_Countries { 'required' => false ), 'city' => array( - 'label' => __( 'Town/District', 'woocommerce' ), - 'placeholder' => __( 'Town/District', 'woocommerce' ) + 'label' => __( 'Town / District', 'woocommerce' ), ), 'state' => array( 'label' => __( 'Region', 'woocommerce' ), - 'placeholder' => __( 'Region', 'woocommerce' ) ) ), 'HU' => array( @@ -843,14 +837,12 @@ class WC_Countries { 'postcode_before_city' => true, 'state' => array( 'label' => __( 'Province', 'woocommerce' ), - 'placeholder' => __( 'Province', 'woocommerce' ) ) ), 'LI' => array( 'postcode_before_city' => true, 'state' => array( 'label' => __( 'Municipality', 'woocommerce' ), - 'placeholder' => __( 'Municipality', 'woocommerce' ), 'required' => false ) ), @@ -869,27 +861,22 @@ class WC_Countries { 'postcode_before_city' => true, 'state' => array( 'label' => __( 'Province', 'woocommerce' ), - 'placeholder' => __( 'Province', 'woocommerce' ) ) ), 'US' => array( 'postcode' => array( 'label' => __( 'Zip', 'woocommerce' ), - 'placeholder' => __( 'Zip', 'woocommerce' ) ), 'state' => array( 'label' => __( 'State', 'woocommerce' ), - 'placeholder' => __( 'State', 'woocommerce' ) ) ), 'GB' => array( 'postcode' => array( 'label' => __( 'Postcode', 'woocommerce' ), - 'placeholder' => __( 'Postcode', 'woocommerce' ) ), 'state' => array( 'label' => __( 'County', 'woocommerce' ), - 'placeholder' => __( 'County', 'woocommerce' ), 'required' => false ) ), @@ -915,18 +902,18 @@ class WC_Countries { 'required' => false ), 'postcode' => array( - 'label' => __( 'Postcode/Zip', 'woocommerce' ), - 'placeholder' => __( 'Postcode/Zip', 'woocommerce' ), + 'label' => __( 'Postcode / Zip', 'woocommerce' ), + 'placeholder' => __( 'Postcode / Zip', 'woocommerce' ), 'required' => true ), 'city' => array( - 'label' => __( 'Town/City', 'woocommerce' ), - 'placeholder' => __( 'Town/City', 'woocommerce' ), + 'label' => __( 'Town / City', 'woocommerce' ), + 'placeholder' => __( 'Town / City', 'woocommerce' ), 'required' => true ), 'state' => array( - 'label' => __( 'State/County', 'woocommerce' ), - 'placeholder' => __( 'State/County', 'woocommerce' ), + 'label' => __( 'State / County', 'woocommerce' ), + 'placeholder' => __( 'State / County', 'woocommerce' ), 'required' => true ) )); @@ -948,77 +935,64 @@ class WC_Countries { $locale = $this->get_country_locale(); $fields = array( + 'country' => array( + 'type' => 'country', + 'label' => __( 'Country', 'woocommerce' ), + 'required' => true, + 'class' => array( 'form-row-wide', 'update_totals_on_change' ), + ), 'first_name' => array( 'label' => __( 'First Name', 'woocommerce' ), - 'placeholder' => _x('First Name', 'placeholder', 'woocommerce'), 'required' => true, - 'class' => array('form-row-first'), + 'class' => array( 'form-row-first' ), ), 'last_name' => array( 'label' => __( 'Last Name', 'woocommerce' ), - 'placeholder' => _x('Last Name', 'placeholder', 'woocommerce'), 'required' => true, - 'class' => array('form-row-last'), + 'class' => array( 'form-row-last' ), 'clear' => true ), 'company' => array( 'label' => __( 'Company Name', 'woocommerce' ), - 'placeholder' => _x('Company (optional)', 'placeholder', 'woocommerce'), - 'clear' => true + 'class' => array( 'form-row-wide' ), ), 'address_1' => array( 'label' => __( 'Address', 'woocommerce' ), - 'placeholder' => _x('Address', 'placeholder', 'woocommerce'), + 'placeholder' => _x( 'Street address', 'placeholder', 'woocommerce' ), 'required' => true, - 'class' => array('form-row-first'), + 'class' => array( 'form-row-wide' ), ), 'address_2' => array( - 'label' => __( 'Address 2', 'woocommerce' ), - 'placeholder' => _x('Address 2 (optional)', 'placeholder', 'woocommerce'), - 'class' => array('form-row-last'), - 'label_class' => array('hidden'), - 'clear' => true + 'placeholder' => _x( 'Apartment, suite, unit etc. (optional)', 'placeholder', 'woocommerce' ), + 'class' => array( 'form-row-wide' ), ), 'city' => array( - 'label' => __( 'Town/City', 'woocommerce' ), - 'placeholder' => _x('Town/City', 'placeholder', 'woocommerce'), + 'label' => __( 'Town / City', 'woocommerce' ), 'required' => true, - 'class' => array('form-row-first', 'update_totals_on_change'), - ), - 'postcode' => array( - 'label' => __( 'Postcode/Zip', 'woocommerce' ), - 'placeholder' => _x('Postcode/Zip', 'placeholder', 'woocommerce'), - 'required' => true, - 'class' => array('form-row-last', 'update_totals_on_change'), - 'clear' => true - ), - 'country' => array( - 'type' => 'country', - 'label' => __( 'Country', 'woocommerce' ), - 'placeholder' => _x('Country', 'placeholder', 'woocommerce'), - 'required' => true, - 'class' => array('form-row-first', 'update_totals_on_change'), + 'class' => array( 'form-row-wide', 'update_totals_on_change' ), ), 'state' => array( 'type' => 'state', - 'label' => __( 'State/County', 'woocommerce' ), - 'placeholder' => _x('State/County', 'placeholder', 'woocommerce'), + 'label' => __( 'State / County', 'woocommerce' ), 'required' => true, - 'class' => array('form-row-last', 'update_totals_on_change'), + 'class' => array( 'form-row-first', 'update_totals_on_change' ) + ), + 'postcode' => array( + 'label' => __( 'Postcode / Zip', 'woocommerce' ), + 'required' => true, + 'class' => array( 'form-row-last', 'update_totals_on_change' ), 'clear' => true - ) + ), ); - if ( isset( $locale[$country] ) ) { + if ( isset( $locale[ $country ] ) ) { - $fields = woocommerce_array_overlay( $fields, $locale[$country] ); + $fields = woocommerce_array_overlay( $fields, $locale[ $country ] ); - // If default country has postcode_before_city switch the fields round - if ( isset( $locale[$country]['postcode_before_city'] ) ) { - $fields['city']['class'] = array('form-row-last'); - $fields['city']['clear'] = true; - $fields['postcode']['class'] = array('form-row-first', 'update_totals_on_change'); - $fields['postcode']['clear'] = false; + // If default country has postcode_before_city switch the fields round. + // This is only done at this point, not if country changes on checkout. + if ( isset( $locale[ $country ]['postcode_before_city'] ) ) { + $fields['postcode']['class'] = array( 'form-row-wide', 'update_totals_on_change' ); $switch_fields = array(); @@ -1047,16 +1021,14 @@ class WC_Countries { $address_fields['billing_email'] = array( 'label' => __( 'Email Address', 'woocommerce' ), - 'placeholder' => _x('Email Address', 'placeholder', 'woocommerce'), 'required' => true, - 'class' => array('form-row-first'), - 'validate' => array('email'), + 'class' => array( 'form-row-first' ), + 'validate' => array( 'email' ), ); $address_fields['billing_phone'] = array( 'label' => __( 'Phone', 'woocommerce' ), - 'placeholder' => _x('Phone', 'placeholder', 'woocommerce'), 'required' => true, - 'class' => array('form-row-last'), + 'class' => array( 'form-row-last' ), 'clear' => true ); diff --git a/templates/cart/shipping-calculator.php b/templates/cart/shipping-calculator.php index 2363ce529bc..cb5a33ba911 100644 --- a/templates/cart/shipping-calculator.php +++ b/templates/cart/shipping-calculator.php @@ -19,7 +19,7 @@ if ( get_option('woocommerce_enable_shipping_calc')=='no' || ! $woocommerce->car

-

+

-

+

customer->get_shipping_country(); $current_r = $woocommerce->customer->get_shipping_state(); @@ -58,15 +58,14 @@ if ( get_option('woocommerce_enable_shipping_calc')=='no' || ! $woocommerce->car // Input ?> - +

-

- +

diff --git a/woocommerce-template.php b/woocommerce-template.php index 8a85e0ff235..cf07bc0735e 100644 --- a/woocommerce-template.php +++ b/woocommerce-template.php @@ -1274,8 +1274,10 @@ if ( ! function_exists( 'woocommerce_form_field' ) ) { if ( sizeof( $woocommerce->countries->get_allowed_countries() ) == 1 ) { - $field = '

- '; + $field = '

'; + + if ( $args['label'] ) + $field .= ''; $field .= '' . current( array_values( $woocommerce->countries->get_allowed_countries() ) ) . ''; @@ -1322,14 +1324,18 @@ if ( ! function_exists( 'woocommerce_form_field' ) ) { if ( is_array( $states ) && empty( $states ) ) { $field = '

' . $after; } elseif ( is_array( $states ) ) { $field = '

'; - $field .= ''; + + if ( $args['label'] ) + $field .= ''; $field .= ''; $field .= '

' . $after; @@ -1351,9 +1359,12 @@ if ( ! function_exists( 'woocommerce_form_field' ) ) { break; case "textarea" : - $field = '

- - + $field = '

'; + + if ( $args['label'] ) + $field .= ''; + + $field .= '

' . $after; break; @@ -1367,17 +1378,23 @@ if ( ! function_exists( 'woocommerce_form_field' ) ) { break; case "password" : - $field = '

- - + $field = '

'; + + if ( $args['label'] ) + $field .= ''; + + $field .= '

' . $after; break; case "text" : - $field = '

- - + $field = '

'; + + if ( $args['label'] ) + $field .= ''; + + $field .= '

' . $after; break; @@ -1389,9 +1406,12 @@ if ( ! function_exists( 'woocommerce_form_field' ) ) { foreach ( $args['options'] as $option_key => $option_text ) $options .= ''; - $field = '

- - ' . $options . '

' . $after;