From 0b78c5315d3397ed1db45419d0acadcaf3b54495 Mon Sep 17 00:00:00 2001 From: Frank Dillon Date: Sun, 16 Nov 2008 18:18:17 +0000 Subject: [PATCH] Fixed a bug where formField was setting the formProcess value in certain cases even if the form hadn't been posted. This was causing the stored value of fields to be set to the default value when it shouldn't have been. --- lib/WebGUI/ProfileField.pm | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index 7126e9acd..bb56e8b36 100755 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -233,12 +233,14 @@ form. # And refactor to not require all these arguments HERE but rather in the # constructor or something... sub formField { - my $self = shift; - my $properties = $self->formProperties(shift); - my $withWrapper = shift; - my $u = shift || $self->session->user; - my $skipDefault = shift; + my $self = shift; + my $session = $self->session; + my $properties = $self->formProperties(shift); + my $withWrapper = shift; + my $u = shift || $session->user; + my $skipDefault = shift; my $assignedValue = shift; + if ($skipDefault) { $properties->{value} = undef; } @@ -248,21 +250,21 @@ sub formField { else { # start with specified (or current) user's data. previous data needed by some form types as well (file). $properties->{value} = $u->profileField($self->getId); - # use submitted data if it exists - if ($self->formProcess($u) != $self->get('dataDefault')) { + #If the fieldId is actually found in the request, try to process the form + if ($session->form->param($self->getId)) { $properties->{value} = $self->formProcess($u); } - # fall back on default + #If no value is set, go with the default value if(!defined $properties->{value}) { - $properties->{value} = WebGUI::Operation::Shared::secureEval($self->session,$properties->{dataDefault}); + $properties->{value} = WebGUI::Operation::Shared::secureEval($session,$properties->{dataDefault}); } } if ($withWrapper == 1) { - return WebGUI::Form::DynamicField->new($self->session,%{$properties})->toHtmlWithWrapper; + return WebGUI::Form::DynamicField->new($session,%{$properties})->toHtmlWithWrapper; } elsif ($withWrapper == 2) { - return WebGUI::Form::DynamicField->new($self->session,%{$properties})->getValueAsHtml; + return WebGUI::Form::DynamicField->new($session,%{$properties})->getValueAsHtml; } else { - return WebGUI::Form::DynamicField->new($self->session,%{$properties})->toHtml; + return WebGUI::Form::DynamicField->new($session,%{$properties})->toHtml; } } @@ -283,8 +285,8 @@ sub formProcess { my $self = shift; my $u = shift || $self->session->user; my $userId = $u->userId; - - my $properties = $self->formProperties({value => $u->profileField($self->getId)}); + + my $properties = $self->formProperties({value => $u->profileField($self->getId)}); my $result = $self->session->form->process( $self->getId, $self->get("fieldType"),