diff --git a/lib/WebGUI/Asset/Sku.pm b/lib/WebGUI/Asset/Sku.pm index 6452a5ba8..97cc4139f 100644 --- a/lib/WebGUI/Asset/Sku.pm +++ b/lib/WebGUI/Asset/Sku.pm @@ -103,46 +103,46 @@ sub definition { my $i18n = WebGUI::International->new($session, "Asset_Sku"); %properties = ( description => { - tab=>"properties", - fieldType=>"HTMLArea", - defaultValue=>undef, - label=>$i18n->get("description"), - hoverHelp=>$i18n->get("description help") + tab => "properties", + fieldType => "HTMLArea", + defaultValue => undef, + label => $i18n->get("description"), + hoverHelp => $i18n->get("description help") }, sku => { - tab=>"commerce", - fieldType=>"text", - defaultValue=>$session->id->generate, - label=>$i18n->get("sku"), - hoverHelp=>$i18n->get("sku help") + tab => "shop", + fieldType => "text", + defaultValue => $session->id->generate, + label => $i18n->get("sku"), + hoverHelp => $i18n->get("sku help") }, displayTitle => { - tab=>"display", - fieldType=>"yesNo", - defaultValue=>1, - label=>$i18n->get("display title"), - hoverHelp=>$i18n->get("display title") + tab => "display", + fieldType => "yesNo", + defaultValue => 1, + label => $i18n->get("display title"), + hoverHelp => $i18n->get("display title") }, overrideTaxRate => { - tab=>"commerce", - fieldType=>"yesNo", - defaultValue=>0, - label=>$i18n->get("override tax rate"), - hoverHelp=>$i18n->get("override tax rate help") + tab => "shop", + fieldType => "yesNo", + defaultValue => 0, + label => $i18n->get("override tax rate"), + hoverHelp => $i18n->get("override tax rate help") }, taxRateOverride => { - tab=>"commerce", - fieldType=>"float", - defaultValue=>0.00, - label=>$i18n->get("tax rate override"), - hoverHelp=>$i18n->get("tax rate override help") + tab => "shop", + fieldType => "float", + defaultValue => 0.00, + label => $i18n->get("tax rate override"), + hoverHelp => $i18n->get("tax rate override help") }, salesAgentId => { - tab=>"commerce", - fieldType=>"hidden", - defaultValue=>undef, - label=>$i18n->get("sales agent"), - hoverHelp=>$i18n->get("sales agent help") + tab => "shop", + fieldType => "hidden", + defaultValue => undef, + label => $i18n->get("sales agent"), + hoverHelp => $i18n->get("sales agent help") }, ); push(@{$definition}, { @@ -195,7 +195,7 @@ Not to be modified, just defines a new tab. sub getEditTabs { my $self = shift; my $i18n = WebGUI::International->new($self->session,"Asset_Sku"); - return (['commerce', $i18n->get('commerce'), 9]); + return (['shop', $i18n->get('shop'), 9]); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Sku/Donation.pm b/lib/WebGUI/Asset/Sku/Donation.pm index aadda5f60..7a02e108f 100644 --- a/lib/WebGUI/Asset/Sku/Donation.pm +++ b/lib/WebGUI/Asset/Sku/Donation.pm @@ -73,7 +73,7 @@ sub definition { hoverHelp => $i18n->get("thank you message"), }, defaultPrice => { - tab => "commerce", + tab => "shop", fieldType => "float", defaultValue => 100.00, label => $i18n->get("default price"), diff --git a/lib/WebGUI/Asset/Sku/EMSBadge.pm b/lib/WebGUI/Asset/Sku/EMSBadge.pm index 904fdfde9..408b660bb 100644 --- a/lib/WebGUI/Asset/Sku/EMSBadge.pm +++ b/lib/WebGUI/Asset/Sku/EMSBadge.pm @@ -75,14 +75,14 @@ sub definition { my $i18n = WebGUI::International->new($session, "Asset_EventManagementSystem"); %properties = ( price => { - tab => "commerce", + tab => "shop", fieldType => "float", defaultValue => 0.00, label => $i18n->get("price"), hoverHelp => $i18n->get("price help"), }, seatsAvailable => { - tab => "commerce", + tab => "shop", fieldType => "integer", defaultValue => 100, label => $i18n->get("seats available"), diff --git a/lib/WebGUI/Asset/Sku/EMSRibbon.pm b/lib/WebGUI/Asset/Sku/EMSRibbon.pm index e068b5d57..4f0ac174a 100644 --- a/lib/WebGUI/Asset/Sku/EMSRibbon.pm +++ b/lib/WebGUI/Asset/Sku/EMSRibbon.pm @@ -57,7 +57,7 @@ sub definition { my $date = WebGUI::DateTime->new($session, time()); %properties = ( price => { - tab => "commerce", + tab => "shop", fieldType => "float", defaultValue => 0.00, label => $i18n->get("price"), @@ -192,5 +192,52 @@ sub www_addToCart { return $self->getParent->www_viewExtras($badgeId); } +#------------------------------------------------------------------- + +=head2 www_edit () + +Displays the edit form. + +=cut + +sub www_edit { + my ($self) = @_; + return $self->session->privilege->insufficient() unless $self->canEdit; + return $self->session->privilege->locked() unless $self->canEditIfLocked; + $self->session->style->setRawHeadTags(q| + + |); + my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); + my $form = $self->getEditForm; + $form->hidden({name=>'proceed', value=>'viewAllRibbons'}); + return $self->processStyle('

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

'.$form->print); +} + +#------------------------------------------------------------------- + +=head2 www_viewAllRibbons () + +Displays the list of ribbons in the parent. + +=cut + +sub www_viewAllRibbons { + my $self = shift; + return $self->getParent->www_viewExtras(undef,"ribbons"); +} + 1; diff --git a/lib/WebGUI/Asset/Sku/EMSTicket.pm b/lib/WebGUI/Asset/Sku/EMSTicket.pm index 73f4bdc80..17036574b 100644 --- a/lib/WebGUI/Asset/Sku/EMSTicket.pm +++ b/lib/WebGUI/Asset/Sku/EMSTicket.pm @@ -71,14 +71,14 @@ sub definition { my $date = WebGUI::DateTime->new($session, time()); %properties = ( price => { - tab => "commerce", + tab => "shop", fieldType => "float", defaultValue => 0.00, label => $i18n->get("price"), hoverHelp => $i18n->get("price help"), }, seatsAvailable => { - tab => "commerce", + tab => "shop", fieldType => "integer", defaultValue => 25, label => $i18n->get("seats available"), @@ -278,5 +278,53 @@ sub www_addToCart { return $self->getParent->www_viewExtras($badgeId); } +#------------------------------------------------------------------- + +=head2 www_edit () + +Displays the edit form. + +=cut + +sub www_edit { + my ($self) = @_; + return $self->session->privilege->insufficient() unless $self->canEdit; + return $self->session->privilege->locked() unless $self->canEditIfLocked; + $self->session->style->setRawHeadTags(q| + + |); + my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); + my $form = $self->getEditForm; + $form->hidden({name=>'proceed', value=>'viewAllTickets'}); + return $self->processStyle('

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

'.$form->print); +} + +#------------------------------------------------------------------- + +=head2 www_viewAllTickets () + +Displays the list of tickets in the parent. + +=cut + +sub www_viewAllTickets { + my $self = shift; + return $self->getParent->www_viewExtras(undef,"tickets"); +} + + 1; diff --git a/lib/WebGUI/Asset/Sku/EMSToken.pm b/lib/WebGUI/Asset/Sku/EMSToken.pm index 57a61a9cf..45401148e 100644 --- a/lib/WebGUI/Asset/Sku/EMSToken.pm +++ b/lib/WebGUI/Asset/Sku/EMSToken.pm @@ -57,7 +57,7 @@ sub definition { my $date = WebGUI::DateTime->new($session, time()); %properties = ( price => { - tab => "commerce", + tab => "shop", fieldType => "float", defaultValue => 0.00, label => $i18n->get("price"), @@ -189,5 +189,52 @@ sub www_addToCart { return $self->getParent->www_viewExtras($badgeId); } +#------------------------------------------------------------------- + +=head2 www_edit () + +Displays the edit form. + +=cut + +sub www_edit { + my ($self) = @_; + return $self->session->privilege->insufficient() unless $self->canEdit; + return $self->session->privilege->locked() unless $self->canEditIfLocked; + $self->session->style->setRawHeadTags(q| + + |); + my $i18n = WebGUI::International->new($self->session, "Asset_EventManagementSystem"); + my $form = $self->getEditForm; + $form->hidden({name=>'proceed', value=>'viewAllTokens'}); + return $self->processStyle('

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

'.$form->print); +} + +#------------------------------------------------------------------- + +=head2 www_viewAllTokens () + +Displays the list of tokens in the parent. + +=cut + +sub www_viewAllTokens { + my $self = shift; + return $self->getParent->www_viewExtras(undef,"tokens"); +} + 1; diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 19620d6bd..aae55f2d1 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -166,7 +166,6 @@ sub view { return $session->privilege->noAccess() unless $self->canView; # set up objects we'll need - my $badgeId = $session->form->get("badgeId"); my %var = (); @@ -177,7 +176,7 @@ sub view { my $output = q|
- Add a badge +

Add a badge

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

@@ -310,6 +309,72 @@ 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 $badge (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSRibbon']})}) { + push(@{$results{records}}, { + title => $badge->getTitle, + description => $badge->get('description'), + price => $badge->getPrice+0, + url => $badge->getUrl, + editUrl => $badge->getUrl('func=edit'), + deleteUrl => $badge->getUrl('func=delete'), + assetId => $badge->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_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 $badge (@{$self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSToken']})}) { + push(@{$results{records}}, { + title => $badge->getTitle, + description => $badge->get('description'), + price => $badge->getPrice+0, + url => $badge->getUrl, + editUrl => $badge->getUrl('func=edit'), + deleteUrl => $badge->getUrl('func=delete'), + assetId => $badge->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. @@ -330,18 +395,311 @@ sub www_getRegistrantAsJson { #------------------------------------------------------------------- -=head2 www_viewExtras ( [badgeId] ) +=head2 www_viewExtras ( [badgeId, whichTab] ) Displays available ribbons, tokens, and tickets for the current badge. =cut sub www_viewExtras { - my ($self, $badgeId) = @_; - return $self->session->privilege->noAccess() unless $self->canView; - $badgeId = $self->session->form->get("badgeId") unless ($badgeId eq ""); + my ($self, $badgeId, $whichTab) = @_; + my $session = $self->session; + return $session->privilege->noAccess() unless $self->canView; + $badgeId = $session->form->get("badgeId") unless ($badgeId eq ""); + $whichTab ||= "tickets"; - return "got here"; + my ($style, $url) = $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/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->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|

+
+
+ + + +
+
+
+ + |; + return $self->processStyle($output); my %var = (); diff --git a/lib/WebGUI/i18n/English/Asset_Sku.pm b/lib/WebGUI/i18n/English/Asset_Sku.pm index 2d39d70ee..97d4a2e78 100644 --- a/lib/WebGUI/i18n/English/Asset_Sku.pm +++ b/lib/WebGUI/i18n/English/Asset_Sku.pm @@ -3,8 +3,8 @@ package WebGUI::i18n::English::Asset_Sku; use strict; our $I18N = { - 'commerce' => { - message => q|Commerce|, + 'shop' => { + message => q|Shop|, lastUpdated => 0, context => q|The name of a tab that all Sku based assets have to put their commerce related settings.| },