From 5765739a9563296e57f26355eb43bbffae0c6375 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Wed, 1 Sep 2010 12:22:55 -0700 Subject: [PATCH] Labels in the Cart for addresses are optional. They take the first line of the address if left blank. Tested w and w/o JS. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Shop/AddressBook.pm | 9 ++++----- lib/WebGUI/Shop/Cart.pm | 2 -- www/extras/shop/cart.js | 11 ++++++++++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 72bc46c6d..b94885599 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,6 +1,7 @@ 7.10.0 - fixed #11812: Checking www_ajaxSave's response in the cart js, urlencoding post parameters - added: Link in the Admin Console to the Addons section on webgui.org + - added: Labels in the Shopping Cart addresses are optional. 7.9.13 - fixed #11783: Instances deleted during realtime run diff --git a/lib/WebGUI/Shop/AddressBook.pm b/lib/WebGUI/Shop/AddressBook.pm index 37e172d4b..1b31050f8 100644 --- a/lib/WebGUI/Shop/AddressBook.pm +++ b/lib/WebGUI/Shop/AddressBook.pm @@ -330,7 +330,7 @@ sub missingFields { $addressData = $address; } my @missingFields = (); - FIELD: foreach my $field (qw/label firstName lastName address1 city state code country phoneNumber/) { + FIELD: foreach my $field (qw/firstName lastName address1 city state code country phoneNumber/) { push @missingFields, $field if $addressData->{$field} eq ''; } return @missingFields; @@ -456,11 +456,10 @@ sub processAddressForm { email => $form->get($prefix . "email", "email"), organization => $form->get($prefix . "organization"), ); - #my $label = $field eq 'address1' ? 'address' - # : $field eq 'phoneNumber' ? 'phone number' - # : $field - # ; + ##Label is optional in the form, but required for the UI and API. + ##Use the first address line in its place if it's missing + $addressData{label} = $addressData{address1} if ! $addressData{label}; return %addressData; } diff --git a/lib/WebGUI/Shop/Cart.pm b/lib/WebGUI/Shop/Cart.pm index dd8b38af2..b32207f8f 100644 --- a/lib/WebGUI/Shop/Cart.pm +++ b/lib/WebGUI/Shop/Cart.pm @@ -299,7 +299,6 @@ sub getI18nError { my $i18n = WebGUI::International->new($self->session, 'Shop'); return $error eq 'no billing address' ? $i18n->get('no billing address') : $error eq 'no shipping address' ? $i18n->get('no shipping address') - : $error eq 'billing label' ? $i18n->get('billing label') : $error eq 'billing firstName' ? $i18n->get('billing firstName') : $error eq 'billing lastName' ? $i18n->get('billing lastName') : $error eq 'billing address1' ? $i18n->get('billing address1') @@ -308,7 +307,6 @@ sub getI18nError { : $error eq 'billing state' ? $i18n->get('billing state') : $error eq 'billing country' ? $i18n->get('billing country') : $error eq 'billing phoneNumber' ? $i18n->get('billing phoneNumber') - : $error eq 'shipping label' ? $i18n->get('shipping label') : $error eq 'shipping firstName' ? $i18n->get('shipping firstName') : $error eq 'shipping lastName' ? $i18n->get('shipping lastName') : $error eq 'shipping address1' ? $i18n->get('shipping address1') diff --git a/www/extras/shop/cart.js b/www/extras/shop/cart.js index e2abf550b..fdf6eda12 100644 --- a/www/extras/shop/cart.js +++ b/www/extras/shop/cart.js @@ -38,9 +38,18 @@ var Cart = { attachAddressBlurHandlers: function (name) { - var fields = _.values(this.elements[name]), + var els = this.elements[name], + label = els.label, + addr = els.address1, + fields = _.values(els), handler = this.createAddressBlurHandler(name); this.event.on(fields, 'focusout', handler); + this.event.on(addr, 'focusout', function () { + if (!label.value) { + label.value = addr.value; + label.blur(); + } + }); }, attachAddressSelectHandler: function (name) {