Javascript enhancements for cart address handling
This commit is contained in:
parent
aedda01e58
commit
17dd742c08
3 changed files with 279 additions and 0 deletions
|
|
@ -224,6 +224,30 @@ sub getAddress {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getAddressByLabel ( label )
|
||||
|
||||
Returns an address object.
|
||||
|
||||
=head3 id
|
||||
|
||||
An address object's label, e.g. 'Home', 'Work'
|
||||
|
||||
=cut
|
||||
|
||||
sub getAddressByLabel {
|
||||
my ($self, $label) = @_;
|
||||
my $sql = q{
|
||||
SELECT addressId
|
||||
FROM address
|
||||
WHERE addressBookId = ?
|
||||
AND label = ?
|
||||
};
|
||||
my $id = $self->session->db->quickScalar($sql, [$self->getId, $label]);
|
||||
return $id && $self->getAddress($id);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getAddresses ( )
|
||||
|
||||
Returns an array reference of address objects that are in this book.
|
||||
|
|
@ -470,6 +494,48 @@ sub update {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 www_ajaxGetAddress ( )
|
||||
|
||||
Gets a JSON object representing the address given by the addressId form
|
||||
parameter
|
||||
|
||||
=cut
|
||||
|
||||
sub www_ajaxGetAddress {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
$session->http->setMimeType('text/plain');
|
||||
|
||||
my $addressId = $session->form->get('addressId');
|
||||
my $address = $self->getAddress($addressId) or return;
|
||||
return JSON->new->encode($address->get);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 www_ajaxSave ( )
|
||||
|
||||
Saves an address book entry
|
||||
|
||||
=cut
|
||||
|
||||
sub www_ajaxSave {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
my $address = JSON->new->decode($session->form->get('address'));
|
||||
my $obj = $self->getAddressByLabel($address->{label});
|
||||
if ($obj) {
|
||||
$obj->update($address);
|
||||
}
|
||||
else {
|
||||
$obj = $self->addAddress($address);
|
||||
}
|
||||
$session->http->setMimeType('text/plain');
|
||||
return $obj->getId;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 www_deleteAddress ( )
|
||||
|
||||
Deletes an address from the book.
|
||||
|
|
|
|||
|
|
@ -1137,6 +1137,12 @@ sub www_view {
|
|||
|
||||
# render the cart
|
||||
my $template = WebGUI::Asset::Template->new($session, $session->setting->get("shopCartTemplateId"));
|
||||
|
||||
my ($style, $url) = $session->quick('style', 'url');
|
||||
my $yui = $url->extras('/yui/build');
|
||||
$style->setScript("$yui/yahoo/yahoo-min.js");
|
||||
$style->setScript("$yui/json/json-min.js");
|
||||
$style->setScript($url->extras('shop/cart.js'), undef, 1);
|
||||
return $session->style->userStyle($template->process(\%var));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue