From 2a6e50b478db215378ea39c151e92501f1856185 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 11 May 2010 22:13:25 -0700 Subject: [PATCH] Make this code readable. --- lib/WebGUI/Asset/EMSSubmissionForm.pm | 263 ++++++++++++++------------ 1 file changed, 143 insertions(+), 120 deletions(-) diff --git a/lib/WebGUI/Asset/EMSSubmissionForm.pm b/lib/WebGUI/Asset/EMSSubmissionForm.pm index b65f48b37..89c396508 100644 --- a/lib/WebGUI/Asset/EMSSubmissionForm.pm +++ b/lib/WebGUI/Asset/EMSSubmissionForm.pm @@ -172,131 +172,154 @@ optional set of possibly incorrect submission form params =cut sub www_editSubmissionForm { - my $this = shift; - my $self; - my $parent; - if( $this eq __PACKAGE__ ) { # called as constructor or menu - $parent = shift; - } else { - $self = $this; - $parent = $self->getParent; - } - my $params = shift || { }; - my $session = $parent->session; - my $i18n = WebGUI::International->new($session,'Asset_EventManagementSystem'); - my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId'); + my $this = shift; + my $self; + my $parent; + if ( $this eq __PACKAGE__ ) { # called as constructor or menu + $parent = shift; + } + else { + $self = $this; + $parent = $self->getParent; + } + my $params = shift || {}; + my $session = $parent->session; + my $i18n = WebGUI::International->new( $session, 'Asset_EventManagementSystem' ); + my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId'); - if( ! defined( $assetId ) ) { - my $res = $parent->getLineage(['children'],{ returnObjects => 1, - includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'], - } ); - if( scalar(@$res) == 1 ) { - $self = $res->[0]; - $assetId = $self->getId; - } else { - my $makeAnchorList =sub{ my $u=shift; my $n=shift; my $d=shift; - return qq{
  • $n
  • } } ; - my $listOfLinks = join '', ( map { - $makeAnchorList->( - $_->getQueueUrl, - $_->get('title'), - WebGUI::HTML::filter($_->get('description'),'all') - ) - } ( @$res ) ); - my $title = $i18n->get('select form to edit') ; - my $content = '

    ' . $title . '

    ' ; - if( $params->{asHashRef} ) { - return { text => $content, title => $title, } ; - } elsif( $session->form->get('asJson') ) { - $session->http->setMimeType( 'application/json' ); - return JSON->new->encode( { text => $content, title => $title, id => 'list' . rand } ); - } else { - $session->http->setMimeType( 'text/html' ); - return $parent->ems->processStyle( $content ); - } - } - } elsif( $assetId ne 'new' ) { - $self ||= WebGUI::Asset->newById($session, $assetId); - if (!defined($self)) { - $session->errorHandler->error(__PACKAGE__ . " - failed to instanciate asset with assetId $assetId"); - } + if ( !defined($assetId) ) { + my $res = $parent->getLineage( + ['children'], { + returnObjects => 1, + includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'], + } + ); + if ( scalar(@$res) == 1 ) { + $self = $res->[0]; + $assetId = $self->getId; } - my $asset = $self || $parent; - my $url = $asset->getUrl('func=editSubmissionFormSave'); - my $newform = WebGUI::HTMLForm->new( $session, action => $url ); - $newform->hidden(name => 'assetId', value => $assetId); - my @fieldNames = qw/title description startDate duration seatsAvailable location/; - my $fields; - my @defs = reverse @{WebGUI::Asset::EMSSubmission->definition($session)}; - for my $def ( @defs ) { - foreach my $fieldName ( @fieldNames ) { - my $properties = $def->{properties}; - if( defined $properties->{$fieldName} ) { - $fields->{$fieldName} = { %{$properties->{$fieldName}} }; # a simple first level copy - # field definitions don't contain their own name, we will need it later on - $fields->{$fieldName}{fieldId} = $fieldName; - }; - } - } - for my $metaField ( @{$parent->getEventMetaFields} ) { - push @fieldNames, $metaField->{fieldId}; - $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)}; - for my $def ( @defs ) { - my $properties = $def->{properties}; - for my $fieldName ( qw/title menuTitle url description canSubmitGroupId daysBeforeCleanup - deleteCreatedItems submissionDeadline pastDeadlineMessage/ ) { - if( defined $properties->{$fieldName} ) { - my %fieldParams = %{$properties->{$fieldName}}; - $fieldParams{name} = $fieldName; - $fieldParams{value} = $params->{$fieldName} || $self ? $self->get($fieldName) : undef ; - $newform->dynamicField(%fieldParams); - } - } + else { + my $makeAnchorList = sub { + my $u = shift; + my $n = shift; + my $d = shift; + return qq{
  • $n
  • }; + }; + my $listOfLinks = join '', ( + map { + $makeAnchorList->( + $_->getQueueUrl, $_->get('title'), WebGUI::HTML::filter( $_->get('description'), 'all' ) + ) + } (@$res) + ); + my $title = $i18n->get('select form to edit'); + my $content = '

    ' . $title . '

    '; + if ( $params->{asHashRef} ) { + return { text => $content, title => $title, }; + } + elsif ( $session->form->get('asJson') ) { + $session->http->setMimeType('application/json'); + return JSON->new->encode( { text => $content, title => $title, id => 'list' . rand } ); + } + else { + $session->http->setMimeType('text/html'); + return $parent->ems->processStyle($content); + } + } ## end else [ if ( scalar(@$res) == ...)] + } ## end if ( !defined($assetId...)) + elsif ( $assetId ne 'new' ) { + $self ||= WebGUI::Asset->newById( $session, $assetId ); + if ( !defined($self) ) { + $session->errorHandler->error( __PACKAGE__ . " - failed to instanciate asset with assetId $assetId" ); } + } + my $asset = $self || $parent; + my $url = $asset->getUrl('func=editSubmissionFormSave'); + my $newform = WebGUI::HTMLForm->new( $session, action => $url ); + $newform->hidden( name => 'assetId', value => $assetId ); + my @fieldNames = qw/title description startDate duration seatsAvailable location/; + my $fields; + my @defs = reverse @{ WebGUI::Asset::EMSSubmission->definition($session) }; - my $formDescription = $params->{formDescription} || $self ? $self->getFormDescription : { }; - for my $fieldId ( @fieldNames ) { - next if $fieldId eq 'submissionStatus'; - my $field = $fields->{$fieldId}; - $newform->yesNo( - label => $field->{label}, - name => $field->{fieldId} . '_yesNo', - defaultValue => 0, - value => $formDescription->{$field->{fieldId}}, - ); - } - $newform->submit; - my $title = $assetId eq 'new' ? $i18n->get('new form') || 'new' : $asset->get('title'); - if( $params->{asHashRef} ) { - ; # not setting mimie type - } elsif( $session->form->get('asJson') ) { - $session->http->setMimeType( 'application/json' ); - } else { - $session->http->setMimeType( 'text/html' ); - } - my $content = $asset->processTemplate({ - errors => $params->{errors} || [], - isDynamic => $session->form->get('asJson') || 0, - backUrl => $parent->getUrl, - pageTitle => $title, - pageForm => $newform->print, - },$parent->get('eventSubmissionTemplateId')); - WebGUI::Macro::process( $session, \$content ); - if( $params->{asHashRef} ) { - return { text => $content, title => $title }; - } elsif( $session->form->get('asJson') ) { - return JSON->new->encode( { text => $content, title => $title, id => $assetId ne 'new' ? $assetId : 'new' . rand } ); - } else { - return $asset->ems->processStyle( $content ); - } + for my $def (@defs) { + foreach my $fieldName (@fieldNames) { + my $properties = $def->{properties}; + if ( defined $properties->{$fieldName} ) { + $fields->{$fieldName} = { %{ $properties->{$fieldName} } }; # a simple first level copy + # field definitions don't contain their own name, we will need it later on + $fields->{$fieldName}{fieldId} = $fieldName; + } + } + } + for my $metaField ( @{ $parent->getEventMetaFields } ) { + push @fieldNames, $metaField->{fieldId}; + $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) }; + for my $def (@defs) { + my $properties = $def->{properties}; + for my $fieldName ( + qw/title menuTitle url description canSubmitGroupId daysBeforeCleanup + deleteCreatedItems submissionDeadline pastDeadlineMessage/ + ) + { + if ( defined $properties->{$fieldName} ) { + my %fieldParams = %{ $properties->{$fieldName} }; + $fieldParams{name} = $fieldName; + $fieldParams{value} = $params->{$fieldName} || $self ? $self->get($fieldName) : undef; + $newform->dynamicField(%fieldParams); + } + } + } -} + my $formDescription = $params->{formDescription} || $self ? $self->getFormDescription : {}; + for my $fieldId (@fieldNames) { + next if $fieldId eq 'submissionStatus'; + my $field = $fields->{$fieldId}; + $newform->yesNo( + label => $field->{label}, + name => $field->{fieldId} . '_yesNo', + defaultValue => 0, + value => $formDescription->{ $field->{fieldId} }, + ); + } + $newform->submit; + my $title = $assetId eq 'new' ? $i18n->get('new form') || 'new' : $asset->get('title'); + if ( $params->{asHashRef} ) { + ; # not setting mimie type + } + elsif ( $session->form->get('asJson') ) { + $session->http->setMimeType('application/json'); + } + else { + $session->http->setMimeType('text/html'); + } + my $content = $asset->processTemplate( { + errors => $params->{errors} || [], + isDynamic => $session->form->get('asJson') || 0, + backUrl => $parent->getUrl, + pageTitle => $title, + pageForm => $newform->print, + }, + $parent->get('eventSubmissionTemplateId') + ); + WebGUI::Macro::process( $session, \$content ); + if ( $params->{asHashRef} ) { + return { text => $content, title => $title }; + } + elsif ( $session->form->get('asJson') ) { + return JSON->new->encode( + { text => $content, title => $title, id => $assetId ne 'new' ? $assetId : 'new' . rand } ); + } + else { + return $asset->ems->processStyle($content); + } + +} ## end sub www_editSubmissionForm #-------------------------------------------------------------------