From 72667d0bd1b3aa963216d0ad2da63151f1c8cbee Mon Sep 17 00:00:00 2001 From: Doug Bell Date: Tue, 17 May 2011 17:30:49 -0500 Subject: [PATCH] add process() sub for FormBuilder --- lib/WebGUI/FormBuilder/Role/HasObjects.pm | 31 +++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/WebGUI/FormBuilder/Role/HasObjects.pm b/lib/WebGUI/FormBuilder/Role/HasObjects.pm index 5fcf7afd3..14be2ad48 100644 --- a/lib/WebGUI/FormBuilder/Role/HasObjects.pm +++ b/lib/WebGUI/FormBuilder/Role/HasObjects.pm @@ -80,6 +80,37 @@ sub addObjectAt { return $object; } +=head2 process ( ) + +Process the form and return a hashref of values. + +=cut + +sub process { + my ( $self ) = @_; + my $values = {}; + for my $obj ( @{$self->objects} ) { + if ( $obj->isa( 'WebGUI::Form::Control' ) ) { + $values->{ $obj->get('name') } = $obj->getValue; + } + elsif ( $obj->does( 'WebGUI::FormBuilder::Role::HasObjects' ) ) { + my $merge = $obj->process; + for my $key ( keys %$merge ) { + if ( $values->{ $key } ) { + if ( !ref $values->{ $key } ) { + $values->{ $key } = [ $values->{ $key } ]; + } + push @{ $values->{ $key } }, $merge->{ $key }; + } + else { + $values->{ $key } = $merge->{ $key }; + } + } + } + } + return $values; +} + =head2 toTemplateVars ( prefix, var ) Get all the objects as a set of template vars with the given prefix. $var is