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;