lots of work...

This commit is contained in:
daviddelikat 2009-10-31 09:41:56 -05:00
parent d0307d99c1
commit 10ddac6c58
11 changed files with 172 additions and 100 deletions

View file

@ -440,12 +440,15 @@ dav::log 'EMSSubmission::www_editSubmission: asseId ne new';
sub www_editSubmissionSave { sub www_editSubmissionSave {
my $self = shift; my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit; my $session = $self->session;
return $session->privilege->insufficient() unless $self->canEdit;
my $formParams = WebGUI::Asset::EMSSubmission->processForm($self); my $formParams = WebGUI::Asset::EMSSubmission->processForm($self);
if( $formParams->{_isValid} ) { if( $formParams->{_isValid} ) {
delete $formParams->{_isValid}; delete $formParams->{_isValid};
$self->update($formParams); $self->addRevision($formParams);
return $self->getParent->getParent->www_viewSubmissionQueue; WebGUI::VersionTag->autoCommitWorkingIfEnabled($session, { override => 1, allowComments => 0 });
$self = $self->cloneFromDb;
return $self->www_view;
} else { } else {
return $self->www_editSubmission($formParams); return $self->www_editSubmission($formParams);
} }
@ -489,7 +492,7 @@ sub getEditForm {
=head2 getEditTabs ( ) =head2 getEditTabs ( )
Not to be modified, just defines 2 new tabs. defines 2 new tabs.
the shop tab is created here to mimic the function of the sku-created the shop tab is created here to mimic the function of the sku-created
shop tab. this class holds data like Sku assets so that they can be assigned shop tab. this class holds data like Sku assets so that they can be assigned
in the future when the sku asset is created from this data. in the future when the sku asset is created from this data.

View file

@ -41,12 +41,6 @@ and then become EMSTicket's.
use WebGUI::Asset::EMSSubmissionForm; use WebGUI::Asset::EMSSubmissionForm;
=head1 TODO
add a lastSubmissionDate -- after that the submission form will be closed
the link will still exist but the form will just say '<title> submissions closed as of <date>'
=head1 METHODS =head1 METHODS
These methods are available from this class: These methods are available from this class:
@ -75,7 +69,10 @@ sub addSubmission {
$newParams->{className} = 'WebGUI::Asset::EMSSubmission'; $newParams->{className} = 'WebGUI::Asset::EMSSubmission';
$newParams->{submissionStatus} = 'pending'; $newParams->{submissionStatus} = 'pending';
$newParams->{submissionId} = $self->ems->getNextSubmissionId; $newParams->{submissionId} = $self->ems->getNextSubmissionId;
$self->addChild($newParams); my $newAsset = $self->addChild($newParams);
WebGUI::VersionTag->autoCommitWorkingIfEnabled($self->session, { override => 1, allowComments => 0 });
$self = $self->cloneFromDb;
return $newAsset;
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -254,7 +251,7 @@ sub www_editSubmissionForm {
return qq{<li><a href='$u' title='$d'>$n</a></li>} } ; return qq{<li><a href='$u' title='$d'>$n</a></li>} } ;
my $listOfLinks = join '', ( map { my $listOfLinks = join '', ( map {
$makeAnchorList->( $makeAnchorList->(
$_->getUrl('func=editSubmissionForm' ), $_->getQueueUrl,
$_->get('title'), $_->get('title'),
WebGUI::HTML::filter($_->get('description'),'all') WebGUI::HTML::filter($_->get('description'),'all')
) )
@ -361,7 +358,9 @@ sub www_editSubmissionFormSave {
my $formParams = $self->processForm(); my $formParams = $self->processForm();
if( $formParams->{_isValid} ) { if( $formParams->{_isValid} ) {
delete $formParams->{_isValid}; delete $formParams->{_isValid};
$self->update($formParams); $self->addRevision($formParams);
WebGUI::VersionTag->autoCommitWorkingIfEnabled($self->session);
$self = $self->cloneFromDb;
return $self->getParent->www_viewSubmissionQueue; return $self->getParent->www_viewSubmissionQueue;
} else { } else {
return $self->www_editSubmissionForm($formParams); return $self->www_editSubmissionForm($formParams);
@ -392,6 +391,19 @@ sub getFormDescription {
return JSON->new->decode($self->get('formDescription')); return JSON->new->decode($self->get('formDescription'));
} }
#-------------------------------------------------------------------
=head2 getQueueUrl
returns the URL for the submission queue page with the submisison id in the hash part
=cut
sub getQueueUrl {
my $self = shift;
return $self->ems->getUrl('func=viewSubmissionQueue#' . $self->getId );
}
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 indexContent ( ) =head2 indexContent ( )

View file

@ -50,7 +50,7 @@ sub addGroupToSubmitList {
my @ids = split(' ', $self->get('eventSubmissionGroups')); my @ids = split(' ', $self->get('eventSubmissionGroups'));
my %h; my %h;
@ids = map { $h{$_}++ == 0 ? $_ : () } ( $groupId, @ids ); @ids = map { $h{$_}++ == 0 ? $_ : () } ( $groupId, @ids );
$self->addRevision({eventSubmissionGroups => join( ' ', @ids ) }); $self->update({eventSubmissionGroups => join( ' ', @ids ) });
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -94,7 +94,10 @@ sub addSubmissionForm {
$params->{className} = 'WebGUI::Asset::EMSSubmissionForm'; $params->{className} = 'WebGUI::Asset::EMSSubmissionForm';
$params->{canSubmitGroupId} ||= 2; $params->{canSubmitGroupId} ||= 2;
$self->addGroupToSubmitList($params->{canSubmitGroupId}); $self->addGroupToSubmitList($params->{canSubmitGroupId});
return $self->addChild($params); my $newAsset = $self->addChild($params);
WebGUI::VersionTag->autoCommitWorkingIfEnabled($self->session);
$self = $self->cloneFromDb;
return $newAsset;
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
@ -434,7 +437,7 @@ sub getNextSubmissionId {
my $self = shift; my $self = shift;
#my $submissionId = $self->get('nextSubmissionId'); #my $submissionId = $self->get('nextSubmissionId');
my ($submissionId) = $self->session->db->read('select nextSubmissionId from EventManagementSystem where assetId = ?', [ $self->getId ] )->array; my ($submissionId) = $self->session->db->read('select nextSubmissionId from EventManagementSystem where assetId = ?', [ $self->getId ] )->array;
$self->addRevision( { nextSubmissionId => ($submissionId + 1) } ); $self->update( { nextSubmissionId => ($submissionId + 1) } );
return $submissionId; return $submissionId;
} }
@ -963,6 +966,27 @@ sub www_editBadgeGroupSave {
return $self->www_manageBadgeGroups; return $self->www_manageBadgeGroups;
} }
#-------------------------------------------------------------------
=head2 www_editSubmission
use getLineage to find the item to edit based on submissionId
then call www_editSubmission on it
=cut
sub www_editSubmission {
my $self = shift;
my $submissionId = $self->session->form->get('submissionId');
my $asset = $self->getLineage(['descendants'], { returnObjects => 1,
joinClass => "WebGUI::Asset::EMSSubmission",
whereClause => 'submissionId = ' . int($submissionId),
includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'],
} );
return $asset->[0]->www_editSubmission;
}
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 www_editSubmissionForm =head2 www_editSubmissionForm
@ -2545,6 +2569,15 @@ sub www_viewSubmissionQueue {
my $i18n = $self->i18n; my $i18n = $self->i18n;
return $self->session->privilege->insufficient() unless $canSubmit || $isRegistrationStaff; return $self->session->privilege->insufficient() unless $canSubmit || $isRegistrationStaff;
# 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')
} } (
@{$self->getLineage( ['children'],{ returnObjects => 1,
includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'],
} ) }
);
my $QueueTabData = my $QueueTabData =
$self->processTemplate({ $self->processTemplate({
backUrl => $self->getUrl, backUrl => $self->getUrl,
@ -2555,8 +2588,10 @@ sub www_viewSubmissionQueue {
hasSubmissionForms => $self->hasSubmissionForms, hasSubmissionForms => $self->hasSubmissionForms,
getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'), getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'),
addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'),
editSubmissionUrl => $self->getUrl('func=editSubmission'),
editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'), editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'),
addSubmissionUrl => $self->getUrl('func=addSubmission'), addSubmissionUrl => $self->getUrl('func=addSubmission'),
submissionFormUrls => \@submissionFormUrls,
},$self->get('eventSubmissionQueueTemplateId')); },$self->get('eventSubmissionQueueTemplateId'));
return $self->processStyle( return $self->processStyle(
@ -2571,6 +2606,7 @@ sub www_viewSubmissionQueue {
getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'), getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'),
addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'), addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'),
editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'), editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'),
editSubmissionUrl => $self->getUrl('func=editSubmission'),
addSubmissionUrl => $self->getUrl('func=addSubmission'), addSubmissionUrl => $self->getUrl('func=addSubmission'),
},$self->get('eventSubmissionMainTemplateId'))); },$self->get('eventSubmissionMainTemplateId')));
} }

