diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 4cc2ca939..60e52e12e 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -4,6 +4,7 @@ - rfe: Asset->get should return a copy of the properties hashref - Fixed a typo in testEnvironment.pl version number for DBD::mysql - Fixed a Recurring Payments processing bug: illegal division by zero + - fix: Avatar profile field does not update immediatly when you are admin - fix: How to hose your assets (perlDreamer Consulting, LLC) - fix: Exporting fails with strange URLs. Also factored the URL to path/file translation out into a seperate method so it can be more easily maintained diff --git a/lib/WebGUI/Form/File.pm b/lib/WebGUI/Form/File.pm index 2c70d77ae..06bbea279 100644 --- a/lib/WebGUI/Form/File.pm +++ b/lib/WebGUI/Form/File.pm @@ -149,30 +149,32 @@ deleting the file if it was specified. sub getValueFromPost { my $self = shift; - my $value = $self->session->form->param($self->get("name")); + my $value = $self->get("value"); if ($self->session->form->param($self->privateName('delete'))) { my $storage = WebGUI::Storage->get($self->session,$value); - $storage->delete; + $storage->delete if defined $storage; return ''; } elsif ($self->session->form->param($self->privateName('action')) eq 'keep') { return $value; } elsif ($self->session->form->param($self->privateName('action')) eq 'upload') { my $storage = undef; - if ($self->get("value") ne "") { - $storage = WebGUI::Storage::Image->get($self->session, $self->get("value")); + if ($value ne "") { + $storage = WebGUI::Storage::Image->get($self->session, $value); } else { $storage = WebGUI::Storage::Image->create($self->session); } - $storage->addFileFromFormPost($self->get("name"),1000); + $storage->addFileFromFormPost($self->get("name")."_file",1000); my @files = @{ $storage->getFiles }; if (scalar(@files) < 1) { $storage->delete; return undef; } else { my $id = $storage->getId; + $self->set("value", $id); return $id; } } + return undef; } #------------------------------------------------------------------- @@ -205,9 +207,8 @@ sub toHtml { $uploadControl .= 'fileIcons["'.$ext.'"] = "'.$self->session->url->extras('fileIcons/'.$file).'";'."\n"; } } - $uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d"); - uploader.addRow(); - !, $self->get("name"), $i18n->get("removeLabel"), $maxFiles; + $uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d"); uploader.addRow(); ! + , $self->get("name")."_file", $i18n->get("removeLabel"), $maxFiles; $uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'upload'})->toHtml()."
"; } else { $uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->get("name"), -value => $self->get("value")})->toHtml()."
"; diff --git a/lib/WebGUI/Form/Image.pm b/lib/WebGUI/Form/Image.pm index 0e814f142..1ddf780f9 100644 --- a/lib/WebGUI/Form/Image.pm +++ b/lib/WebGUI/Form/Image.pm @@ -143,7 +143,6 @@ See WebGUI::Form::File::getValueFromPost() for details. Generates a thumbnail. sub getValueFromPost { my $self = shift; my $id = $self->SUPER::getValueFromPost(@_); - if (defined $id) { my $storage = WebGUI::Storage::Image->get($self->session, $id); if (defined $storage) { @@ -192,9 +191,8 @@ sub toHtml { $uploadControl .= 'fileIcons["'.$ext.'"] = "'.$self->session->url->extras('fileIcons/'.$file).'";'."\n"; } } - $uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d"); - uploader.addRow(); - !, $self->get("name"), $i18n->get("removeLabel"), $maxNewFiles; + $uploadControl .= sprintf q!var uploader = new FileUploadControl("%s", fileIcons, "%s","%d"); uploader.addRow(); !, + $self->get("name")."_file", $i18n->get("removeLabel"), $maxNewFiles; $uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->privateName('action'), -value => 'upload'})->toHtml()."
"; } else { $uploadControl .= WebGUI::Form::Hidden->new($self->session, {-name => $self->get("name"), -value => $self->get("value")})->toHtml()."
"; diff --git a/lib/WebGUI/ProfileField.pm b/lib/WebGUI/ProfileField.pm index eaa900010..f6e4fc624 100644 --- a/lib/WebGUI/ProfileField.pm +++ b/lib/WebGUI/ProfileField.pm @@ -175,13 +175,21 @@ sub formField { my $skipDefault = shift; my $default; if ($skipDefault) { - } elsif (defined $self->session->form->process($properties->{name})) { + } + # display form version in case there is an error on submit, so they don't have to retype + elsif (defined $self->session->form->process($properties->{name})) { $default = $self->session->form->process($properties->{name}); - } elsif (defined $u && defined $u->profileField($properties->{name})) { + } + # get it from the user profile if we already have a user object + elsif (defined $u && defined $u->profileField($properties->{name})) { $default = $u->profileField($properties->{name}); - } elsif (!defined $u && defined $self->session->user->profileField($properties->{name})) { + } + # get it from the user profile if we don't have the user object + elsif (!defined $u && defined $self->session->user->profileField($properties->{name})) { $default = $self->session->user->profileField($properties->{name}); - } else { + } + # get it from the defaults if necessary + else { $default = WebGUI::Operation::Shared::secureEval($self->session,$properties->{dataDefault}); } $properties->{value} = $default;