diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 6a1bae700..97e0410eb 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -36,6 +36,22 @@ use Tie::IxHash; use Data::Dumper; +#------------------------------------------------------------------- +=head2 canSubmit + +returns true is the current user can submit to any form attached to this EMS + +=cut + +sub canSubmit { + my $self = shift; + my $user = $self->session->user; + for my $groupId (split ' ', $self->get('eventSubmissionGroups')) { + return 1 if $user->isInGroup($groupId); + } + return 0; +} + #------------------------------------------------------------------- sub definition { my $class = shift; @@ -109,27 +125,27 @@ sub definition { }, eventSubmissionTemplateId => { fieldType => 'template', - defaultValue => 'yBwydfooiLvhEFawJb0VTQ', + defaultValue => 'eventSubmissionTmplt01', tab => 'display', label => $i18n->get('print ticket template'), hoverHelp => $i18n->get('print ticket template help'), - namespace => 'EMS/PrintTicket', + namespace => 'EMS/SubmissionForm', }, viewEventSubmissionQueueTemplateId => { fieldType => 'template', - defaultValue => 'yBwydfooiLvhEFawJb0VTQ', + defaultValue => 'eventQueueTmplate00001', tab => 'display', label => $i18n->get('print ticket template'), hoverHelp => $i18n->get('print ticket template help'), - namespace => 'EMS/PrintTicket', + namespace => 'EMS/SubmissionQueue', }, editEventSubmissionTemplateId => { fieldType => 'template', - defaultValue => 'yBwydfooiLvhEFawJb0VTQ', + defaultValue => 'editEventSubmissionT01', tab => 'display', label => $i18n->get('print ticket template'), hoverHelp => $i18n->get('print ticket template help'), - namespace => 'EMS/PrintTicket', + namespace => 'EMS/EditSubmission', }, badgeInstructions => { fieldType => 'HTMLArea', @@ -403,6 +419,28 @@ sub getTokens { return $self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSToken']}); } +#------------------------------------------------------------------- +=head2 hasForms + +returns true if the EMS has subission forms attached + +=cut + +sub hasForms { + return 0; +} + +#------------------------------------------------------------------- +=head2 hasSubmissions + +returns true if the current user has submission forms in this EMS + +=cut + +sub hasSubmissions { + return 0; +} + #------------------------------------------------------------------- =head2 isRegistrationStaff ( [ user ] ) @@ -498,9 +536,16 @@ sub view { addBadgeUrl => $self->getUrl('func=add;class=WebGUI::Asset::Sku::EMSBadge'), buildBadgeUrl => $self->getUrl('func=buildBadge'), viewScheduleUrl => $self->getUrl('func=viewSchedule'), + newSubmissionUrl => $self->getUrl('func=newSubmission'), + viewSubmissionsUrl => $self->getUrl('func=viewSubmissions'), + viewSubmissionQueueUrl => $self->getUrl('func=viewSubmissionQueue'), + addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), manageBadgeGroupsUrl=> $self->getUrl('func=manageBadgeGroups'), getBadgesUrl => $self->getUrl('func=getBadgesAsJson'), canEdit => $self->canEdit, + canSubmit => $self->canSubmit, + hasSubmissions => $self->hasSubmissions, + hasForms => $self->hasForms, lookupRegistrantUrl => $self->getUrl('func=lookupRegistrant'), ); diff --git a/lib/WebGUI/i18n/English/Asset_EMSSubmissionForm.pm b/lib/WebGUI/i18n/English/Asset_EMSSubmissionForm.pm index 4b5c3a803..a2f58cea0 100644 --- a/lib/WebGUI/i18n/English/Asset_EMSSubmissionForm.pm +++ b/lib/WebGUI/i18n/English/Asset_EMSSubmissionForm.pm @@ -69,6 +69,21 @@ our $I18N = { ##hashref of hashes lastUpdated => 1131394072, context => q|This is the label used to describe the EMS submission cleanup activity| }, + 'past deadline message' => { + message => q|The deadline for this submission is past, no more submissions will be taken at this time.|, + lastUpdated => 1131394072, + context => q|This is the default message for informing the user that the submission deadline is past.| + }, + 'past deadline label' => { + message => q|Post SUbmission Deadline Text|, + lastUpdated => 1131394072, + context => q|This is the label for the message indicating that the deadline for submissions has past.| + }, + 'past deadline label help' => { + message => q|Enter a message here to let the user know that submissions are no longer being taken because the deadline has past.|, + lastUpdated => 1131394072, + context => q|This help text should describe how the user tells submitters that the submission deadline has past.| + }, # 'TODO' => { # message => q|TODO|, diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index c8145bf3a..3fc245a7f 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1878,6 +1878,36 @@ normal templates.|, context => q|help text for the columns per page field|, }, + 'new submission form' => { + message => q|New Submission Form|, + lastUpdated => 1147050475, + context => q|Label for the link to create a new submission form.|, + }, + + 'view submission queue' => { + message => q|Submission Queue|, + lastUpdated => 1147050475, + context => q|Label for link to view submission queue.|, + }, + + 'new submission' => { + message => q|New Submission|, + lastUpdated => 1147050475, + context => q|Label for link to create a new submission for an event.|, + }, + + 'view my submissions' => { + message => q|My Submissions|, + lastUpdated => 1147050475, + context => q|Label for link to view submissions owned by current user.|, + }, + +# 'TODO' => { +# message => q|TODO|, +# lastUpdated => 1147050475, +# context => q|TODO|, +# }, + }; 1; diff --git a/t/Asset/EMSSubmissionForm.t b/t/Asset/EMSSubmissionForm.t index 34b800c8a..d1c7ef818 100644 --- a/t/Asset/EMSSubmissionForm.t +++ b/t/Asset/EMSSubmissionForm.t @@ -119,20 +119,23 @@ WebGUI::Test->tagsToRollback($versionTag); loginRgstr; +is( $ems->hasForms, 0, 'ems currently has no forms' ); + my $frmA = $ems->addChild({ className => 'WebGUI::Asset::EMSSubmissionForm', title => 'test A -- long', canSubmitGroup => $submitGroupA->getId, daysBeforeCleanup => 1, formDescription => q{ { - 'title' : { 'type' : 'text' }, - 'description' : { 'type' : 'textarea' }, - 'duration' : { 'default' : 2.0 }, - 'startDate' : { 'type' : 'selectList', 'options' : + 'title' : { 'type' : 'text' }, + 'description' : { 'type' : 'textarea' }, + 'duration' : { 'default' : 2.0 }, + 'startDate' : { 'type' : 'selectList', 'options' : [ '1255150800', '1255237200', '1255323600' ] }, } }, }); isa_ok( $frmA, 'WebGUI::Asset::EMSSubmissionForm' ); +is( $ems->hasForms, 1, 'ems now has forms' ); ok( $frmA->validateSubmission({ title => 'titlea', description => 'the description', @@ -170,13 +173,14 @@ my $frmB = $ems->addChild({ daysBeforeCleanup => 0, canSubmitGroup => $submitGroupB->getId, formDescription => q{ { - 'title' : { 'type' : 'text' }, - 'description' : { 'type' : 'textarea' }, - 'duration' : { 'default' : 0.5 }, - 'startDate' : { 'default' : '1255150800' }, - 'metaField1' : { 'type' : 'Url' }, + 'title' : { 'type' : 'text' }, + 'description' : { 'type' : 'textarea' }, + 'duration' : { 'default' : 0.5 }, + 'startDate' : { 'default' : '1255150800' }, + 'metaField1' : { 'type' : 'Url' }, } }, }); +is( $ems->hasForms, 1, 'ems still has forms' ); ok( $frmA->validateSubmission({ title => 'title', description => 'description', @@ -188,19 +192,26 @@ ok( !$frmA->validateSubmission({ metaField1 => 'joe@sams.org', }), 'invalid submission: test invalid metafield value' ); +logout; + +is( $ems->canSubmit, 0, 'current user cannot submit to this ems' ); + loginUserA; +is( $ems->canSubmit, 1, 'current user can submit to this ems' ); +is( $ems->hasSubmissions, 0, 'current user has no submissions' ); # this one should work my $sub1 = $frmA->addSubmission({ title => 'my favorite thing to talk about', }); isa_ok( $sub1, 'WebGUI::Asset::EMSSubmission', "valid submission succeeded" ); +is( $ems->hasSubmissions, 1, 'current user has submissions on this ems' ); #this one should fail my $sub2 = $frmB->addSubmission({ title => 'why i like to be important', }); -ok( not defined $sub2, "invalid submission failed" ); +ok( not defined $sub2, "user cannot submit to this form" ); loginUserB; @@ -242,13 +253,11 @@ ok($sub1->update({ is( $sub1->get('title'),'the new title','successfully changed the title'); -ok($sub1->update({ - status => 'approved' -}),'set status to approved'); +$sub1->update({ status => 'approved' }); +is($sub1->get('status'),'approved','set status to approved'); -ok($sub2->update({ - status => 'denied' -}),'set status to denied'); +$sub2->update({ status => 'denied' }); +is($sub2->get('status'),'denied','set status to denied'); # create the workflows/activities for processing my $approveSubmissions = WebGUI::Test::Activity->create( $session,