View file

@ -337,7 +337,7 @@ A WebGUI::Session object
sub www_autoAddToGroup { sub www_autoAddToGroup {
my $session = shift; my $session = shift;
return $self->session->privilege->noAccess() if ($session->user->isVisitor); return $session->privilege->noAccess() if ($session->user->isVisitor);
my $group = WebGUI::Group->new($session,$session->form->process("groupId")); my $group = WebGUI::Group->new($session,$session->form->process("groupId"));
if ($group && $group->autoAdd) { if ($group && $group->autoAdd) {
$group->addUsers([$session->user->userId],[$session->form->process("groupId")]); $group->addUsers([$session->user->userId],[$session->form->process("groupId")]);
@ -361,7 +361,7 @@ A WebGUI::Session object
sub www_autoDeleteFromGroup { sub www_autoDeleteFromGroup {
my $session = shift; my $session = shift;
return $self->session->privilege->noAccess() if ($session->user->isVisitor); return $session->privilege->noAccess() if ($session->user->isVisitor);
my $group = WebGUI::Group->new($session,$session->form->process("groupId")); my $group = WebGUI::Group->new($session,$session->form->process("groupId"));
if ($group && $group->autoDelete) { if ($group && $group->autoDelete) {
$group->deleteUsers([$session->user->userId],[$session->form->process("groupId")]); $group->deleteUsers([$session->user->userId],[$session->form->process("groupId")]);

View file

@ -68,10 +68,13 @@ See WebGUI::Workflow::Activity::execute() for details.
=cut =cut
use lib '/root/pb/lib'; use dav;
sub execute { sub execute {
my $self = shift; my $self = shift;
my $session = $self->session; my $session = $self->session;
my $root = WebGUI::Asset->getRoot($session); my $root = WebGUI::Asset->getRoot($session);
dav::log __PACKAGE__ . " executing\n";
# keep track of how much time it's taking # keep track of how much time it's taking
my $start = time; my $start = time;
@ -83,12 +86,14 @@ sub execute {
} ); } );
for my $emsf ( @$list ) { for my $emsf ( @$list ) {
my whereClause = q{ ( submissionStatus='denied' } my $daysBeforeCleanup = $emsf->get('daysBeforeCleanup') ;
next if ! $daysBeforeCleanup;
my $whereClause = q{ submissionStatus='denied' };
if( $emsf->get('deleteCreatedItems') ) { if( $emsf->get('deleteCreatedItems') ) {
$whereClause .= q{ or submissionStatus='created'}; $whereClause = ' ( ' . $whereClause . q{ or submissionStatus='created' } . ' ) ';
} }
my $checkDate = time - ( 60*60*24* $emsf->get('daysBeforeCleanup') ); my $checkDate = time - ( 60*60*24* $daysBeforeCleanup );
$whereClause .= q{ ) and lastModifiedDate < } . $checkDate; $whereClause .= q{ and lastModifiedDate < } . $checkDate;
my $res = $emsf->getLineage(['children'],{ my $res = $emsf->getLineage(['children'],{
includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'], includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'],
whereClause => $whereClause, whereClause => $whereClause,

View file

@ -68,11 +68,13 @@ See WebGUI::Workflow::Activity::execute() for details.
=cut =cut
use lib '/root/pb/lib'; use dav;
sub execute { sub execute {
my $self = shift; my $self = shift;
my $session = $self->session; my $session = $self->session;
my $root = WebGUI::Asset->getRoot($session); my $root = WebGUI::Asset->getRoot($session);
dav::log __PACKAGE__ . " executing\n";
# keep track of how much time it's taking # keep track of how much time it's taking
my $start = time; my $start = time;
my $limit = 2_500; my $limit = 2_500;
@ -83,7 +85,7 @@ sub execute {
} ); } );
for my $emsf ( @$list ) { for my $emsf ( @$list ) {
my whereClause = q{ ( submissionStatus='approved' } my $whereClause = q{ submissionStatus='approved' };
my $res = $emsf->getLineage(['children'],{ my $res = $emsf->getLineage(['children'],{
includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'], includeOnlyClasses => ['WebGUI::Asset::EMSSubmission'],
whereClause => $whereClause, whereClause => $whereClause,
@ -94,11 +96,15 @@ sub execute {
delete $properties{submissionStatus}; delete $properties{submissionStatus};
delete $properties{sendEmailOnChange}; delete $properties{sendEmailOnChange};
delete $properties{ticketId}; delete $properties{ticketId};
my $ticketId = $emsf->ems->addChild( my $newAsset = $emsf->ems->addChild(
className => 'WebGUI::Asset::Sku::EMSTicket', className => 'WebGUI::Asset::Sku::EMSTicket',
%properties; %properties,
); );
$submission->update({ ticketId => $ticketId }); if( defined $newAsset ) {
$submission->update({ ticketId => $newAsset->getId, submissionStatus => 'created' });
} else {
$submission->update({ submissionStatus => 'failed' });
}
$limit--; $limit--;
return $self->WAITING(1) if ! $limit or time > $start + $timeLimit; return $self->WAITING(1) if ! $limit or time > $start + $timeLimit;
} }
@ -106,33 +112,6 @@ sub execute {
return $self->COMPLETE; return $self->COMPLETE;
} }
sub execute {
my $self = shift;
my $session = $self->session;
my $root = WebGUI::Asset->getRoot($session);
return $self->ERROR;
my $sth = $session->db->read("select assetId from asset where className='WebGUI::Asset::Wobject::HelpDesk'");
while (my ($assetId) = $sth->array) {
my $hd = WebGUI::Asset->new($session,$assetId,"WebGUI::Asset::Wobject::HelpDesk");
next unless defined $hd;
my $closeAfter = $hd->get("closeTicketsAfter");
my $rules = {};
$rules->{'joinClass' } = "WebGUI::Asset::Ticket";
$rules->{'whereClause' } = qq{Ticket.ticketStatus = 'resolved' and (Ticket.resolvedDate + $closeAfter <= UNIX_TIMESTAMP(NOW()))};
$rules->{'includeOnlyClasses'} = ['WebGUI::Asset::Ticket'];
$rules->{'returnObjects' } = 1;
my $tickets = $hd->getLineage(['children'], $rules);
foreach my $ticket (@{$tickets}) {
$ticket->setStatus("closed");
}
}
return $self->COMPLETE;
}
1; 1;

View file

@ -9,16 +9,6 @@ our $I18N = { ##hashref of hashes
lastUpdated => 1131394072, lastUpdated => 1131394072,
context => q|Then name of the Asset ( Event Management System - Event Submission Form ).| context => q|Then name of the Asset ( Event Management System - Event Submission Form ).|
}, },
'next submission id label' => {
message => q|Next Submission Id|,
lastUpdated => 1131394072,
context => q|Label for the field which indicates the next id used to create a submission.|
},
'next submission id label help' => {
message => q|This is the value that will be used to fill in the first submission, do not edit it.|,
lastUpdated => 1131394072,
context => q|This is the help text for the 'next submission id' field, the user should be reminded not to edit this field.|
},
'can submit group label' => { 'can submit group label' => {
message => q|User Group Allowed to create Submissions|, message => q|User Group Allowed to create Submissions|,
lastUpdated => 1131394072, lastUpdated => 1131394072,

View file

@ -2034,6 +2034,16 @@ normal templates.|,
context => q|Label for the submission list tab for event submitters.|, context => q|Label for the submission list tab for event submitters.|,
}, },
'next submission id label' => {
message => q|Next Submission Id|,
lastUpdated => 1131394072,
context => q|Label for the field which indicates the next id used to create a submission.|
},
'next submission id label help' => {
message => q|This is the value that will be used to fill in the first submission, do not edit it.|,
lastUpdated => 1131394072,
context => q|This is the help text for the 'next submission id' field, the user should be reminded not to edit this field.|
},
# 'TODO' => { # 'TODO' => {
# message => q|TODO|, # message => q|TODO|,
# lastUpdated => 1147050475, # lastUpdated => 1147050475,

View file

@ -69,8 +69,10 @@ sub logout { $session->user({userId => 1}); }
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# put your tests here # put your tests here
eval { eval {
my $use = use_ok 'WebGUI::Asset::EMSSubmissionForm'; my $use = use_ok( 'WebGUI::Asset::EMSSubmissionForm' )
$use &&= use_ok 'WebGUI::Asset::EMSSubmission'; && use_ok( 'WebGUI::Asset::EMSSubmission' )
&& use_ok( 'WebGUI::Workflow::Activity::CleanupEMSSubmissions' )
&& use_ok( 'WebGUI::Workflow::Activity::ProcessEMSApprovals' );
SKIP: { skip 'package compile failed!', 1 unless $use; SKIP: { skip 'package compile failed!', 1 unless $use;
@ -120,13 +122,14 @@ my $ems = $node->addChild({
},1,1); },1,1);
my $i18n = $ems->i18n; my $i18n = $ems->i18n;
$versionTag->commit; $versionTag->commit;
$versionTag = WebGUI::VersionTag->getWorking($session);
WebGUI::Test->tagsToRollback($versionTag);
my $id1 = $ems->getNextSubmissionId; my $id1 = $ems->getNextSubmissionId;
my $id2 = $ems->getNextSubmissionId; my $id2 = $ems->getNextSubmissionId;
my $id3 = $ems->getNextSubmissionId; is( $id1 +1, $id2, ' test getNextSubmissionId' );
my $id4 = $ems->getNextSubmissionId;
is( $id1 +3, $id4, ' test getNextSubmissionId' );
# quick test of addGroupToSubmitList # quick test of addGroupToSubmitList
is($ems->get('eventSubmissionGroups'),'', 'event submission groups is blank'); is($ems->get('eventSubmissionGroups'),'', 'event submission groups is blank');
@ -139,13 +142,12 @@ is($ems->get('eventSubmissionGroups'),'joe frank', 'event submission groups stil
$ems->update({eventSubmissionGroups => ''}); $ems->update({eventSubmissionGroups => ''});
is($ems->get('eventSubmissionGroups'),'', 'event submission groups is reset to blank'); is($ems->get('eventSubmissionGroups'),'', 'event submission groups is reset to blank');
is_deeply($ems->getSubmissionLocations, \@submissionLocations, 'test getSubmissionLocations' ); is_deeply($ems->getSubmissionLocations, \@submissionLocations, 'test getSubmissionLocations' );
is_deeply( $ems->getSubmissionStatus, { is_deeply( $ems->getSubmissionStatus, {
map { $_ => $i18n->get($_) } ( qw/pending feedback failed approved created denied/ ) map { $_ => $i18n->get($_) } ( qw/pending feedback failed approved created denied/ )
}, 'test getSubmissionStatus' ); }, 'test getSubmissionStatus' );
$versionTag = WebGUI::VersionTag->getWorking($session);
WebGUI::Test->tagsToRollback($versionTag);
loginRgstr; loginRgstr;
@ -190,7 +192,7 @@ my $formBdesc = {
my $frmB = $ems->addSubmissionForm({ my $frmB = $ems->addSubmissionForm({
className => 'WebGUI::Asset::EMSSubmissionForm', className => 'WebGUI::Asset::EMSSubmissionForm',
title => 'test B -- short', title => 'test B -- short',
daysBeforeCleanup => 0, daysBeforeCleanup => 1,
canSubmitGroupId => $submitGroupB->getId, canSubmitGroupId => $submitGroupB->getId,
formDescription => $formBdesc, formDescription => $formBdesc,
}); });
@ -248,10 +250,10 @@ cmp_deeply( from_json($ems->www_getAllSubmissions), {
records => [ records => [
{ {
lastReplyDate => '', lastReplyDate => '',
submissionId => '5', submissionId => '3',
creationDate => ignore(), creationDate => ignore(),
createdBy => 'userA', createdBy => 'userA',
url => '/test-ems?func=viewSubmissionQueue#5', url => '/test-ems?func=viewSubmissionQueue#3',
submissionStatus => $i18n->get('pending'), submissionStatus => $i18n->get('pending'),
title => 'my favorite thing to talk about', title => 'my favorite thing to talk about',
lastReplyBy => '' lastReplyBy => ''
@ -262,10 +264,10 @@ cmp_deeply( from_json($ems->www_getAllSubmissions), {
dir => 'DESC', dir => 'DESC',
}, 'test getAllSubmissions for UserA' ); }, 'test getAllSubmissions for UserA' );
$session->request->setup_body({submissionId => 5}); $session->request->setup_body({submissionId => 3});
cmp_deeply( from_json($ems->www_getSubmissionById), { cmp_deeply( from_json($ems->www_getSubmissionById), {
submissionId => 5, title => 3,
itemText => ignore(), text => ignore(),
}, 'test getSubmissionById'); }, 'test getSubmissionById');
loginUserC; loginUserC;
@ -287,20 +289,20 @@ cmp_deeply( from_json($ems->www_getAllSubmissions), {
records => [ records => [
{ {
lastReplyDate => '', lastReplyDate => '',
submissionId => '6', submissionId => '4',
creationDate => ignore(), creationDate => ignore(),
createdBy => 'userB', createdBy => 'userB',
url => '/test-ems?func=viewSubmissionQueue#6', url => '/test-ems?func=viewSubmissionQueue#4',
submissionStatus => $i18n->get('pending'), submissionStatus => $i18n->get('pending'),
title => 'why i like to be important', title => 'why i like to be important',
lastReplyBy => '' lastReplyBy => ''
}, },
{ {
lastReplyDate => '', lastReplyDate => '',
submissionId => '5', submissionId => '3',
creationDate => ignore(), creationDate => ignore(),
createdBy => 'userA', createdBy => 'userA',
url => '/test-ems?func=viewSubmissionQueue#5', url => '/test-ems?func=viewSubmissionQueue#3',
submissionStatus => $i18n->get('pending'), submissionStatus => $i18n->get('pending'),
title => 'my favorite thing to talk about', title => 'my favorite thing to talk about',
lastReplyBy => '' lastReplyBy => ''
@ -353,34 +355,46 @@ my $cleanupSubmissions = WebGUI::Test::Activity->create( $session,
push @cleanup, sub { $approveSubmissions->delete; $cleanupSubmissions->delete; }; push @cleanup, sub { $approveSubmissions->delete; $cleanupSubmissions->delete; };
is($approveSubmissions->run, 'complete', 'approval complete'); #is($approveSubmissions->run, 'complete', 'approval complete');
is($approveSubmissions->run, 'done', 'approval done'); is($approveSubmissions->run, 'done', 'approval done');
$sub1 = $sub1->cloneFromDb;
is( $sub1->get('status'),'failed','submission failed to create'); is( $sub1->get('status'),'failed','submission failed to create');
# TODO fill in the rest of the data required by EMSTicket # TODO fill in the rest of the data required by EMSTicket
is($approveSubmissions->run, 'complete', 'approval complete'); print "1\n";
$approveSubmissions->rerun;
print "2\n";
#is($approveSubmissions->run, 'complete', 'approval complete');
is($approveSubmissions->run, 'done', 'approval done'); 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('status'),'created','approval successfull');
print "5\n";
my $ticket = WebGUI::Asset->newByDynamicClass($session, $sub1->get('ticketId')); my $ticket = WebGUI::Asset->newByDynamicClass($session, $sub1->get('ticketId'));
isa_ok( $ticket, 'WebGUI::Asset::Sku::EMS_Ticket', 'approval created a ticket'); 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->delete; };
print "8\n";
$sub2->update({ $sub2->update({
lastModified => time - ( 60 * 60 * 72 ), # last modified 3 days ago lastModified => time - ( 60 * 60 * 72 ), # last modified 3 days ago
}); });
my $submissionId = $sub2->get('assetId'); my $submissionId = $sub2->get('assetId');
is($cleanupSubmissions->run, 'complete', 'cleanup complete'); $cleanupSubmissions->rerun;
#is($cleanupSubmissions->run, 'complete', 'cleanup complete');
is($cleanupSubmissions->run, 'done', 'cleanup done'); is($cleanupSubmissions->run, 'done', 'cleanup done');
$sub2 = WebGUI::Asset->newByDynamicClass($session, $submissionId); $sub2 = WebGUI::Asset->newByDynamicClass($session, $submissionId);
is( $sub2, undef, 'approval created a ticket'); is( $sub2, undef, 'ticket deleted');
# TODO add a test to cleanup denied and created entries # TODO add a test to cleanup created entries
} # end of workflow skip } # end of workflow skip

View file

@ -66,6 +66,11 @@ sub create {
skipSpectreNotification => 1, skipSpectreNotification => 1,
} }
); );
my $tag = WebGUI::VersionTag->getWorking($session);
$tag->commit;
WebGUI::Test->tagsToRollback($tag);
return bless { instance => $instance, return bless { instance => $instance,
session => $session, session => $session,
workflow => $workflow }, __PACKAGE__; workflow => $workflow }, __PACKAGE__;
@ -84,6 +89,10 @@ sub rerun {
skipSpectreNotification => 1, skipSpectreNotification => 1,
} }
); );
my $tag = WebGUI::VersionTag->getWorking($session);
$tag->commit;
WebGUI::Test->tagsToRollback($tag);
} }
sub delete { sub delete {

View file

@ -36,13 +36,14 @@ WebGUI.EMS = function (configs) {
this._configs = {}; this._configs = {};
if(configs) { if(configs) {
this._configs = configs; this._configs = configs;
WebGUI.EMS.url = configs.url;
WebGUI.EMS.tabContent = configs.tabContent;
} }
this.url = this._configs.url; WebGUI.EMS.Items = new Object();
if(!this._configs.initRequestString) { if(!this._configs.initRequestString) {
this._configs.initRequestString = ';startIndex=0'; this._configs.initRequestString = ';startIndex=0';
} }
WebGUI.EMS.Items = new Object();
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
// Internationalization // Internationalization
@ -94,7 +95,7 @@ WebGUI.EMS = function (configs) {
if( WebGUI.EMS.lastTab ) { if( WebGUI.EMS.lastTab ) {
WebGUI.EMS.Tabs.set('activeTab',WebGUI.EMS.lastTab); WebGUI.EMS.Tabs.set('activeTab',WebGUI.EMS.lastTab);
} }
window.location.hash = ''; window.location.hash = "";
}; };
//*********************************************************************************** //***********************************************************************************
@ -172,7 +173,7 @@ WebGUI.EMS = function (configs) {
WebGUI.EMS.Items[response.title] = new Object(); WebGUI.EMS.Items[response.title] = new Object();
WebGUI.EMS.Items[response.title].Tab = myTab; WebGUI.EMS.Items[response.title].Tab = myTab;
} else { } else {
myTab = WebGUI.EMS.Tickets[response.title].Tab; myTab = WebGUI.EMS.Items[response.title].Tab;
myTab.set('content', response.text); myTab.set('content', response.text);
} }
// make sure the script on the ticket has run // make sure the script on the ticket has run
@ -242,12 +243,24 @@ WebGUI.EMS = function (configs) {
//*********************************************************************************** //***********************************************************************************
// This method does the actual work of loading an item into a tab // This method does the actual work of loading an item into a tab
// //
WebGUI.EMS.loadItem = function ( submissionId, pathname ) { WebGUI.EMS.loadItem = function ( contentId ) {
if( typeof(pathname) == "undefined" ) { var submissionId = parseInt( contentId, 10 );
pathname = WebGUI.EMS.url ; var url;
} // compare contentId with submissionId incase we get an assetId that starts with numeric chars
var url = pathname + "?func=getSubmissionById;submissionId=" + submissionId; if( contentId == submissionId ) {
WebGUI.EMS.newTab(submissionId, url ); url = WebGUI.EMS.tabContent['editSubmission'] + ";submissionId=" + submissionId;
} else {
url = WebGUI.EMS.tabContent[contentId];
}
WebGUI.EMS.newTab(url);
};
//***********************************************************************************
// Load an item when the user clicks on an anchor html element
//
WebGUI.EMS.loadItemFromAnchor = function ( anchorObject ) {
var tabContent = anchorObject.hash.substring(1);
WebGUI.EMS.loadItem(tabContent);
}; };
//*********************************************************************************** //***********************************************************************************
@ -270,12 +283,13 @@ WebGUI.EMS = function (configs) {
var elCell = this.getTdEl(target); var elCell = this.getTdEl(target);
if(elCell) { if(elCell) {
var oRecord = this.getRecord(elCell); var oRecord = this.getRecord(elCell);
var submissionId = oRecord.getData('submissionId');
if( typeof( WebGUI.EMS.Items[oRecord.submissionId] ) != "undefined" ) { if( typeof( WebGUI.EMS.Items[submissionId] ) != "undefined" ) {
WebGUI.EMS.Tabs.set('activeTab',WebGUI.EMS.Items[oRecord.submissionId].Tab); WebGUI.EMS.Tabs.set('activeTab',WebGUI.EMS.Items[submissionId].Tab);
WebGUI.EMS.loadingIndicator.hide(); WebGUI.EMS.loadingIndicator.hide();
} else { } else {
WebGUI.EMS.loadItem( oRecord.submissionId ); WebGUI.EMS.loadItem( submissionId );
} }
} else { } else {
alert("Could not get table cell for " + target); alert("Could not get table cell for " + target);