diff --git a/docs/upgrades/packages-7.5.3/root_import_ems.wgpkg b/docs/upgrades/packages-7.5.3/root_import_ems.wgpkg new file mode 100644 index 000000000..594f282f3 Binary files /dev/null and b/docs/upgrades/packages-7.5.3/root_import_ems.wgpkg differ 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 becbd1c7a..c0b7049a7 100644 --- a/docs/upgrades/upgrade_7.5.2-7.5.3.pl +++ b/docs/upgrades/upgrade_7.5.2-7.5.3.pl @@ -70,7 +70,7 @@ sub upgradeEMS { $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"); + $db->write("alter table EventManagementSystem add column badgeBuilderTemplateId varchar(22) binary not null default 'BMybD3cEnmXVk2wQ_qEsRQ'"); $db->write("alter table EventManagementSystem add column badgeInstructions mediumtext"); $db->write("alter table EventManagementSystem add column ribbonInstructions mediumtext"); $db->write("alter table EventManagementSystem add column ticketInstructions mediumtext"); @@ -93,6 +93,7 @@ sub upgradeEMS { phoneNumber varchar(35), organization varchar(35), email varchar(255), + notes mediumtext, purchaseComplete boolean, hasCheckedIn boolean, index badgeAssetId_purchaseComplete (badgeAssetId,purchaseComplete) @@ -128,7 +129,7 @@ sub upgradeEMS { price float not null default 0.00, seatsAvailable int not null default 100, startDate datetime, - endDate datetime, + duration float not null default 1.0, eventNumber int, location varchar(100), relatedBadges mediumtext, diff --git a/lib/WebGUI/Asset/Sku/EMSBadge.pm b/lib/WebGUI/Asset/Sku/EMSBadge.pm index 408b660bb..6f3cdb66c 100644 --- a/lib/WebGUI/Asset/Sku/EMSBadge.pm +++ b/lib/WebGUI/Asset/Sku/EMSBadge.pm @@ -348,7 +348,7 @@ sub www_addToCart { # add it to the cart $self->addToCart(\%badgeInfo); - return $self->getParent->www_viewExtras($self->getOptions->{badgeId}); + return $self->getParent->www_buildBadge($self->getOptions->{badgeId}); } diff --git a/lib/WebGUI/Asset/Sku/EMSRibbon.pm b/lib/WebGUI/Asset/Sku/EMSRibbon.pm index 4f0ac174a..03964f974 100644 --- a/lib/WebGUI/Asset/Sku/EMSRibbon.pm +++ b/lib/WebGUI/Asset/Sku/EMSRibbon.pm @@ -189,7 +189,7 @@ sub www_addToCart { return $self->session->privilege->noAccess() unless $self->getParent->canView; my $badgeId = $self->session->form->get('badgeId'); $self->addToCart({badgeId=>$badgeId}); - return $self->getParent->www_viewExtras($badgeId); + return $self->getParent->www_buildBadge($badgeId); } #------------------------------------------------------------------- @@ -222,21 +222,21 @@ sub www_edit { |); my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); my $form = $self->getEditForm; - $form->hidden({name=>'proceed', value=>'viewAllRibbons'}); + $form->hidden({name=>'proceed', value=>'viewAll'}); return $self->processStyle('

'.$i18n->get('ems ribbon').'

'.$form->print); } #------------------------------------------------------------------- -=head2 www_viewAllRibbons () +=head2 www_viewAll () Displays the list of ribbons in the parent. =cut -sub www_viewAllRibbons { +sub www_viewAll { my $self = shift; - return $self->getParent->www_viewExtras(undef,"ribbons"); + return $self->getParent->www_buildBadge(undef,"ribbons"); } diff --git a/lib/WebGUI/Asset/Sku/EMSTicket.pm b/lib/WebGUI/Asset/Sku/EMSTicket.pm index cc888d660..9231fd6a4 100644 --- a/lib/WebGUI/Asset/Sku/EMSTicket.pm +++ b/lib/WebGUI/Asset/Sku/EMSTicket.pm @@ -98,12 +98,13 @@ sub definition { label => $i18n->get("event start date"), hoverHelp => $i18n->get("start date help"), }, - endDate => { + duration => { tab => "properties", - fieldType => "dateTime", - defaultValue => $date->toDatabase, - label => $i18n->get("event end date"), - hoverHelp => $i18n->get("event end date help"), + fieldType => "float", + defaultValue => 1.0, + subtext => $i18n->get('hours'), + label => $i18n->get("duration"), + hoverHelp => $i18n->get("duration help"), }, location => { tab => "properties", @@ -292,7 +293,7 @@ sub www_addToCart { return $self->session->privilege->noAccess() unless $self->getParent->canView; my $badgeId = $self->session->form->get('badgeId'); $self->addToCart({badgeId=>$badgeId}); - return $self->getParent->www_viewExtras($badgeId); + return $self->getParent->www_buildBadge($badgeId); } #------------------------------------------------------------------- @@ -325,21 +326,21 @@ sub www_edit { |); my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); my $form = $self->getEditForm; - $form->hidden({name=>'proceed', value=>'viewAllTickets'}); + $form->hidden({name=>'proceed', value=>'viewAll'}); return $self->processStyle('

'.$i18n->get('ems ticket').'

'.$form->print); } #------------------------------------------------------------------- -=head2 www_viewAllTickets () +=head2 www_viewAll () Displays the list of tickets in the parent. =cut -sub www_viewAllTickets { +sub www_viewAll { my $self = shift; - return $self->getParent->www_viewExtras(undef,"tickets"); + return $self->getParent->www_buildBadge(undef,"tickets"); } diff --git a/lib/WebGUI/Asset/Sku/EMSToken.pm b/lib/WebGUI/Asset/Sku/EMSToken.pm index 45401148e..9be3b2c08 100644 --- a/lib/WebGUI/Asset/Sku/EMSToken.pm +++ b/lib/WebGUI/Asset/Sku/EMSToken.pm @@ -186,7 +186,7 @@ sub www_addToCart { return $self->session->privilege->noAccess() unless $self->getParent->canView; my $badgeId = $self->session->form->get('badgeId'); $self->addToCart({badgeId=>$badgeId}); - return $self->getParent->www_viewExtras($badgeId); + return $self->getParent->www_buildBadge($badgeId); } #------------------------------------------------------------------- @@ -219,21 +219,21 @@ sub www_edit { |); my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); my $form = $self->getEditForm; - $form->hidden({name=>'proceed', value=>'viewAllTokens'}); + $form->hidden({name=>'proceed', value=>'viewAll'}); return $self->processStyle('

'.$i18n->get('ems token').'

'.$form->print); } #------------------------------------------------------------------- -=head2 www_viewAllTokens () +=head2 www_viewAll () Displays the list of tokens in the parent. =cut -sub www_viewAllTokens { +sub www_viewAll { my $self = shift; - return $self->getParent->www_viewExtras(undef,"tokens"); + return $self->getParent->www_buildBadge(undef,"tokens"); } diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index a0f73a2ef..9a676b638 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -34,6 +34,7 @@ use WebGUI::Asset::Sku::EMSRibbon; use WebGUI::Asset::Sku::EMSToken; + #------------------------------------------------------------------- sub definition { my $class = shift; @@ -58,9 +59,9 @@ sub definition { hoverHelp => $i18n->get('main template help'), namespace => 'EMS', }, - extrasTemplateId => { + badgeBuilderTemplateId => { fieldType => 'template', - defaultValue => '', + defaultValue => 'BMybD3cEnmXVk2wQ_qEsRQ', tab => 'display', label => $i18n->get('extras template'), hoverHelp => $i18n->get('extras template help'), @@ -180,7 +181,9 @@ sub view { my $output = q|
-

Add a badge

+

Add a badge + • View Events + • View Cart

|.$self->get('badgeInstructions').q|

@@ -278,6 +281,7 @@ STOP return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } + #------------------------------------------------------------------- =head2 www_addRibbonToBadge () @@ -342,6 +346,124 @@ sub www_addTokenToBadge { return $self->www_getRegistrantAsJson(); } +#------------------------------------------------------------------- + +=head2 www_buildBadge ( [badgeId, whichTab] ) + +Displays available ribbons, tokens, and tickets for the current badge. + +=cut + +sub www_buildBadge { + my ($self, $badgeId, $whichTab) = @_; + my $session = $self->session; + return $session->privilege->noAccess() unless $self->canView; + $badgeId = $session->form->get("badgeId") if ($badgeId eq ""); + my $hasBadge = ($badgeId ne ""); + $whichTab ||= "tickets"; + my $i18n = WebGUI::International->new($session, "Asset_EventManagementSystem"); + my %var = ( + %{$self->get}, + addTicketUrl => $self->getUrl('func=add;class=WebGUI::Asset::Sku::EMSTicket'), + importTicketsUrl => undef, + exportTicketsUrl => undef, + getTicketsUrl => $self->getUrl('func=getTicketsAsJson;badgeId='.$badgeId), + canEdit => $self->canEdit, + hasBadge => $hasBadge, + badgeId => $badgeId, + whichTab => $whichTab, + addRibbonUrl => $self->getUrl('func=add;class=WebGUI::Asset::Sku::EMSRibbon'), + getRibbonsUrl => $self->getUrl('func=getRibbonsAsJson'), + getTokensUrl => $self->getUrl('func=getTokensAsJson'), + addTokenUrl => $self->getUrl('func=add;class=WebGUI::Asset::Sku::EMSToken'), + lookupBadgeUrl => $self->getUrl('func=lookupRegistrant'), + url => $self->getUrl, + viewCartUrl => $self->getUrl('shop=cart'), + customRequestUrl => $self->getUrl('badgeId='.$badgeId), + ); + my @otherBadges =(); + my $cart = WebGUI::Shop::Cart->getCartBySession($session); + foreach my $item (@{$cart->getItems}) { + my $id = $item->get('options')->{badgeId}; + next if ($id eq $badgeId); + next unless ($item->getSku->isa("WebGUI::Asset::Sku::EMSBadge")); + my $name = $session->db->quickScalar("select name from EMSRegistrant where badgeId=?",[$id]); + push(@otherBadges, { + badgeUrl => $self->getUrl('func=buildBadge;badgeId='.$id), + badgeLabel => sprintf($i18n->get('switch to badge for'), $name), + }); + } + $var{otherBadgesInCart} = \@otherBadges; + #return JSON->new->pretty->encode(\@otherBadges); + + # render + return $self->processStyle($self->processTemplate(\%var,$self->get('badgeBuilderTemplateId'))); +} + +#------------------------------------------------------------------- + +=head2 www_deleteBadgeGroup () + +Deletes a badge group. + +=cut + +sub www_deleteBadgeGroup { + my $self = shift; + return $self->www_manageBadgeGroups; +} + + +#------------------------------------------------------------------- + +=head2 www_editBadgeGroup () + +Displays an edit screen for a badge group. + +=cut + +sub www_editBadgeGroup { + my $self = shift; + my ($form, $db) = $self->session->quick(qw(form db)); + my $f = WebGUI::HTMLForm->new($self->session, action=>$self->getUrl); + my $badgeGroup = $db->getRow("EMSBadgeGroup","badgeGroupId",$form->get('badgeGroupId')); + my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); + $f->hidden(name=>'func', value=>'editBadgeGroupSave'); + $f->hidden(name=>'badgeGroupId', value=>$form->get('badgeGroupId')); + $f->text( + name => 'name', + value => $badgeGroup->{name}, + label =>, + hoverHelp =>, + ); + $f->checkList( + name => 'badgeList', + value => JSON::decode_json($badgeGroup->{badgeList}), + options => $db->buildHashRef("select asset.assetId,assetData.title from asset left join assetData + using (assetId) where asset.parentId=? and assetData.revisionDate= + (SELECT max(revisionDate) from assetData where assetData.assetId=asset.assetId)", + [$self->getId]), + label => , + hoverHelp =>, + ); + return $self->processStyle($f->print); +} + + +#------------------------------------------------------------------- + +=head2 www_editBadgeGroupSave () + +Saves a badge group. + +=cut + +sub www_editBadgeGroupSave { + my $self = shift; + return $self->www_manageBadgeGroups; +} + + #------------------------------------------------------------------- =head2 www_getBadgesAsJson () @@ -378,149 +500,6 @@ sub www_getBadgesAsJson { #------------------------------------------------------------------- -=head2 www_getRibbonsAsJson () - -Retrieves a list of ribbons for the www_viewExtras() method. - -=cut - -sub www_getRibbonsAsJson { - my ($self) = @_; - my $session = $self->session; - return $session->privilege->insufficient() unless $self->canView; - my ($db, $form) = $session->quick(qw(db form)); - my %results = (); - foreach my $ribbon (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSRibbon']})}) { - push(@{$results{records}}, { - title => $ribbon->getTitle, - description => $ribbon->get('description'), - price => $ribbon->getPrice+0, - url => $ribbon->getUrl, - editUrl => $ribbon->getUrl('func=edit'), - deleteUrl => $ribbon->getUrl('func=delete'), - assetId => $ribbon->getId, - }); - } - $results{totalRecords} = $results{recordsReturned} = scalar(@{$results{records}}); - $results{'startIndex'} = 0; - $results{'sort'} = undef; - $results{'dir'} = "asc"; - $session->http->setMimeType('text/json'); - return JSON::to_json(\%results); -} - - -#------------------------------------------------------------------- - -=head2 www_getTicketsAsJson () - -Retrieves a list of tickets for the www_viewExtras() method. - -=cut - -sub www_getTicketsAsJson { - my ($self) = @_; - my $session = $self->session; - return $session->privilege->insufficient() unless $self->canView; - my ($db, $form) = $session->quick(qw(db form)); - my $startIndex = $form->get('startIndex') || 0; - my $numberOfResults = $form->get('results') || 25; - my %results = (); - my @ids = (); - my $keywords = $form->get('keywords'); - - # looking for specific events - if ($keywords =~ m{^[\d+,*\s*]+$}) { - @ids = $db->buildArray("select EMSTicket.assetId from EMSTicket left join asset using (assetId) where - asset.parentId=? and EMSTicket.eventNumber in (".$keywords.")",[$self->getId]); - } - - # looking for keywords - elsif ($keywords ne "") { - @ids = @{WebGUI::Search->new($session)->search({ - keywords => $keywords, - lineage => [$self->get('lineage')], - classes => ['WebGUI::Asset::Sku::EMSTicket'], - })->getAssetIds}; - } - - # just get all tickets - else { - @ids = $db->buildArray("select assetId from asset where parentId=? and className='WebGUI::Asset::Sku::EMSTicket'", [$self->getId]); - } - - # get assets - my $counter = 0; - my @records = (); - foreach my $id (@ids) { - next unless ($counter >= $startIndex); - my $ticket = WebGUI::Asset->new($session, $id, 'WebGUI::Asset::Sku::EMSTicket'); - next unless defined $ticket; - push(@records, { - title => $ticket->getTitle, - description => $ticket->get('description'), - price => $ticket->getPrice+0, - quantityAvailable => $ticket->getQuantityAvailable, - url => $ticket->getUrl, - editUrl => $ticket->getUrl('func=edit'), - deleteUrl => $ticket->getUrl('func=delete'), - assetId => $ticket->getId, - eventNumber => $ticket->get('eventNumber'), - location => $ticket->get('location'), - startDate => $ticket->get('startDate'), - endDate => $ticket->get('endDate'), - }); - last unless (scalar(@records) < $numberOfResults); - $counter++; - } - - # build json - $results{records} = \@records; - $results{totalRecords} = scalar(@ids); - $results{recordsReturned} = scalar(@records); - $results{'startIndex'} = $startIndex; - $results{'sort'} = undef; - $results{'dir'} = "asc"; - $session->http->setMimeType('text/json'); - return JSON::to_json(\%results); -} - - -#------------------------------------------------------------------- - -=head2 www_getTokensAsJson () - -Retrieves a list of tokens for the www_viewExtras() method. - -=cut - -sub www_getTokensAsJson { - my ($self) = @_; - my $session = $self->session; - return $session->privilege->insufficient() unless $self->canView; - my ($db, $form) = $session->quick(qw(db form)); - my %results = (); - foreach my $token (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSToken']})}) { - push(@{$results{records}}, { - title => $token->getTitle, - description => $token->get('description'), - price => $token->getPrice+0, - url => $token->getUrl, - editUrl => $token->getUrl('func=edit'), - deleteUrl => $token->getUrl('func=delete'), - assetId => $token->getId, - }); - } - $results{totalRecords} = $results{recordsReturned} = scalar(@{$results{records}}); - $results{'startIndex'} = 0; - $results{'sort'} = undef; - $results{'dir'} = "asc"; - $session->http->setMimeType('text/json'); - return JSON::to_json(\%results); -} - -#------------------------------------------------------------------- - =head2 www_getRegistrantAsJson ( ) Retrieves the properties of the current badge and the items attached to it. @@ -635,7 +614,7 @@ sub www_getRegistrantAsJson { }); } # it's this badge - elsif ($sku->isa('WebGUI::Asset::Sku::EMSRibbon')) { + elsif ($sku->isa('WebGUI::Asset::Sku::EMSBadge')) { $badgeInfo->{hasPurchased} = 0; $badgeInfo->{itemId} = $item->getId; $badgeInfo->{price} = $sku->getPrice+0; @@ -652,521 +631,209 @@ sub www_getRegistrantAsJson { #------------------------------------------------------------------- +=head2 www_getRibbonsAsJson () -=head2 www_viewExtras ( [badgeId, whichTab] ) - -Displays available ribbons, tokens, and tickets for the current badge. +Retrieves a list of ribbons for the www_buildBadge() method. =cut -sub www_viewExtras { - my ($self, $badgeId, $whichTab) = @_; +sub www_getRibbonsAsJson { + my ($self) = @_; my $session = $self->session; - return $session->privilege->noAccess() unless $self->canView; - $badgeId = $session->form->get("badgeId") if ($badgeId eq ""); - my $hasBadge = ($badgeId ne ""); - $whichTab ||= "tickets"; - - my ($style, $url) = $session->quick(qw(style url)); - $style->setLink($url->extras('/yui/build/reset-fonts-grids/reset-fonts-grids.css'), {rel=>'stylesheet', type=>'text/css'}); - $style->setLink($url->extras('/yui/build/tabview/assets/skins/sam/tabview.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->setScript($url->extras('/yui/build/tabview/tabview-min.js'), {type=>'text/javascript'}); - $style->setScript($url->extras('/yui-webgui/build/string/string.js'), {type=>'text/javascript'}); - $style->setRawHeadTags(q| - - |); - - my $output = q| - -
-
-
-
- -
- - - -
-

