tabs successfully added

This commit is contained in:
daviddelikat 2009-10-28 03:59:18 -05:00
parent 1155408243
commit 5f8888fcc9
5 changed files with 212 additions and 55 deletions

View file

@ -286,7 +286,7 @@ sub drawStatusField {
return WebGUI::Form::SelectBox($self->session, {
name => 'location',
value => $self->get('submissionStatus'),
options => $self->ems->getStatus,
options => $self->ems->getSubmissionStatus,
});
}
@ -315,7 +315,10 @@ returns the ems ansestor of this asset
=cut
sub ems { $_[0]->getParent->getParent }
sub ems {
my $self = shift;
$self->getParent->getParent
}
#-------------------------------------------------------------------
@ -389,16 +392,14 @@ dav::log 'EMSSubmission::www_editSubmission: asseId ne new';
# for each field
for my $field ( values %$fields ) {
if( $formDescription->{$field->{fieldId}} ) {
dav::dump 'drawing fields:', $field;
if( $field->{fieldId} eq 'submissionStatus' ) {
$field->{options} = $parent->getParent->getStatus;
dav::log 'set options for status';
}
if( $field->{fieldId} eq 'location' ) {
$field->{options} = [ split( /\s*/, $parent->getParent->getLocations ) ];
delete $field->{options} if scalar( @{$field->{options}} ) == 0 ;
}
if( $formDescription->{$field->{fieldId}} || $asset->ems->isRegistrationStaff ) {
my $drawMethod = __PACKAGE__ . '::' . $field->{customDrawMethod};
if ($asset->can( $drawMethod )) {
$field->{value} = $asset->$drawMethod($field);
delete $field->{name}; # don't want readOnly to generate a hidden field
$field->{fieldType} = "readOnly";
}
$newform->dynamicField(%$field);
} else {
# TODO see that the data gets formatted
@ -490,6 +491,17 @@ sub getEditTabs {
return ($self->SUPER::getEditTabs(), ['shop', $sku_i18n->get('shop'), 9], ['comments', $i18n->get('comments'), 9]);
}
#-------------------------------------------------------------------
=head2 getUrl
returns the URL for the submission queue page with the submisison id in the hash part
=cut
sub getUrl {
my $self = shift;
return $self->ems->getUrl('func=viewSubmissionQueue#' . $self->get('submissionId') );
}
#-------------------------------------------------------------------
@ -548,6 +560,7 @@ sub processForm {
return {_isValid => 0, errors => [ { text => 'invalid function call' } ] };
}
my $params = {_isValid=>1};
# TODO
# get description from parent
# for each active field
# get data from session->form

View file

@ -74,8 +74,7 @@ sub addSubmission {
}
$newParams->{className} = 'WebGUI::Asset::EMSSubmission';
$newParams->{submissionStatus} = 'pending';
$newParams->{submissionId} = $self->get('nextSubmissionId');
$self->update({nextSubmissionId => $newParams->{submissionId}+1 });
$newParams->{submissionId} = $self->ems->getNextSubmissionId;
$self->addChild($newParams);
}
@ -129,13 +128,6 @@ sub definition {
my $definition = shift;
my $i18n = WebGUI::International->new( $session, "Asset_EMSSubmissionForm" );
tie my %properties, 'Tie::IxHash', (
nextSubmissionId => {
tab => "properties",
fieldType => "integer",
defaultValue => 0,
label => $i18n->get("next submission id label"),
hoverHelp => $i18n->get("next submission id label help")
},
canSubmitGroupId => {
tab => "security",
fieldType => "group",
@ -214,7 +206,10 @@ returns the ems ansestor of this asset
=cut
sub ems { $_[0]->getParent }
sub ems {
my $self = shift;
$self->getParent
}
#-------------------------------------------------------------------
@ -244,7 +239,7 @@ sub www_editSubmissionForm {
}
my $params = shift || { };
my $session = $parent->session;
my $i18n = WebGUI::International->new($parent->session,'Asset_EventManagementSystem');
my $i18n = WebGUI::International->new($session,'Asset_EventManagementSystem');
my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId');
if( ! defined( $assetId ) ) {
@ -360,7 +355,7 @@ sub www_editSubmissionFormSave {
=head2 www_view
calles ems->view
calls ems->view
=cut
@ -399,13 +394,13 @@ Making private. See WebGUI::Asset::indexContent() for additonal details.
=head2 prepareView ( )
See WebGUI::Asset::prepareView() for details.
we shouldn't get here, there is nothing to view...
=cut
sub prepareView {
my $self = shift;
$self->ems->prepareView;
#$self->SUPER::prepareView();
$self->SUPER::prepareView();
#my $template = WebGUI::Asset::Template->new( $self->session, $self->get("templateId") );
#$template->prepare($self->getMetaDataAsTemplateVariables);
#$self->{_viewTemplate} = $template;
@ -421,10 +416,10 @@ when /yourAssetUrl?func=editSave is requested/posted.
=cut
sub processPropertiesFromFormPost {
my $self = shift;
$self->SUPER::processPropertiesFromFormPost;
}
#sub processPropertiesFromFormPost {
# my $self = shift;
# $self->SUPER::processPropertiesFromFormPost;
#}
#-------------------------------------------------------------------
@ -593,7 +588,7 @@ sub update {
my $self = shift;
my $properties = shift;
if( ref $properties->{formDescription} eq 'HASH' ) {
$properties->{formDescription} = JSON->new->encode($properties->{formDescription}||{});
$properties->{formDescription} = JSON->new->encode($properties->{formDescription});
}
$self->SUPER::update({%$properties, isHidden => 1});
}

View file

@ -74,7 +74,7 @@ defaults to 2 -- registered users
=head4 daysBeforeCleanup ( optional )
number fo days to leave denied/created status items in the database before deleting
defaults t0 7
defaults to 7
=head4 deleteCreatedItems ( optional )
@ -186,10 +186,10 @@ sub definition {
},
eventSubmissionMainTemplateId => {
fieldType => 'template',
defaultValue => 'ylBSKblMdKpcDSIK2t_Ang',
defaultValue => 'DoVNijm6lMDE0cYrtvEbDQ',
tab => 'display',
label => $i18n->get('event submission form template'),
hoverHelp => $i18n->get('event submission form template help'),
label => $i18n->get('event submission main template'),
hoverHelp => $i18n->get('event submission main template help'),
namespace => 'EMS/SubmissionMain',
},
eventSubmissionTemplateId => {
@ -246,7 +246,7 @@ sub definition {
submittedLocationsList => {
fieldType => 'text',
tab => 'properties',
defaultValue => $i18n->get('default submitted location list'),
defaultValue => '',
label => $i18n->get('submitted location list label'),
hoverHelp => $i18n->get('submitted location list help'),
},
@ -255,6 +255,13 @@ sub definition {
defaultValue => '',
noFormPost => 1,
},
nextSubmissionId => {
tab => "properties",
fieldType => "integer",
defaultValue => 0,
label => $i18n->get("next submission id label"),
hoverHelp => $i18n->get("next submission id label help")
},
);
push(@{$definition}, {
assetName=>$i18n->get('assetName'),
@ -416,6 +423,22 @@ sub getLocations {
#-------------------------------------------------------------------
=head2 getNextSubmissionId
get a sequence number for the submission id
=cut
sub getNextSubmissionId {
my $self = shift;
#my $submissionId = $self->get('nextSubmissionId');
my ($submissionId) = $self->session->db->read('select nextSubmissionId from EventManagementSystem where assetId = ?', [ $self->getId ] )->array;
$self->update( { nextSubmissionId => ($submissionId + 1) } );
return $submissionId;
}
#-------------------------------------------------------------------
=head2 getRegistrant ( badgeId )
Returns a hash reference containing the properties of a registrant.
@ -460,7 +483,7 @@ dav::log 'getSubmissionLocations:"', $text, '"';
}
#-------------------------------------------------------------------
sub getStatus {
sub getSubmissionStatus {
my $self = shift;
my $key = shift;
@ -668,7 +691,8 @@ sub view {
addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'),
manageBadgeGroupsUrl=> $self->getUrl('func=manageBadgeGroups'),
getBadgesUrl => $self->getUrl('func=getBadgesAsJson'),
canEdit => $self->canEdit,
isRegistrationStaff => $self->isRegistrationStaff,
canEdit => $self->canEdit,
canSubmit => $self->canSubmit,
hasSubmissions => $self->hasSubmissions,
hasSubmissionForms => $self->hasSubmissionForms,
@ -948,7 +972,7 @@ calls editSubmissionForm in WebGUI::Asset::EMSSubmissionForm
sub www_editSubmissionForm {
my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit;
return $self->session->privilege->insufficient() unless $self->isRegistrationStaff;
return WebGUI::Asset::EMSSubmissionForm->www_editSubmissionForm($self,shift);
}
@ -963,7 +987,7 @@ test and save data posted from editSubmissionForm...
sub www_editSubmissionFormSave {
my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit;
return $self->session->privilege->insufficient() unless $self->isRegistrationStaff;
my $formParams = WebGUI::Asset::EMSSubmissionForm->processForm($self);
if( $formParams->{_isValid} ) {
delete $formParams->{_isValid};
@ -1184,7 +1208,7 @@ sub www_exportEvents {
#----------------------------------------------------------------------------
=head2 www_getAllSubmissions ( session )
=head2 www_getAllSubmissions ( )
Get a page of Asset Manager data, ajax style. Returns a JSON array to be
formatted in a WebGUI submission queue data table.
@ -1199,14 +1223,14 @@ sub www_getAllSubmissions {
my $rowsPerPage = 25;
my $tableInfo = {};
return $session->privilege->insufficient unless $self->canView;
return $session->privilege->insufficient unless $self->canSubmit || $self->isRegistrationStaff;
my $orderByColumn = $form->get( 'orderByColumn' ) || $self->get("sortColumn");
my $dir = $form->get('orderByDirection') || $self->get('sortOrder');
my $orderByDirection = lc ($dir) eq "asc" ? "ASC" : "DESC";
my $whereClause ;
if(!$self->canEdit) {
if(!$self->isRegistrationStaff) {
my $userId = $session->user->userId;
$whereClause .= qq{ createdBy='$userId'};
}
@ -1255,7 +1279,7 @@ sub www_getAllSubmissions {
title => $asset->get( "title" ),
createdBy => WebGUI::User->new($session,$asset->get( "createdBy" ))->username,
creationDate => $datetime->epochToSet($asset->get( "creationDate" )),
submissionStatus => $self->getStatus($asset->get( "submissionStatus" ) || 'pending' ),
submissionStatus => $self->getSubmissionStatus($asset->get( "submissionStatus" ) || 'pending' ),
lastReplyDate => $lastReplyDate || '',
lastReplyBy => $lastReplyBy || '',
);
@ -2485,19 +2509,39 @@ sub www_viewSchedule {
sub www_viewSubmissionQueue {
my $self = shift;
return $self->session->privilege->insufficient() unless $self->canSubmit || $self->canEdit;
my $isRegistrationStaff = $self->isRegistrationStaff;
my $canSubmit = $self->canSubmit;
my $canEdit = $self->canEdit;
my $i18n = $self->i18n;
return $self->session->privilege->insufficient() unless $canSubmit || $isRegistrationStaff;
return $self->processStyle(
my $QueueTabData =
$self->processTemplate({
backUrl => $self->getUrl,
canEdit => $self->canEdit,
canSubmit => $self->canSubmit,
isRegistrationStaff => $isRegistrationStaff,
canEdit => $canEdit,
canSubmit => $canSubmit,
hasSubmissionForms => $self->hasSubmissionForms,
getSubmissionQueueDataUrl => $self->getUrl('func=getAllSubmissions'),
addSubmissionFormUrl => $self->getUrl('func=addSubmissionForm'),
editSubmissionFormUrl => $self->getUrl('func=editSubmissionForm'),
addSubmissionUrl => $self->getUrl('func=addSubmission'),
},$self->get('eventSubmissionQueueTemplateId')));
},$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'),
addSubmissionUrl => $self->getUrl('func=addSubmission'),
},$self->get('eventSubmissionMainTemplateId')));
}
1;

View file

@ -2022,6 +2022,18 @@ normal templates.|,
context => q|This is help text for the submitted location list field.|,
},
'submission queue' => {
message => q|Submission Queue|,
lastUpdated => 1147050475,
context => q|Label for the submission list tab for registration staff.|,
},
'my submissions' => {
message => q|My Submissions|,
lastUpdated => 1147050475,
context => q|Label for the submission list tab for event submitters.|,
},
# 'TODO' => {
# message => q|TODO|,
# lastUpdated => 1147050475,

View file

@ -94,7 +94,8 @@ my $ems = $node->addChild({
url => '/test-ems',
workflowIdCommit => 'pbworkflow000000000003', # Commit Content Immediately
registrationStaffGroupId => $registrars->getId,
groupIdView => $attendees->getId
groupIdView => $attendees->getId,
submittedLocationsList => join( "\n", my @submissionLocations = qw'loc1 loc2' ),
});
# I scooped this out ot WG::Asset::Wobject::EventManagementSystem
# its not pretty, but there is no other way to add a meta field
@ -118,8 +119,15 @@ my $ems = $node->addChild({
defaultValues => '',
},1,1);
my $i18n = $ems->i18n;
$versionTag->commit;
my $id1 = $ems->getNextSubmissionId;
my $id2 = $ems->getNextSubmissionId;
my $id3 = $ems->getNextSubmissionId;
my $id4 = $ems->getNextSubmissionId;
is( $id1 +3, $id4, ' test getNextSubmissionId' );
# quick test of addGroupToSubmitList
is($ems->get('eventSubmissionGroups'),'', 'event submission groups is blank');
$ems->addGroupToSubmitList('joe');
@ -131,6 +139,10 @@ is($ems->get('eventSubmissionGroups'),'joe frank', 'event submission groups stil
$ems->update({eventSubmissionGroups => ''});
is($ems->get('eventSubmissionGroups'),'', 'event submission groups is reset to blank');
is_deeply($ems->getSubmissionLocations, \@submissionLocations, 'test getSubmissionLocations' );
is_deeply( $ems->getSubmissionStatus, {
map { $_ => $i18n->get($_) } ( qw/pending feedback failed approved created denied/ )
}, 'test getSubmissionStatus' );
$versionTag = WebGUI::VersionTag->getWorking($session);
WebGUI::Test->tagsToRollback($versionTag);
@ -163,6 +175,7 @@ my $frmA = $ems->addSubmissionForm({
isa_ok( $frmA, 'WebGUI::Asset::EMSSubmissionForm' );
is( $ems->hasSubmissionForms, 1, 'ems now has forms' );
is_deeply( $frmA->getFormDescription, $formAdesc, 'form description matches' );
is( $frmA->ems->getId, $ems->getId, 'test ems access function in form' );
my $formBdesc = {
_fieldList => [ qw/title description duration mfRequiredUrl/ ],
@ -205,7 +218,7 @@ push @cleanup, sub { $sub1->delete; };
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' );
is( $sub1->ems->getId, $ems->getId, 'test ems access function in submission' );
loginUserB;
ok( $ems->canSubmit, 'UserB can submit to this ems' );
@ -228,6 +241,70 @@ ok( $ems->canSubmit, 'UserC can submit to this ems' );
ok( $frmA->canSubmit, 'UserC can submit to formA' );
ok( $frmB->canSubmit, 'UserC can submit to formB' );
loginUserA;
cmp_deeply( from_json($ems->www_getAllSubmissions), {
sort => undef,
startIndex => 1,
records => [
{
lastReplyDate => '',
submissionId => '4',
creationDate => ignore(),
createdBy => 'userA',
url => '/test-ems?func=viewSubmissionQueue#4',
submissionStatus => $i18n->get('pending'),
title => 'my favorite thing to talk about',
lastReplyBy => ''
}
],
totalRecords => '1',
recordsReturned => 25,
dir => 'DESC',
}, 'test getAllSubmissions for UserA' );
loginUserC;
cmp_deeply( from_json($ems->www_getAllSubmissions), {
sort => undef,
startIndex => 1,
records => [
],
totalRecords => '0',
recordsReturned => 25,
dir => 'DESC',
}, 'test getAllSubmissions for UserC' );
loginRgstr;
$session->request->setup_body({ orderByColumn => 'submissionId' });
cmp_deeply( from_json($ems->www_getAllSubmissions), {
sort => 'submissionId',
startIndex => 1,
records => [
{
lastReplyDate => '',
submissionId => '5',
creationDate => ignore(),
createdBy => 'userB',
url => '/test-ems?func=viewSubmissionQueue#5',
submissionStatus => $i18n->get('pending'),
title => 'why i like to be important',
lastReplyBy => ''
},
{
lastReplyDate => '',
submissionId => '4',
creationDate => ignore(),
createdBy => 'userA',
url => '/test-ems?func=viewSubmissionQueue#4',
submissionStatus => $i18n->get('pending'),
title => 'my favorite thing to talk about',
lastReplyBy => ''
},
],
totalRecords => '2',
recordsReturned => 25,
dir => 'DESC',
}, 'test getAllSubmissions for Registrar' );
# TODO fix num tests
SKIP: { skip 'create submission failed', 8 unless $isa1 && $isa2;
@ -305,10 +382,9 @@ is( $sub2, undef, 'approval created a ticket');
$versionTag->commit;
SKIP: { skip 'requires HTML::Form', 2 unless use_ok 'HTML::Form';
# this is not the greatest testm but it does run through the basic create submissionForm code.
loginAdmin;
loginRgstr;
my %settings = (
assetId => 'new',
@ -370,7 +446,6 @@ for my $input ( $form->inputs ) {
}
$session->request->setup_body( { $form->form } );
my $result = WebGUI::Asset::EMSSubmissionForm->processForm($ems);
dav::dump $result;
cmp_deeply( $result, $expected , 'test process form' );
$expected = {
'errors' => [
@ -399,7 +474,25 @@ dav::dump $result;
cmp_deeply( $result, $expected , 'test process form' );
} # end of skip HTML::Form
print $ems->www_getAllSubmissions;
# these run code to see that it runs, but do not check for correctness
$ems->www_viewSubmissionQueue;
$ems->www_addSubmission;
$ems->www_addSubmissionForm;
$ems->www_editSubmissionForm;
$ems->www_editSubmissionFormSave;
$frmA->www_editSubmissionForm;
$frmA->www_addSubmission;
$frmA->www_editSubmission;
$frmA->www_editSubmissionSave;
$frmA->processForm;
$sub1->drawLocationField;
$sub1->drawRelatedBadgeGroupsField;
$sub1->drawRelatedRibbonsField;
$sub1->drawStatusField;
$sub1->www_editSubmission;
$sub1->www_editSubmissionSave;
$sub1->processForm;
} # end of use packages skip
}; # end of eval