fix EMSSubmissionForm and all its tests
This commit is contained in:
parent
0c23ba8cd7
commit
b0da37ec15
8 changed files with 81 additions and 64 deletions
|
|
@ -19,6 +19,10 @@ use Moose;
|
|||
use WebGUI::Definition::Asset;
|
||||
use WebGUI::Asset;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Form::Combo;
|
||||
use WebGUI::Form::SelectBox;
|
||||
use WebGUI::Form::CheckList;
|
||||
|
||||
extends 'WebGUI::Asset';
|
||||
define tableName => 'EMSSubmission';
|
||||
define assetNae => ['assetName', 'Asset_EMSSubmission'];
|
||||
|
|
@ -204,17 +208,17 @@ sub drawLocationField {
|
|||
my $ems = $self->ems;
|
||||
my $options = { map { $_ => $_ } ( @{ $ems->getSubmissionLocations || [ $ems->getLocations ] } ) } ;
|
||||
if( $ems->isRegistrationStaff ) {
|
||||
return WebGUI::Form::combo($self->session, {
|
||||
return WebGUI::Form::Combo->new($self->session, {
|
||||
name => 'location',
|
||||
value => $self->get('location'),
|
||||
options => $options,
|
||||
});
|
||||
})->toHtml;
|
||||
} else {
|
||||
return WebGUI::Form::selectBox($self->session, {
|
||||
return WebGUI::Form::SelectBox->new($self->session, {
|
||||
name => 'location',
|
||||
value => $self->get('location'),
|
||||
options => $options,
|
||||
});
|
||||
})->toHtml;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -228,12 +232,12 @@ Draws the field for the relatedBadgeGroups property.
|
|||
|
||||
sub drawRelatedBadgeGroupsField {
|
||||
my ($self, $params) = @_;
|
||||
return WebGUI::Form::checkList($self->session, {
|
||||
return WebGUI::Form::CheckList->new($self->session, {
|
||||
name => $params->{name},
|
||||
value => $self->get($params->{name}),
|
||||
vertical => 1,
|
||||
options => $self->getParent->getParent->getBadgeGroups,
|
||||
});
|
||||
})->toHtml;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -250,12 +254,12 @@ sub drawRelatedRibbonsField {
|
|||
foreach my $ribbon (@{$self->getParent->getParent->getRibbons}) {
|
||||
$ribbons{$ribbon->getId} = $ribbon->getTitle;
|
||||
}
|
||||
return WebGUI::Form::checkList($self->session, {
|
||||
return WebGUI::Form::CheckList->new($self->session, {
|
||||
name => $params->{name},
|
||||
value => $self->get($params->{name}),
|
||||
vertical => 1,
|
||||
options => \%ribbons,
|
||||
});
|
||||
})->toHtml;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -271,11 +275,11 @@ sub drawStatusField {
|
|||
for my $key ( qw/pending created failed/ ) {
|
||||
delete $options->{$key} unless $currentStatus eq $key;
|
||||
}
|
||||
return WebGUI::Form::SelectBox($self->session, {
|
||||
return WebGUI::Form::SelectBox->new($self->session, {
|
||||
name => 'submissionStatus',
|
||||
value => $currentStatus,
|
||||
options => $options,
|
||||
});
|
||||
})->toHtml;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -356,23 +360,23 @@ sub www_editSubmission {
|
|||
my $newform = WebGUI::FormBuilder->new($session,action => $url);
|
||||
$newform->addField( "hidden", name => 'assetId', value => $assetId);
|
||||
my $formDescription = $parent->getFormDescription;
|
||||
my @defs = reverse @{__PACKAGE__->definition($session)};
|
||||
my @fieldNames = qw/title submissionStatus startDate duration seatsAvailable location description/;
|
||||
my $fields;
|
||||
for my $def ( @defs ) {
|
||||
my $properties = $def->{properties};
|
||||
for my $fieldName ( keys %$properties ) {
|
||||
if( defined $formDescription->{$fieldName} ) {
|
||||
$fields->{$fieldName} = { %{$properties->{$fieldName}} }; # a simple first level copy
|
||||
if( $fieldName eq 'description' ) {
|
||||
$fields->{description}{height} = 200;
|
||||
$fields->{description}{width} = 350;
|
||||
}
|
||||
$fields->{$fieldName}{fieldId} = $fieldName;
|
||||
$fields->{$fieldName}{name} = $fieldName;
|
||||
$fields->{$fieldName}{value} = $self->get($fieldName) if $self;
|
||||
}
|
||||
}
|
||||
my $class = 'WebGUI::Asset::EMSSubmission';
|
||||
foreach my $fieldName (@fieldNames) {
|
||||
my $attr = $class->meta->find_attribute_by_name( $fieldName );
|
||||
$fields->{$fieldName} = {
|
||||
fieldId => $fieldName,
|
||||
name => $fieldName,
|
||||
fieldType => $attr->fieldType,
|
||||
noFormPost => $attr->noFormPost,
|
||||
%{ $class->getFormProperties( $session, $fieldName ) },
|
||||
};
|
||||
if( $fieldName eq 'description' ) {
|
||||
$fields->{description}{height} = 200;
|
||||
$fields->{description}{width} = 350;
|
||||
}
|
||||
$fields->{$fieldName}{value} = $self->get($fieldName) if $self;
|
||||
}
|
||||
# add the meta field
|
||||
for my $metaField ( @{$parent->getParent->getEventMetaFields} ) {
|
||||
|
|
@ -397,11 +401,11 @@ sub www_editSubmission {
|
|||
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->{addHidden} = 0;
|
||||
$field->{fieldType} = "readOnly";
|
||||
}
|
||||
|
||||
$newform->addField( "dynamicField", %$field);
|
||||
$newform->addField( $field->{fieldType}, %$field);
|
||||
} else {
|
||||
my $value;
|
||||
# TODO see that the data gets formatted
|
||||
|
|
|
|||
|
|
@ -238,17 +238,16 @@ sub www_editSubmissionForm {
|
|||
$newform->addField( "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;
|
||||
}
|
||||
}
|
||||
my $class = 'WebGUI::Asset::EMSSubmission';
|
||||
foreach my $fieldName (@fieldNames) {
|
||||
my $attr = $class->meta->find_attribute_by_name( $fieldName );
|
||||
$fields->{$fieldName} = {
|
||||
fieldId => $fieldName,
|
||||
name => $fieldName,
|
||||
fieldType => $attr->fieldType,
|
||||
noFormPost => $attr->noFormPost,
|
||||
%{ $class->getFormProperties( $session, $fieldName ) },
|
||||
};
|
||||
}
|
||||
for my $metaField ( @{ $parent->getEventMetaFields } ) {
|
||||
push @fieldNames, $metaField->{fieldId};
|
||||
|
|
@ -258,21 +257,23 @@ sub www_editSubmissionForm {
|
|||
$fields->{ $metaField->{fieldId} }{hoverHelp} = $metaField->{helpText};
|
||||
}
|
||||
$newform->addField( "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->addField( "dynamicField", %fieldParams);
|
||||
}
|
||||
}
|
||||
$class = 'WebGUI::Asset::EMSSubmissionForm';
|
||||
for my $fieldName (
|
||||
qw/title menuTitle url description canSubmitGroupId daysBeforeCleanup
|
||||
deleteCreatedItems submissionDeadline pastDeadlineMessage/
|
||||
)
|
||||
{
|
||||
my $attr = $class->meta->find_attribute_by_name( $fieldName );
|
||||
next unless $attr;
|
||||
my %fieldParams = (
|
||||
fieldId => $fieldName,
|
||||
name => $fieldName,
|
||||
fieldType => $attr->fieldType,
|
||||
noFormPost => $attr->noFormPost,
|
||||
%{ $class->getFormProperties( $session, $fieldName ) },
|
||||
value => $params->{$fieldName} || $self ? $self->get($fieldName) : undef,
|
||||
);
|
||||
$newform->addField( $attr->fieldType, %fieldParams);
|
||||
}
|
||||
|
||||
my $formDescription = $params->{formDescription} || $self ? $self->getFormDescription : {};
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ sub toHtml {
|
|||
$self->headTags;
|
||||
my $session = $self->session;
|
||||
my $output = '<fieldset style="border:none;margin:0;padding:0">';
|
||||
$output .= WebGUI::Form::Hidden($session, { name => $self->privateName('isIn'), value => 1, });
|
||||
$output .= WebGUI::Form::Hidden->new($session, { name => $self->privateName('isIn'), value => 1, })->toHtml;
|
||||
my $alignment = $self->alignmentSeparator;
|
||||
|
||||
# Add the select all button
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ sub definition {
|
|||
my $definition = shift || [];
|
||||
push(@{$definition}, {
|
||||
name=>{
|
||||
defaultValue=>undef
|
||||
defaultValue=>''
|
||||
},
|
||||
value=>{
|
||||
defaultValue=>undef
|
||||
|
|
|
|||
|
|
@ -37,6 +37,18 @@ The following methods are specifically available from this class. Check the supe
|
|||
=cut
|
||||
|
||||
|
||||
sub definition {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $definition = shift || [];
|
||||
push(@{$definition}, {
|
||||
# Should we show the hidden field too?
|
||||
addHidden => {
|
||||
defaultValue => 1,
|
||||
},
|
||||
});
|
||||
return $definition;
|
||||
}
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getName ( session )
|
||||
|
|
@ -73,7 +85,7 @@ Renders the value and a hidden input type if a "name" attribute was specified.
|
|||
sub toHtml {
|
||||
my $self = shift;
|
||||
my $out = $self->getOriginalValue;
|
||||
if ($self->get('name') ne '') {
|
||||
if ($self->get('addHidden') && $self->get('name') ne '') {
|
||||
$out .= $self->toHtmlAsHidden;
|
||||
}
|
||||
return $out;
|
||||
|
|
@ -89,7 +101,7 @@ Outputs nothing unless a "name" attribute was specified.
|
|||
|
||||
sub toHtmlAsHidden {
|
||||
my $self = shift;
|
||||
if ($self->get('name') ne '') {
|
||||
if ($self->get('addHidden') && $self->get('name') ne '') {
|
||||
return $self->SUPER::toHtmlAsHidden;
|
||||
}
|
||||
return undef;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ sub addField {
|
|||
|
||||
push @{$self->fields}, $field;
|
||||
$self->addObject( $field );
|
||||
$self->{_fieldsByName}{ $field->get('name') } = $field; # TODO: Must allow multiple fields per name
|
||||
$self->{_fieldsByName}{ $field->get('name') || '' } = $field; # TODO: Must allow multiple fields per name
|
||||
return $field;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ sub toTemplateVars {
|
|||
}
|
||||
# Form field objects
|
||||
when ( $_->isa( 'WebGUI::Form::Control' ) ) {
|
||||
my $name = $obj->get('name');
|
||||
my $name = $obj->get('name') || '';
|
||||
$props = $obj->toTemplateVars;
|
||||
# Add the whole field to the vars
|
||||
$props->{ field } = $obj->toHtmlWithWrapper;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue