diff --git a/docs/upgrades/upgrade_7.5.2-7.5.3.pl b/docs/upgrades/upgrade_7.5.2-7.5.3.pl
index 4a8489668..b989b8728 100644
--- a/docs/upgrades/upgrade_7.5.2-7.5.3.pl
+++ b/docs/upgrades/upgrade_7.5.2-7.5.3.pl
@@ -56,9 +56,20 @@ sub upgradeEMS {
}
}
print "\t\tAltering table structures.\n" unless ($quiet);
- $db->write("alter table EventManagementSystem add column timezone varchar(30) not null default 'America/Chicago'");
$db->write("alter table EventManagementSystem drop column globalMetadata");
$db->write("alter table EventManagementSystem drop column globalPrerequisites");
+ $db->write("alter table EventManagementSystem drop column displayTemplateId");
+ $db->write("alter table EventManagementSystem drop column checkoutTemplateId");
+ $db->write("alter table EventManagementSystem drop column managePurchasesTemplateId");
+ $db->write("alter table EventManagementSystem drop column viewPurchaseTemplateId");
+ $db->write("alter table EventManagementSystem drop column searchTemplateId");
+ $db->write("alter table EventManagementSystem drop column paginateAfter");
+ $db->write("alter table EventManagementSystem drop column groupToAddEvents");
+ $db->write("alter table EventManagementSystem drop column badgePrinterTemplateId");
+ $db->write("alter table EventManagementSystem drop column ticketPrinterTemplateId");
+ $db->write("alter table EventManagementSystem add column timezone varchar(30) not null default 'America/Chicago'");
+ $db->write("alter table EventManagementSystem add column templateId varchar(22) binary not null");
+ $db->write("alter table EventManagementSystem add column extrasTemplateId varchar(22) binary not null");
print "\t\tCreating new tables.\n" unless ($quiet);
$db->write("create table EMSRegistrant (
badgeId varchar(22) binary not null primary key,
@@ -380,6 +391,7 @@ sub addShippingDrivers {
# and here's our code
$session->config->delete('shippingPlugins');
$session->config->addToArray('shippingDrivers', 'WebGUI::Shop::ShipDriver::FlatRate');
+ $session->db->write("insert into shipper (shipperId, className,options) values ('defaultfreeshipping000','WebGUI::Shop::ShipDriver::FlatRate',?)",[q|{"label":"Free Shipping","enabled":1}|]);
}
#-------------------------------------------------
diff --git a/lib/WebGUI/Asset/Sku/EMSBadge.pm b/lib/WebGUI/Asset/Sku/EMSBadge.pm
index 3ab35259a..a7e4af528 100644
--- a/lib/WebGUI/Asset/Sku/EMSBadge.pm
+++ b/lib/WebGUI/Asset/Sku/EMSBadge.pm
@@ -242,18 +242,18 @@ sub view {
$info->hidden(name=>"func", value=>"addToCart");
$info->text(
name => 'name',
- defaultValue => (defined $address) ? $address->get("name") : $form->get('name'),
label => $i18n->get('name','Shop'),
+ defaultValue => (defined $address) ? $address->get("name") : $form->get('name'),
);
$info->text(
name => 'organization',
- defaultValue => $form->get("organization"),
label => $i18n->get('organization'),
+ defaultValue => $form->get("organization"),
);
$info->text(
name => 'address1',
- defaultValue => (defined $address) ? $address->get("address1") : $form->get('address1'),
label => $i18n->get('address','Shop'),
+ defaultValue => (defined $address) ? $address->get("address1") : $form->get('address1'),
);
$info->text(
name => 'address2',
@@ -265,35 +265,35 @@ sub view {
);
$info->text(
name => 'city',
- defaultValue => (defined $address) ? $address->get("city") : $form->get('city'),
label => $i18n->get('city','Shop'),
+ defaultValue => (defined $address) ? $address->get("city") : $form->get('city'),
);
$info->text(
name => 'state',
- defaultValue => (defined $address) ? $address->get("state") : $form->get('state'),
label => $i18n->get('state','Shop'),
+ defaultValue => (defined $address) ? $address->get("state") : $form->get('state'),
);
$info->zipcode(
name => 'zipcode',
- defaultValue => (defined $address) ? $address->get("code") : $form->get('zipcode','zipcode'),
label => $i18n->get('code','Shop'),
+ defaultValue => (defined $address) ? $address->get("code") : $form->get('zipcode','zipcode'),
);
$info->country(
name => 'country',
- defaultValue => (defined $address) ? $address->get("country") : ($form->get('country') || 'United States'),
label => $i18n->get('country','Shop'),
+ defaultValue => (defined $address) ? $address->get("country") : ($form->get('country') || 'United States'),
);
$info->phone(
name => 'phoneNumber',
- defaultValue => (defined $address) ? $address->get("phoneNumber") : $form->get("phone","phone"),
label => $i18n->get('phone number','Shop'),
+ defaultValue => (defined $address) ? $address->get("phoneNumber") : $form->get("phone","phone"),
);
$info->email(
name => 'email',
label => $i18n->get('email address'),
defaultValue => $form->get("email","email")
);
- $info->submit(value=>$i18n->get('add to cart','Shop'));
+ $info->submit(value=>$i18n->get('add to cart'));
# render the page;
my $output = '
'.$self->getTitle.'
'
diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm
index d201a81b8..f59800043 100644
--- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm
+++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm
@@ -85,19 +85,30 @@ See WebGUI::Asset::prepareView() for details.
sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
- my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
- $template->prepare;
# set up all the files that we need
my ($style, $url) = $self->session->quick(qw(style url));
$style->setLink($url->extras('/yui/build/fonts/fonts-min.css'), {rel=>'stylesheet', type=>'text/css'});
$style->setLink($url->extras('/yui/build/datatable/assets/skins/sam/datatable.css'), {rel=>'stylesheet', type=>'text/css'});
+ $style->setLink($url->extras('/yui/build/container/assets/skins/sam/container.css'), {rel=>'stylesheet', type=>'text/css'});
$style->setScript($url->extras('/yui/build/utilities/utilities.js'), {type=>'text/javascript'});
$style->setScript($url->extras('/yui/build/json/json-min.js'), {type=>'text/javascript'});
$style->setScript($url->extras('/yui/build/datasource/datasource-beta-min.js'), {type=>'text/javascript'});
$style->setScript($url->extras('/yui/build/datatable/datatable-beta-min.js'), {type=>'text/javascript'});
-
-
+ $style->setScript($url->extras('/yui/build/container/container-min.js'), {type=>'text/javascript'});
+ $style->setRawHeadTags(q|
+
+ |);
+ return undef;
+ my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
+ $template->prepare;
$self->{_viewTemplate} = $template;
}
@@ -116,7 +127,6 @@ sub view {
# set up objects we'll need
my $badgeId = $session->form->get("badgeId");
- my $i18n = WebGUI::International->new($session, "Asset_EventManagementSystem");
my %var = ();
@@ -127,51 +137,91 @@ sub view {
my $output = q|
+
@@ -197,13 +247,16 @@ sub www_getBadgesAsJson {
return $session->privilege->insufficient() unless $self->canView;
my ($db, $form) = $session->quick(qw(db form));
my %results = ();
- foreach my $badge (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::Badge']})}) {
+ foreach my $badge (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSBadge']})}) {
push(@{$results{records}}, {
title => $badge->getTitle,
description => $badge->get('description'),
- price => $badge->getPrice,
+ price => $badge->getPrice+0,
quantityAvailable => $badge->getQuantityAvailable,
- url => $badge->getUrl
+ url => $badge->getUrl,
+ editUrl => $badge->getUrl('func=edit'),
+ deleteUrl => $badge->getUrl('func=delete'),
+ assetId => $badge->getId,
});
}
$results{totalRecords} = $results{recordsReturned} = scalar(@{$results{records}});
@@ -3822,22 +3875,6 @@ sub www_saveRegistrantInfo {
return $self->www_view();
}
-#-------------------------------------------------------------------
-
-=head2 prepareView ( )
-
-See WebGUI::Asset::prepareView() for details.
-
-=cut
-
-sub prepareView {
- my $self = shift;
- $self->SUPER::prepareView();
- my $templateId = $self->get("displayTemplateId");
- my $template = WebGUI::Asset::Template->new($self->session, $templateId);
- $template->prepare;
- $self->{_viewTemplate} = $template;
-}
#-------------------------------------------------------------------
sub www_search {
diff --git a/lib/WebGUI/Shop/AddressBook.pm b/lib/WebGUI/Shop/AddressBook.pm
index 87123f5b8..16b72dbe2 100644
--- a/lib/WebGUI/Shop/AddressBook.pm
+++ b/lib/WebGUI/Shop/AddressBook.pm
@@ -3,6 +3,7 @@ package WebGUI::Shop::AddressBook;
use strict;
use Class::InsideOut qw{ :std };
+use JSON;
use WebGUI::Asset::Template;
use WebGUI::Exception::Shop;
use WebGUI::Form;
@@ -146,6 +147,24 @@ sub delete {
#-------------------------------------------------------------------
+=head2 formatCallbackForm ( callback )
+
+Returns an HTML hidden form field with the callback JSON block properly escaped.
+
+=head3 callback
+
+A JSON string that holds the callback information.
+
+=cut
+
+sub formatCallbackForm {
+ my ($self, $callback) = @_;
+ $callback =~ s/"/'/g;
+ return '';
+}
+
+#-------------------------------------------------------------------
+
=head2 get ( [ property ] )
Returns a duplicated hash reference of this object’s data.
@@ -329,9 +348,9 @@ sub www_editAddress {
error => $error,
formHeader => WebGUI::Form::formHeader($session)
.WebGUI::Form::hidden($session, {name=>"shop", value=>"address"})
+ .$self->formatCallbackForm($form->get('callback'))
.WebGUI::Form::hidden($session, {name=>"method", value=>"editAddressSave"})
- .WebGUI::Form::hidden($session, {name=>"addressId", value=>$form->get("addressId")})
- .WebGUI::Form::hidden($session, {name=>"itemId", value=>$form->get("itemId")}),
+ .WebGUI::Form::hidden($session, {name=>"addressId", value=>$form->get("addressId")}),
saveButton => WebGUI::Form::submit($session),
formFooter => WebGUI::Form::formFooter($session),
address1Field => WebGUI::Form::text($session, {name=>"address1", maxlength=>35, defaultValue=>($form->get("address1") || ((defined $address) ? $address->get('address1') : undef))}),
@@ -419,6 +438,13 @@ sub www_view {
my $self = shift;
my $session = $self->session;
my $form = $session->form;
+ my $callback = $form->get('callback');
+ $callback =~ s/'/"/g;
+ $callback = JSON::from_json($callback);
+ my $callbackForm = '';
+ foreach my $param (@{$callback->{params}}) {
+ $callbackForm .= WebGUI::Form::hidden($session, {name=>$param->{name}, value=>$param->{value}});
+ }
my $i18n = WebGUI::International->new($session, "Shop");
my @addresses = ();
foreach my $address (@{$self->getAddresses}) {
@@ -429,21 +455,19 @@ sub www_view {
.WebGUI::Form::hidden($session, {name=>"shop", value=>"address"})
.WebGUI::Form::hidden($session, {name=>"method", value=>"deleteAddress"})
.WebGUI::Form::hidden($session, {name=>"addressId", value=>$address->getId})
- .WebGUI::Form::hidden($session, {name=>"itemId", value=>$form->get("itemId")})
+ .$self->formatCallbackForm($form->get('callback'))
.WebGUI::Form::submit($session, {value=>$i18n->get("delete")})
.WebGUI::Form::formFooter($session),
editButton => WebGUI::Form::formHeader($session)
.WebGUI::Form::hidden($session, {name=>"shop", value=>"address"})
.WebGUI::Form::hidden($session, {name=>"method", value=>"editAddress"})
.WebGUI::Form::hidden($session, {name=>"addressId", value=>$address->getId})
- .WebGUI::Form::hidden($session, {name=>"itemId", value=>$form->get("itemId")})
+ .$self->formatCallbackForm($form->get('callback'))
.WebGUI::Form::submit($session, {value=>$i18n->get("edit")})
.WebGUI::Form::formFooter($session),
- useButton => WebGUI::Form::formHeader($session)
- .WebGUI::Form::hidden($session, {name=>"shop", value=>"cart"})
- .WebGUI::Form::hidden($session, {name=>"method", value=>"setShippingAddress"})
- .WebGUI::Form::hidden($session, {name=>"shippingAddressId", value=>$address->getId})
- .WebGUI::Form::hidden($session, {name=>"itemId", value=>$form->get("itemId")})
+ useButton => WebGUI::Form::formHeader($session,{action=>$callback->{url}})
+ .$callbackForm
+ .WebGUI::Form::hidden($session, {name=>"addressId", value=>$address->getId})
.WebGUI::Form::submit($session, {value=>$i18n->get("use this address")})
.WebGUI::Form::formFooter($session),
});
@@ -453,7 +477,7 @@ sub www_view {
addButton => WebGUI::Form::formHeader($session)
.WebGUI::Form::hidden($session, {name=>"shop", value=>"address"})
.WebGUI::Form::hidden($session, {name=>"method", value=>"editAddress"})
- .WebGUI::Form::hidden($session, {name=>"itemId", value=>$form->get("itemId")})
+ .$self->formatCallbackForm($form->get('callback'))
.WebGUI::Form::submit($session, {value=>$i18n->get("add a new address")})
.WebGUI::Form::formFooter($session),
);
diff --git a/lib/WebGUI/Shop/Cart.pm b/lib/WebGUI/Shop/Cart.pm
index 84053fc69..8bd49398a 100644
--- a/lib/WebGUI/Shop/Cart.pm
+++ b/lib/WebGUI/Shop/Cart.pm
@@ -3,6 +3,7 @@ package WebGUI::Shop::Cart;
use strict;
use Class::InsideOut qw{ :std };
+use JSON;
use WebGUI::Asset::Template;
use WebGUI::Exception::Shop;
use WebGUI::Form;
@@ -429,10 +430,10 @@ sub www_setShippingAddress {
my $self = shift;
my $form = $self->session->form;
if ($form->get("itemId") ne "") {
- $self->getItem($form->get("itemId"))->update({shippingAddressId=>$form->get('shippingAddressId')});
+ $self->getItem($form->get("itemId"))->update({shippingAddressId=>$form->get('addressId')});
}
else {
- $self->update({shippingAddressId=>$form->get('shippingAddressId')});
+ $self->update({shippingAddressId=>$form->get('addressId')});
}
return $self->www_view;
}
@@ -475,6 +476,17 @@ sub www_view {
my $url = $session->url;
my $i18n = WebGUI::International->new($session, "Shop");
my @items = ();
+ $session->style->setRawHeadTags(q|
+
+ |);
foreach my $item (@{$self->getItems}) {
my $sku = $item->getSku;
$sku->applyOptions($item->get("options"));
@@ -489,7 +501,7 @@ sub www_view {
removeButton => WebGUI::Form::submit($session, {value=>$i18n->get("remove button"),
extras=>q|onclick="this.form.method.value='removeItem';this.form.itemId.value='|.$item->getId.q|';this.form.submit;"|}),
shipToButton => WebGUI::Form::submit($session, {value=>$i18n->get("ship to button"),
- extras=>q|onclick="this.form.shop.value='address';this.form.method.value='view';this.form.itemId.value='|.$item->getId.q|';this.form.submit;"|}),
+ extras=>q|onclick="setCallbackForAddressChooser(this.form,'|.$item->getId.q|');"|}),
);
my $address = eval { $item->getShippingAddress };
unless (WebGUI::Error->caught) {
@@ -504,7 +516,7 @@ sub www_view {
formHeader => WebGUI::Form::formHeader($session)
. WebGUI::Form::hidden($session, {name=>"shop", value=>"cart"})
. WebGUI::Form::hidden($session, {name=>"method", value=>"update"})
- . WebGUI::Form::hidden($session, {name=>"itemId", value=>""}),
+ . WebGUI::Form::hidden($session, {name=>"callback", value=>""}),
formFooter => WebGUI::Form::formFooter($session),
updateButton => WebGUI::Form::submit($session, {value=>$i18n->get("update cart button")}),
checkoutButton => WebGUI::Form::submit($session, {value=>$i18n->get("checkout button"),
@@ -512,9 +524,9 @@ sub www_view {
continueShoppingButton => WebGUI::Form::submit($session, {value=>$i18n->get("continue shopping button"),
extras=>q|onclick="this.form.method.value='continueShopping';this.form.submit;"|}),
chooseShippingButton => WebGUI::Form::submit($session, {value=>$i18n->get("choose shipping button"),
- extras=>q|onclick="this.form.shop.value='address';this.form.method.value='view';this.form.submit;"|}),
+ extras=>q|onclick="setCallbackForAddressChooser(this.form);"|}),
shipToButton => WebGUI::Form::submit($session, {value=>$i18n->get("ship to button"),
- extras=>q|onclick="this.form.shop.value='address';this.form.method.value='view';this.form.submit;"|}),
+ extras=>q|onclick="setCallbackForAddressChooser(this.form);"|}),
couponField => WebGUI::Form::text($session, {name=>"couponCode", value=>"", size=>20}),
subtotalPrice => $self->formatCurrency($self->calculateSubtotal()),
couponDiscount => $self->formatCurrency(0),