diff --git a/lib/WebGUI/Asset/EMSSubmissionForm.pm b/lib/WebGUI/Asset/EMSSubmissionForm.pm index 13d94d943..b4ef6c9e3 100644 --- a/lib/WebGUI/Asset/EMSSubmissionForm.pm +++ b/lib/WebGUI/Asset/EMSSubmissionForm.pm @@ -286,6 +286,7 @@ dav::dump 'editSubmissionForm::definition:', [@defs]; $fields->{$metaField->{fieldId}} = { %$metaField }; # a simple first level copy # meta fields call it data type, we copy it to simplify later on $fields->{$metaField->{fieldId}}{fieldType} = $metaField->{dataType}; + $fields->{$metaField->{fieldId}}{hoverHelp} = $metaField->{helpText}; } $newform->hidden( name => 'fieldNames', value => join( ' ', @fieldNames ) ); @defs = reverse @{WebGUI::Asset::EMSSubmissionForm->definition($session)}; @@ -321,7 +322,7 @@ dav::dump 'editSubmissionForm::dump before generate:',$fields; errors => $params->{errors} || [], backUrl => $parent->getUrl, pageForm => $newform->print, - },$parent->get('eventSubmissionFormTemplateId'))); + },$parent->get('eventSubmissionTemplateId'))); } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 7b32ce68f..452a3247d 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -184,6 +184,14 @@ sub definition { hoverHelp => $i18n->get('print ticket template help'), namespace => 'EMS/PrintTicket', }, + eventSubmissionMainTemplateId => { + fieldType => 'template', + defaultValue => 'ylBSKblMdKpcDSIK2t_Ang', + tab => 'display', + label => $i18n->get('event submission form template'), + hoverHelp => $i18n->get('event submission form template help'), + namespace => 'EMS/SubmissionMain', + }, eventSubmissionTemplateId => { fieldType => 'template', defaultValue => '8tqyQx-LwYUHIWOlKPjJrA', @@ -200,14 +208,6 @@ sub definition { hoverHelp => $i18n->get('event submission queue template help'), namespace => 'EMS/SubmissionQueue', }, - eventSubmissionFormTemplateId => { - fieldType => 'template', - defaultValue => 'ylBSKblMdKpcDSIK2t_Ang', - tab => 'display', - label => $i18n->get('event submission form template'), - hoverHelp => $i18n->get('event submission form template help'), - namespace => 'EMS/SubmissionForm', - }, badgeInstructions => { fieldType => 'HTMLArea', defaultValue => $i18n->get('default badge instructions'), @@ -374,6 +374,7 @@ sub getEventFieldsForImport { type => $field->{dataType}, options => $field->{possibleValues}, defaultValue => $field->{defaultValues}, + helpText => $field->{defaultValues}, }); } return \@fields; @@ -434,6 +435,34 @@ sub getRibbons { return $self->getLineage(['children'],{returnObjects=>1, includeOnlyClasses=>['WebGUI::Asset::Sku::EMSRibbon']}); } +#------------------------------------------------------------------- +sub getStatus { + my $self = shift; + my $key = shift; + + unless ($self->{_status}) { + tie my %hash, "Tie::IxHash"; + my $i18n = $self->i18n; + for my $item ( + 'pending', + 'feedback', + 'denied', + 'approved', + 'created', + 'failed', + ) { + $hash{$item} = $i18n->get($item), + } + $self->{_status} = \%hash; + } + + if($key) { + return $self->{_status}{$key}; + } + + return $self->{_status}; +} + #------------------------------------------------------------------- =head2 getTickets () @@ -504,6 +533,19 @@ sub hasSubmissions { #------------------------------------------------------------------- +=head2 i18n + +returns the internationalisation object for this asset + +=cut + +sub i18n { + my $self = shift; + return $self->{_i18n} ||= WebGUI::International->new($self->session,'Asset_EventManagementSystem'); +} + +#------------------------------------------------------------------- + =head2 isRegistrationStaff ( [ user ] ) Returns a boolean indicating whether the user is a member of the registration staff. @@ -936,6 +978,7 @@ sub www_editEventMetaField { required => $self->session->form->process("required",'yesNo'), possibleValues => $self->session->form->process("possibleValues",'textarea'), defaultValues => $self->session->form->process("defaultValues",'textarea'), + helpText => $self->session->form->process("helpText",'textarea'), }; $f->readOnly( -name => 'error', @@ -992,6 +1035,12 @@ sub www_editEventMetaField { -hoverHelp => $i18n->get('488 description'), -value => $data->{defaultValues}, ); + $f->textarea( + -name => "helpText", + -label => $i18n2->get('meta field help text), + -hoverHelp => $i18n2->get('meta field help text description'), + -value => $data->{helpText}, + ); $f->submit; return $self->processStyle($f->print); } @@ -1024,6 +1073,7 @@ sub www_editEventMetaFieldSave { required => $self->session->form->process("required",'yesNo'), possibleValues => $self->session->form->process("possibleValues",'textarea'), defaultValues => $self->session->form->process("defaultValues",'textarea'), + helpText => $self->session->form->process("helpText",'textarea'), },1,1); return $self->www_manageEventMetaFields(); } @@ -1108,6 +1158,92 @@ sub www_exportEvents { return "chunked"; } +#---------------------------------------------------------------------------- + +=head2 www_getAllSubmissions ( session ) + +Get a page of Asset Manager data, ajax style. Returns a JSON array to be +formatted in a WebGUI submission queue data table. + +=cut + +sub www_getAllSubmissions { + my $self = shift; + my $session = $self->session; + my $datetime = $session->datetime; + my $form = $session->form; + my $rowsPerPage = 25; + my $tableInfo = {}; + + return $session->privilege->insufficient unless $self->canView; + + 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) { + my $userId = $session->user->userId; + $whereClause .= qq{ createdBy='$userId'}; + } + + my $rules; + $rules->{'joinClass' } = "WebGUI::Asset::EMSSubmission"; + $rules->{'whereClause' } = $whereClause; + $rules->{'includeOnlyClasses'} = ['WebGUI::Asset::EMSSubmission']; + $rules->{'orderByClause' } = $session->db->dbh->quote_identifier( $orderByColumn ) . ' ' . $orderByDirection if $orderByColumn; + + my $sql = ""; + + $sql = $self->getLineageSql(['descendants'], $rules); + +print $sql , "\n"; + my $startIndex = $form->get( 'startIndex' ) || 1; + my $rowsPerPage = $form->get( 'rowsPerPage' ) || 25; + my $currentPage = int ( $startIndex / $rowsPerPage ) + 1; + + my $p = WebGUI::Paginator->new( $session, '', $rowsPerPage, 'pn', $currentPage ); + $p->setDataByQuery($sql); + + $tableInfo->{'recordsReturned'} = $rowsPerPage; + $tableInfo->{'totalRecords' } = $p->getRowCount; + $tableInfo->{'startIndex' } = $startIndex; + $tableInfo->{'sort' } = $orderByColumn; + $tableInfo->{'dir' } = $orderByDirection; + $tableInfo->{'records' } = []; + + for my $record ( @{ $p->getPageData } ) { + my $asset = WebGUI::Asset->newByDynamicClass( $session, $record->{assetId} ); + + my $lastReplyBy = $asset->get("lastReplyBy"); + if ($lastReplyBy) { + $lastReplyBy = WebGUI::User->new($session,$lastReplyBy)->username; + } + + # Populate the required fields to fill in + my $lastReplyDate = $asset->get("lastReplyDate"); + if($lastReplyDate) { + $lastReplyDate = $datetime->epochToHuman($lastReplyDate,"%y-%m-%d @ %H:%n %p"); + } + + my %fields = ( + submissionId => $asset->get("submissionId"), + url => $asset->getUrl, + title => $asset->get( "title" ), + createdBy => WebGUI::User->new($session,$asset->get( "createdBy" ))->username, + creationDate => $datetime->epochToSet($asset->get( "creationDate" )), + status => $self->getStatus($asset->get( "submissionStatus" )), + lastReplyDate => $lastReplyDate, + lastReplyBy => $lastReplyBy, + ); + + push @{ $tableInfo->{ records } }, \%fields; + } + + $session->http->setMimeType( 'application/json' ); + return JSON->new->encode( $tableInfo ); +} + #------------------------------------------------------------------- =head2 www_getBadgesAsJson () diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index d9b160a06..ecd7909d9 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1962,6 +1962,42 @@ normal templates.|, context => q|This is the label for te main tab in the edit submissionnForm form|, }, + 'pending' => { + message => q|Pending|, + lastUpdated => 1147050475, + context => q|Label for pending status on submission.|, + }, + + 'feedback' => { + message => q|Feedback|, + lastUpdated => 1147050475, + context => q|Label for feedback requested on a submission.|, + }, + + 'denied' => { + message => q|Denied|, + lastUpdated => 1147050475, + context => q|Label for denied status on a submission.|, + }, + + 'approved' => { + message => q|Approved|, + lastUpdated => 1147050475, + context => q|Label for approved status on a submission.|, + }, + + 'created' => { + message => q|Created|, + lastUpdated => 1147050475, + context => q|Label for status indicating ticket is created for submission.|, + }, + + 'failed' => { + message => q|Failed|, + lastUpdated => 1147050475, + context => q|Label indicating ticket creation failed for submission.|, + }, + # 'TODO' => { # message => q|TODO|, # lastUpdated => 1147050475, diff --git a/t/Asset/EMSSubmissionForm.t b/t/Asset/EMSSubmissionForm.t index 5ef8aa8e4..36d5c82ab 100644 --- a/t/Asset/EMSSubmissionForm.t +++ b/t/Asset/EMSSubmissionForm.t @@ -399,8 +399,9 @@ dav::dump $result; cmp_deeply( $result, $expected , 'test process form' ); } # end of skip HTML::Form -} # end of use packages skip +print $ems->www_getAllSubmissions; +} # end of use packages skip }; # end of eval print $@ if $@;