- Add a ticket - • - Import - • - Export -

-

|.$self->get('ticketInstructions').q|
-

-

-
-
- - - -
- - - -
-

Add a ribbon

-

|.$self->get('ribbonInstructions').q|

-
- - - -
- - - -
-

Add a token

-

|.$self->get('tokenInstructions').q|

-
- - - -
-
-
-
- |; - if ($hasBadge) { - $output .= q| -
-
- |.$self->getTitle.q| -
-
-
-
-
-
- - -
- |; - } - $output .= q| -
-
- - - - |; - return $self->processStyle($output); - my %var = (); - - - # render - return $self->processTemplate(\%var,$self->get('viewRibbonsTemplate')); + $results{totalRecords} = $results{recordsReturned} = scalar(@{$results{records}}); + $results{'startIndex'} = 0; + $results{'sort'} = undef; + $results{'dir'} = "asc"; + $session->http->setMimeType('text/json'); + return JSON::to_json(\%results); } +#------------------------------------------------------------------- + +=head2 www_getTicketsAsJson () + +Retrieves a list of tickets for the www_buildBadge() method. + +=cut + +sub www_getTicketsAsJson { + my ($self) = @_; + my $session = $self->session; + return $session->privilege->insufficient() unless $self->canView; + my ($db, $form) = $session->quick(qw(db form)); + my $startIndex = $form->get('startIndex') || 0; + my $numberOfResults = $form->get('results') || 25; + my %results = (); + my @ids = (); + my $keywords = $form->get('keywords'); + + # looking for specific events + if ($keywords =~ m{^[\d+,*\s*]+$}) { + @ids = $db->buildArray("select EMSTicket.assetId from EMSTicket left join asset using (assetId) where + asset.parentId=? and EMSTicket.eventNumber in (".$keywords.")",[$self->getId]); + } + + # looking for keywords + elsif ($keywords ne "") { + @ids = @{WebGUI::Search->new($session)->search({ + keywords => $keywords, + lineage => [$self->get('lineage')], + classes => ['WebGUI::Asset::Sku::EMSTicket'], + })->getAssetIds}; + } + + # just get all tickets + else { + @ids = $db->buildArray("select assetId from asset where parentId=? and className='WebGUI::Asset::Sku::EMSTicket'", [$self->getId]); + } + + # get assets + my $counter = 0; + my @records = (); + foreach my $id (@ids) { + next unless ($counter >= $startIndex); + my $ticket = WebGUI::Asset->new($session, $id, 'WebGUI::Asset::Sku::EMSTicket'); + next unless defined $ticket; + my $date = WebGUI::DateTime->new($session, $ticket->get('startDate')); + push(@records, { + title => $ticket->getTitle, + description => $ticket->get('description'), + price => $ticket->getPrice+0, + quantityAvailable => $ticket->getQuantityAvailable, + url => $ticket->getUrl, + editUrl => $ticket->getUrl('func=edit'), + deleteUrl => $ticket->getUrl('func=delete'), + assetId => $ticket->getId, + eventNumber => $ticket->get('eventNumber'), + location => $ticket->get('location'), + startDate => $date->webguiDate("%W @ %H:%n%p"), + duration => $ticket->get('duration'), + }); + last unless (scalar(@records) < $numberOfResults); + $counter++; + } + + # build json + $results{records} = \@records; + $results{totalRecords} = scalar(@ids); + $results{recordsReturned} = scalar(@records); + $results{'startIndex'} = $startIndex; + $results{'sort'} = undef; + $results{'dir'} = "asc"; + $session->http->setMimeType('text/json'); + return JSON::to_json(\%results); +} + + +#------------------------------------------------------------------- + +=head2 www_getTokensAsJson () + +Retrieves a list of tokens for the www_buildBadge() method. + +=cut + +sub www_getTokensAsJson { + my ($self) = @_; + my $session = $self->session; + return $session->privilege->insufficient() unless $self->canView; + my ($db, $form) = $session->quick(qw(db form)); + my %results = (); + foreach my $token (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSToken']})}) { + push(@{$results{records}}, { + title => $token->getTitle, + description => $token->get('description'), + price => $token->getPrice+0, + url => $token->getUrl, + editUrl => $token->getUrl('func=edit'), + deleteUrl => $token->getUrl('func=delete'), + assetId => $token->getId, + }); + } + $results{totalRecords} = $results{recordsReturned} = scalar(@{$results{records}}); + $results{'startIndex'} = 0; + $results{'sort'} = undef; + $results{'dir'} = "asc"; + $session->http->setMimeType('text/json'); + return JSON::to_json(\%results); +} + +#------------------------------------------------------------------- + +=head2 www_lookupRegistrant () + +Displays the + +=cut + +sub www_lookupRegistrant { + my $self = shift; + return $self->processStyle("here you will be able to look up a registrant by name"); +} + +#------------------------------------------------------------------- + +=head2 www_manageBadgeGroups () + +Displays a list of badge groups. + +=cut + +sub www_manageBadgeGroups { + my $self = shift; +} + +#------------------------------------------------------------------- + +=head2 www_removeItemFromBadge () + +Removes a ribbon, token, or ticket from a badge that is in the cart. + +=cut + +sub www_removeItemFromBadge { + my $self = shift; + my $session = $self->session; + return $session->privilege->insufficient() unless $self->canView; + my $form = $session->form; + my $cart = WebGUI::Shop::Cart->getCartBySession($session); + my $item = $cart->getItem($form->get('itemId')); + $item->remove; + return $self->www_getRegistrantAsJson(); +} + + + + + + + + + + + + + + + + + + diff --git a/lib/WebGUI/Shop/Cart.pm b/lib/WebGUI/Shop/Cart.pm index cdd92b542..55a006f13 100644 --- a/lib/WebGUI/Shop/Cart.pm +++ b/lib/WebGUI/Shop/Cart.pm @@ -503,6 +503,9 @@ sub www_update { my $i18n = WebGUI::International->new($self->session, "Shop"); $error{id $self} = sprint($i18n->get("too many of this item"), $item->get("configuredTitle")); } + elsif (my $e = WebGUI::Error->caught) { + $error{id $self} = "An unknown error has occured: ".$e->message; + } } } @@ -568,6 +571,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")}), diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index 12f9576ad..d434b8bb9 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1,7 +1,139 @@ package WebGUI::i18n::English::Asset_EventManagementSystem; use strict; -our $I18N = { ##hashref of hashes +our $I18N = { + 'hours' => { + message => q|Hours|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'view cart' => { + message => q|View Cart|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'buy badge' => { + message => q|Buy A Badge|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'switch to badge for' => { + message => q|Switch To '%s' Badge|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'lookup badge' => { + message => q|Look Up A Badge|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'remove' => { + message => q|Remove|, + lastUpdated => 0, + context => q|a link label, as in "remove from cart"|, + }, + + 'import' => { + message => q|Import|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'export' => { + message => q|Export|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'add a badge' => { + message => q|Add a badge|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'add a token' => { + message => q|Add a token|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'add a ticket' => { + message => q|Add a ticket|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'add a ribbon' => { + message => q|Add a ribbon|, + lastUpdated => 0, + context => q|a link label|, + }, + + 'sold out' => { + message => q|Sold Out|, + lastUpdated => 0, + context => q|a message telling the user there are none left to buy|, + }, + + 'manage' => { + message => q|Manage|, + lastUpdated => 0, + context => q|a column label in the badge builder|, + }, + + 'quantity available' => { + message => q|# Available|, + lastUpdated => 0, + context => q|a column label in the badge builder|, + }, + + 'buy' => { + message => q|Buy|, + lastUpdated => 0, + context => q|a button label in the badge builder|, + }, + + 'delete' => { + message => q|Delete|, + lastUpdated => 0, + context => q|a button label in the badge builder|, + }, + + 'edit' => { + message => q|Edit|, + lastUpdated => 0, + context => q|a button label in the badge builder|, + }, + + 'search' => { + message => q|Search|, + lastUpdated => 0, + context => q|a button label in the badge builder|, + }, + + 'tickets' => { + message => q|Tickets|, + lastUpdated => 0, + context => q|a template label a tab in the badge builder|, + }, + + 'ribbons' => { + message => q|Ribbons|, + lastUpdated => 0, + context => q|a template label a tab in the badge builder|, + }, + + 'tokens' => { + message => q|Tokens|, + lastUpdated => 0, + context => q|a template label a tab in the badge builder|, + }, + 'location' => { message => q|Location|, lastUpdated => 0, @@ -15,17 +147,17 @@ our $I18N = { ##hashref of hashes }, 'event number' => { - message => q|Event Number|, + message => q|Event #|, lastUpdated => 0, context => q|a property label|, }, 'event number help' => { - message => q|A number which uniquely identifies this event, so it can be matched up with printed catalogs.|, + message => q|A number that represents the event, which is easily referenceable for things like event catalogs.|, lastUpdated => 0, context => q|help for a property label|, }, - + 'badge instructions' => { message => q|Badge Instructions|, lastUpdated => 0, @@ -176,18 +308,6 @@ our $I18N = { ##hashref of hashes context => q|help for a property label|, }, - 'event number' => { - message => q|Event Number|, - lastUpdated => 0, - context => q|a property label|, - }, - - 'event number help' => { - message => q|A number that represents the event, which is easily referenceable for things like event catalogs.|, - lastUpdated => 0, - context => q|help for a property label|, - }, - 'time zone' => { message => q|Time Zone|, lastUpdated => 0, @@ -201,7 +321,7 @@ our $I18N = { ##hashref of hashes }, 'event start date' => { - message => q|Event Start Date|, + message => q|Start|, lastUpdated => 0, context => q|Event start date field label| }, @@ -212,16 +332,16 @@ our $I18N = { ##hashref of hashes context => q|hover help for Event Start Date field| }, - 'event end date' => { - message => q|Event End Date|, + 'duration' => { + message => q|Duration|, lastUpdated => 0, - context => q|Event end date field label| + context => q|duration field label| }, - 'end date help' => { - message => q|The time and date when the event ends.|, + 'duration help' => { + message => q|How long does this event last?|, lastUpdated => 0, - context => q|hover help for Event End Date field| + context => q|hover help for duration field| },