From c8b97d83fe6d0a38928acbb42b65d8c23a184e8b Mon Sep 17 00:00:00 2001 From: daviddelikat Date: Mon, 2 Nov 2009 09:01:44 -0600 Subject: [PATCH] more wokr all around --- lib/WebGUI/Asset/EMSSubmission.pm | 24 ++++++++ .../Asset/Wobject/EventManagementSystem.pm | 59 ++++++++----------- .../Workflow/Activity/ProcessEMSApprovals.pm | 5 +- .../i18n/English/Asset_EMSSubmission.pm | 6 ++ t/Asset/EMSSubmissionForm.t | 26 ++++---- t/lib/WebGUI/Test/Activity.pm | 11 ++-- www/extras/wobject/EMS/submission.js | 12 ++-- 7 files changed, 85 insertions(+), 58 deletions(-) diff --git a/lib/WebGUI/Asset/EMSSubmission.pm b/lib/WebGUI/Asset/EMSSubmission.pm index f0093cd5d..350623f0c 100644 --- a/lib/WebGUI/Asset/EMSSubmission.pm +++ b/lib/WebGUI/Asset/EMSSubmission.pm @@ -330,6 +330,29 @@ sub ems { #------------------------------------------------------------------- +=head2 sendEmailUpdate + +if the sendEmail on change is turned on then send email to the owner + +=cut + +sub sendEmailUpdate { + my $self = shift; + my $session = $self->session; + my $i18n = WebGUI::International->new( $session, "Asset_EMSSubmission" ); + if( $self->get('sendEmailOnChange') ) { + WebGUI::Inbox->addMessage( $session,{ + status => 'unread', + message => $i18n->get('your submission has been updated') . "\n\n" . + $self->get('title'), + userId => $self->createdBy, + sentBy => $session->userId, + }); + } +} + +#------------------------------------------------------------------- + =head2 www_editSubmission ( parent, params ) edit a submission @@ -448,6 +471,7 @@ sub www_editSubmissionSave { $self->addRevision($formParams); WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { override => 1, allowComments => 0 }); $self = $self->cloneFromDb; + $self->sendEmailUpdate; return $self->www_view; } else { return $self->www_editSubmission($formParams); diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index d5e17bae4..23e8bc7f1 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -698,9 +698,9 @@ sub view { addBadgeUrl => $self->getUrl('func=add;class=WebGUI::Asset::Sku::EMSBadge'), buildBadgeUrl => $self->getUrl('func=buildBadge'), viewScheduleUrl => $self->getUrl('func=viewSchedule'), - addSubmissionUrl => $self->getUrl('func=addSubmission'), + addSubmissionUrl => $self->getUrl('func=viewSubmissionQueue#addSubmission'), viewSubmissionQueueUrl => $self->getUrl('func=viewSubmissionQueue'), - addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), + addSubmissionFormUrl => $self->getUrl('func=viewSubmissionQueue#addSubmissionForm'), manageBadgeGroupsUrl=> $self->getUrl('func=manageBadgeGroups'), getBadgesUrl => $self->getUrl('func=getBadgesAsJson'), isRegistrationStaff => $self->isRegistrationStaff, @@ -1006,7 +1006,7 @@ calls editSubmissionForm in WebGUI::Asset::EMSSubmissionForm sub www_editSubmissionForm { my $self = shift; - return $self->session->privilege->insufficient() unless $self->isRegistrationStaff; + return $self->session->privilege->insufficient() unless $self->isRegistrationStaff || $self->canEdit; return WebGUI::Asset::EMSSubmissionForm->www_editSubmissionForm($self,shift); } @@ -2635,43 +2635,36 @@ sub www_viewSubmissionQueue { # this map returns an array of hash refs with an id,url pair to describe the submissionForm assets my @submissionFormUrls = map { { id => $_->getId, - url => $_->getUrl('func=editSubmissionForm') + title => $_->get('title'), + linkUrl => $self->getUrl('func=viewSubmissionQueue#' . $_->getId ), + ajaxUrl => $_->getUrl('func=editSubmissionForm'), } } ( @{$self->getLineage( ['children'],{ returnObjects => 1, includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'], } ) } ); - my $QueueTabData = - $self->processTemplate({ - backUrl => $self->getUrl, - isRegistrationStaff => $isRegistrationStaff, - canEdit => $canEdit, - mainUrl => $self->getUrl, - canSubmit => $canSubmit, - hasSubmissionForms => $self->hasSubmissionForms, - getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'), - addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), - editSubmissionUrl => $self->getUrl('func=editSubmission'), - editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'), - addSubmissionUrl => $self->getUrl('func=addSubmission'), - submissionFormUrls => \@submissionFormUrls, - },$self->get('eventSubmissionQueueTemplateId')); + my $params = { + backUrl => $self->getUrl, + isRegistrationStaff => $isRegistrationStaff, + canEdit => $canEdit, + canSubmit => $canSubmit, + hasSubmissionForms => $self->hasSubmissionForms, + getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'), + editSubmissionUrl => $self->getUrl('func=viewSubmissionQueue#editSubmission'), + editSubmissionFormUrl => $self->getUrl('func=viewSubmissionQueue#editSubmissionForm'), + addSubmissionFormUrl => $self->getUrl('func=viewSubmissionQueue#addSubmissionForm'), + addSubmissionUrl => $self->getUrl('func=viewSubmissionQueue#addSubmission'), + editSubmissionAjaxUrl => $self->getUrl('func=editSubmission'), + editSubmissionFormAjaxUrl => $self->getUrl('func=editSubmissionForm'), + addSubmissionFormAjaxUrl => $self->getUrl('func=addSubmissionForm'), + addSubmissionAjaxUrl => $self->getUrl('func=addSubmission'), + submissionFormUrls => \@submissionFormUrls, + queueTabTitle => $isRegistrationStaff ? $i18n->get('submission queue') : $i18n->get('my submissions'), + }; + $params->{QueueTabData} = $self->processTemplate($params,$self->get('eventSubmissionQueueTemplateId')); return $self->processStyle( - $self->processTemplate({ - queueTabTitle => $isRegistrationStaff ? $i18n->get('submission queue') : $i18n->get('my submissions'), - queueTabData => $QueueTabData, - backUrl => $self->getUrl, - isRegistrationStaff => $isRegistrationStaff, - canEdit => $canEdit, - canSubmit => $canSubmit, - hasSubmissionForms => $self->hasSubmissionForms, - getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'), - addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), - editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'), - editSubmissionUrl => $self->getUrl('func=editSubmission'), - addSubmissionUrl => $self->getUrl('func=addSubmission'), - },$self->get('eventSubmissionMainTemplateId'))); + $self->processTemplate( $params, $self->get('eventSubmissionMainTemplateId'))); } 1; diff --git a/lib/WebGUI/Workflow/Activity/ProcessEMSApprovals.pm b/lib/WebGUI/Workflow/Activity/ProcessEMSApprovals.pm index b24bf1dfd..a374847a8 100644 --- a/lib/WebGUI/Workflow/Activity/ProcessEMSApprovals.pm +++ b/lib/WebGUI/Workflow/Activity/ProcessEMSApprovals.pm @@ -80,13 +80,14 @@ dav::log __PACKAGE__ . " executing\n"; my $limit = 2_500; my $timeLimit = 120; - my $list = $root->getLineage( ['children'], { returnObjects => 1, + my $list = $root->getLineage( ['descendants'], { returnObjects => 1, includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'], } ); for my $emsf ( @$list ) { my $whereClause = q{ submissionStatus='approved' }; - my $res = $emsf->getLineage(['children'],{ + my $res = $emsf->getLineage(['children'],{ returnObjects => 1, + joinClass => 'WebGUI::Asset::EMSSubmission', includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'], whereClause => $whereClause, } ); diff --git a/lib/WebGUI/i18n/English/Asset_EMSSubmission.pm b/lib/WebGUI/i18n/English/Asset_EMSSubmission.pm index fbedc82ab..13c6262ec 100644 --- a/lib/WebGUI/i18n/English/Asset_EMSSubmission.pm +++ b/lib/WebGUI/i18n/English/Asset_EMSSubmission.pm @@ -38,6 +38,12 @@ our $I18N = { ##hashref of hashes context => q|Help text for the submission status field.| }, + 'your submission has been updated' => { + message => q|Your event submission has been updated.|, + lastUpdated => 1131394072, + context => q|Message used to notify user when someone else changes their event submission.| + }, + # 'TODO' => { # message => q|TODO|, # lastUpdated => 1131394072, diff --git a/t/Asset/EMSSubmissionForm.t b/t/Asset/EMSSubmissionForm.t index 99915144d..15d677083 100644 --- a/t/Asset/EMSSubmissionForm.t +++ b/t/Asset/EMSSubmissionForm.t @@ -216,7 +216,7 @@ my $submission = { }; $session->request->setup_body($submission); my $sub1 = $frmA->addSubmission; -push @cleanup, sub { $sub1->delete; }; +push @cleanup, sub { $sub1->puge; }; print join( "\n", @{$sub1->{errors}} ),"\n" if defined $sub1->{errors}; my $isa1 = isa_ok( $sub1, 'WebGUI::Asset::EMSSubmission', "userA/formA valid submission succeeded" ); ok( $ems->hasSubmissions, 'UserA has submissions on this ems' ); @@ -234,7 +234,7 @@ my $submission = { }; $session->request->setup_body($submission); my $sub2 = $frmB->addSubmission; -push @cleanup, sub { $sub2->delete; }; +push @cleanup, sub { $sub2->purge; }; my $isa2 = isa_ok( $sub2, 'WebGUI::Asset::EMSSubmission', "userB/FormB valid submission succeeded" ); loginUserC; @@ -337,11 +337,11 @@ is( $sub1->get('title'),'the new title','successfully changed the title'); loginRgstr; -$sub1->update({ status => 'approved' }); -is($sub1->get('status'),'approved','set status to approved'); +$sub1->update({ submissionStatus => 'approved' }); +is($sub1->get('submissionStatus'),'approved','set status to approved'); -$sub2->update({ status => 'denied' }); -is($sub2->get('status'),'denied','set status to denied'); +$sub2->update({ submissionStatus => 'denied' }); +is($sub2->get('submissionStatus'),'denied','set status to denied'); SKIP: { skip "workflow activities not coded yet", 10 if 0; @@ -353,33 +353,33 @@ my $cleanupSubmissions = WebGUI::Test::Activity->create( $session, "WebGUI::Workflow::Activity::CleanupEMSSubmissions" ); -push @cleanup, sub { $approveSubmissions->delete; $cleanupSubmissions->delete; }; +push @cleanup, sub { $approveSubmissions->purge; $cleanupSubmissions->purge; }; -#is($approveSubmissions->run, 'complete', 'approval complete'); +is($approveSubmissions->run, 'complete', 'approval complete'); is($approveSubmissions->run, 'done', 'approval done'); $sub1 = $sub1->cloneFromDb; -is( $sub1->get('status'),'failed','submission failed to create'); +is( $sub1->get('submissionStatus'),'failed','submission failed to create'); # TODO fill in the rest of the data required by EMSTicket print "1\n"; $approveSubmissions->rerun; print "2\n"; -#is($approveSubmissions->run, 'complete', 'approval complete'); +is($approveSubmissions->run, 'complete', 'approval complete'); is($approveSubmissions->run, 'done', 'approval done'); print "3\n"; $sub1 = $sub1->cloneFromDb; print "4\n"; -is( $sub1->get('status'),'created','approval successfull'); +is( $sub1->get('submissionStatus'),'created','approval successfull'); print "5\n"; my $ticket = WebGUI::Asset->newByDynamicClass($session, $sub1->get('ticketId')); print "6\n"; isa_ok( $ticket, 'WebGUI::Asset::Sku::EMSTicket', 'approval created a ticket'); print "7\n"; -push @cleanup, sub { $ticket->delete; }; +push @cleanup, sub { $ticket->purge; }; print "8\n"; $sub2->update({ @@ -388,7 +388,7 @@ $sub2->update({ my $submissionId = $sub2->get('assetId'); $cleanupSubmissions->rerun; -#is($cleanupSubmissions->run, 'complete', 'cleanup complete'); +is($cleanupSubmissions->run, 'complete', 'cleanup complete'); is($cleanupSubmissions->run, 'done', 'cleanup done'); $sub2 = WebGUI::Asset->newByDynamicClass($session, $submissionId); diff --git a/t/lib/WebGUI/Test/Activity.pm b/t/lib/WebGUI/Test/Activity.pm index 173f787ed..6c42743af 100644 --- a/t/lib/WebGUI/Test/Activity.pm +++ b/t/lib/WebGUI/Test/Activity.pm @@ -82,16 +82,19 @@ sub run { sub rerun { my $self = shift; +my $session = $self->{session}; $self->{instance}->delete; - $self->{instance} = WebGUI::Workflow::Instance->create($self->{session}, + $self->{instance} = WebGUI::Workflow::Instance->create($session, { workflowId => $self->{workflow}->getId, skipSpectreNotification => 1, } ); - my $tag = WebGUI::VersionTag->getWorking($session); - $tag->commit; - WebGUI::Test->tagsToRollback($tag); + my $tag = WebGUI::VersionTag->getWorking($session, 1); + if( $tag ) { + $tag->commit; + WebGUI::Test->tagsToRollback($tag); + } } diff --git a/www/extras/wobject/EMS/submission.js b/www/extras/wobject/EMS/submission.js index 7d3efe19f..baa002cbb 100644 --- a/www/extras/wobject/EMS/submission.js +++ b/www/extras/wobject/EMS/submission.js @@ -95,7 +95,6 @@ WebGUI.EMS = function (configs) { if( WebGUI.EMS.lastTab ) { WebGUI.EMS.Tabs.set('activeTab',WebGUI.EMS.lastTab); } - window.location.hash = ""; }; //*********************************************************************************** @@ -155,8 +154,9 @@ WebGUI.EMS = function (configs) { } alert(message); return; - } else if( typeof(WebGUI.EMS.Items[response.title]) == "undefined" - || WebGUI.EMS.Items[response.title] == null ) { + // currently only one tab exists, so instead of checking we just delete it and recreate + } else { // if( typeof(WebGUI.EMS.Items[response.title]) == "undefined" + // || WebGUI.EMS.Items[response.title] == null ) { // if there is a tab .. close it, // at least until I can get the JS/HTML re-written to handle multiple tabs // there should only be one @@ -172,9 +172,9 @@ WebGUI.EMS = function (configs) { YAHOO.util.Event.on(myTab.getElementsByClassName('close')[0], 'click', WebGUI.EMS.closeTab , myTab); WebGUI.EMS.Items[response.title] = new Object(); WebGUI.EMS.Items[response.title].Tab = myTab; - } else { - myTab = WebGUI.EMS.Items[response.title].Tab; - myTab.set('content', response.text); + //} else { + //myTab = WebGUI.EMS.Items[response.title].Tab; + //myTab.set('content', response.text); } // make sure the script on the ticket has run // if( typeof( WebGUI.ticketJScriptRun ) == "undefined" ) {