diff --git a/lib/WebGUI/FormBuilder.pm b/lib/WebGUI/FormBuilder.pm index 3a517e237..9ff9b17ee 100644 --- a/lib/WebGUI/FormBuilder.pm +++ b/lib/WebGUI/FormBuilder.pm @@ -92,6 +92,41 @@ Get or set the enctype property / HTML attribute. #---------------------------------------------------------------------------- +=head2 getFooter ( ) + +Get the footer for this form. + +=cut + +sub getFooter { + my ( $self ) = @_; + + my $html = ''; + + return $html; +} + +#---------------------------------------------------------------------------- + +=head2 getHeader ( ) + +Get the header for this form. + +=cut + +sub getHeader { + my ( $self ) = @_; + + my @attrs = qw{ action method name enctype }; + my $attrs = join " ", map { qq{$_="} . $self->$_ . qq{"} } grep { $self->$_ } @attrs; + + my $html = sprintf '
', $attrs; + + return $html; +} + +#---------------------------------------------------------------------------- + =head2 method ( [ newMethod ] ) Get or set the method property / HTML attribute. @@ -125,15 +160,10 @@ Return the HTML for the form sub toHtml { my ( $self ) = @_; - my @attrs = qw{ action method name enctype }; - my $attrs = join " ", map { qq{$_="} . $self->$_ . qq{"} } grep { $self->$_ } @attrs; - - my $html = sprintf '', $attrs; - + my $html = $self->getHeader; # Add individual objects $html .= join "", map { $_->toHtml } @{$self->objects}; - - $html .= '
'; + $html .= $self->getFooter; return $html; } @@ -152,10 +182,11 @@ sub toTemplateVars { $prefix ||= "form"; $var ||= {}; - # TODO # $prefix_header + $var->{ "${prefix}_header" } = $self->getHeader; # $prefix_footer - # $prefix_field_loop + $var->{ "${prefix}_footer" } = $self->getFooter; + # $prefix_fieldloop # name -- for comparisons # field # label -- includes hoverhelp @@ -164,30 +195,72 @@ sub toTemplateVars { # subtext # hoverhelp -- The text. For use with label_nohover # $prefix_field_$fieldName - # $prefix_label_$fieldName - # $prefix_fieldset_loop + if ( @{$self->fields} ) { + my $fieldLoop = []; + $var->{ "${prefix}_fieldloop" } = $fieldLoop; + for my $field ( @{$self->fields} ) { + my $name = $field->get('name'); + my $props = { + name => $name, + field => $field->toHtml, + label => $field->getLabel, + label_nohover => $field->get('label'), + pretext => $field->get('pretext'), + subtext => $field->get('subtext'), + hoverhelp => $field->get('hoverhelp'), + }; + for my $key ( keys %{$props} ) { + $var->{ "${prefix}_field_${name}_${key}" } = $props->{$key}; + } + push @{$fieldLoop}, $props; + } + } + # $prefix_fieldsetloop # name # legend # label -- same as legend - # $prefix_field_loop + # fieldloop # ... - # $prefix_fieldset_loop + # fieldsetloop # ... - # $prefix_tab_loop + # tabloop # ... # $prefix_fieldset_$fieldsetName - # ... - # $prefix_tab_loop + if ( @{$self->fieldsets} ) { + my $fieldsetLoop = []; + $var->{ "${prefix}_fieldsetLoop" } = $fieldsetLoop; + for my $fieldset ( @{$self->fieldsets} ) { + my $name = $fieldset->name; + my $props = $fieldset->toTemplateVars; + for my $key ( keys %{$props} ) { + $var->{ "${prefix}_fieldset_${name}_${key}" } = $props->{key}; + } + push @{$fieldsetLoop}, $props; + } + } + # $prefix_tabloop # name # label - # $prefix_field_loop + # fieldloop # ... - # $prefix_fieldset_loop + # fieldsetloop # ... - # $prefix_tab_loop + # tabloop # ... # $prefix_tab_$tabName - # ... + if ( @{$self->tabs} ) { + my $tabLoop = []; + $var->{ "${prefix}_tabLoop" } = $tabLoop; + for my $tab ( @{$self->tabs} ) { + my $name = $tab->name; + my $props = $tab->toTemplateVars; + for my $key ( keys %{$props} ) { + $var->{ "${prefix}_tab_${name}_${key}" } = $props->{key}; + } + push @{$tabLoop}, $props; + } + } + return $var; } diff --git a/lib/WebGUI/FormBuilder/Fieldset.pm b/lib/WebGUI/FormBuilder/Fieldset.pm index 37190ec7c..8a1211321 100644 --- a/lib/WebGUI/FormBuilder/Fieldset.pm +++ b/lib/WebGUI/FormBuilder/Fieldset.pm @@ -66,6 +66,16 @@ sub new { return $class->SUPER::new( %properties ); } +sub getFooter { + my ( $self ) = @_; + return ''; +} + +sub getHeader { + my ( $self ) = @_; + return '
' . $self->label . ''; +} + #---------------------------------------------------------------------------- =head2 label ( newLabel ) @@ -114,11 +124,21 @@ Returns the HTML to render the fieldset. sub toHtml { my ( $self ) = @_; - my $html = '
' . $self->label . ''; + my $html = $self->getHeader; $html .= join "", map { $_->toHtml } @{$self->objects}; - $html .= '
'; + $html .= $self->getFooter; return $html; } +#---------------------------------------------------------------------------- + +=head2 toTemplateVars ( ) + +=cut + +sub toTemplateVars { + +} + 1;