From d7867d950793b8891df9baf492015d9db8228dd2 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sun, 1 Jun 2003 19:21:39 +0000 Subject: [PATCH] fixed a bug where the registration page didn't work if a custom profile field was of type select and was required. --- lib/WebGUI/Operation/Account.pm | 47 +++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/lib/WebGUI/Operation/Account.pm b/lib/WebGUI/Operation/Account.pm index cecd7b7b7..b03fb86fb 100644 --- a/lib/WebGUI/Operation/Account.pm +++ b/lib/WebGUI/Operation/Account.pm @@ -131,23 +131,36 @@ sub www_createAccount { $values = eval $data{dataValues}; $method = $data{dataType}; $label = eval $data{fieldLabel}; - if ($method eq "select") { - # note: this big if statement doesn't look elegant, but doing regular - # ORs caused problems with the array reference. - if ($session{form}{$data{fieldName}}) { - $default = [$session{form}{$data{fieldName}}]; - } elsif ($session{user}{$data{fieldName}}) { - $default = [$session{user}{$data{fieldName}}]; - } else { - $default = eval $data{dataDefault}; - } - $f->select($data{fieldName},$values,$label,$default); - } else { - $default = $session{form}{$data{fieldName}} - || $session{user}{$data{fieldName}} - || eval $data{dataDefault}; - $f->$method($data{fieldName},$label,$default); - } + if ($method eq "selectList") { + # note: this big if statement doesn't look elegant, but doing regular + # ORs caused problems with the array reference. + if ($session{form}{$data{fieldName}}) { + $default = [$session{form}{$data{fieldName}}]; + } elsif ($session{user}{$data{fieldName}}) { + $default = [$session{user}{$data{fieldName}}]; + } else { + $default = eval $data{dataDefault}; + } + $f->select( + -name=>$data{fieldName}, + -options=>$values, + -label=>$label, + -value=>$default + ); + } else { + if ($session{form}{$data{fieldName}}) { + $default = $session{form}{$data{fieldName}}; + } elsif (exists $session{user}{$data{fieldName}}) { + $default = $session{user}{$data{fieldName}}; + } else { + $default = eval $data{dataDefault}; + } + $f->$method( + -name=>$data{fieldName}, + -label=>$label, + -value=>$default + ); + } $previousCategory = $category; } }