diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt
index ccc24fce8..4e3d80d85 100644
--- a/docs/changelog/7.x.x.txt
+++ b/docs/changelog/7.x.x.txt
@@ -3,6 +3,8 @@
for assets are processed in addRevision() instead.
- Changed update() so it can autodetect missing fields in asset tables and
log them nicely instead of crashing.
+ - Fixed a problem with the file upload control where you couldn't delete the
+ file if you have multiple attached.
7.5.20
- fixed: DataForm acknowledgement screen shows incorrect value for Date/Time fields
diff --git a/lib/WebGUI/Form/File.pm b/lib/WebGUI/Form/File.pm
index 2dccdf02b..98caa5c8c 100644
--- a/lib/WebGUI/Form/File.pm
+++ b/lib/WebGUI/Form/File.pm
@@ -137,8 +137,9 @@ sub getFilePreview {
}
$preview .= '
'
.'
'.$file.'
';
- $preview .= $i18n->get(392) . (" "x4) . WebGUI::Form::YesNo->new($self->session,{name=>$self->privateName('delete'), value=>0})->toHtml;
+ .$file.'" /> '.$file.'
';
+ $preview .= $i18n->get(392) . (" "x4) . WebGUI::Form::YesNo->new($self->session,{name=>$self->privateName('delete_'.$file), value=>0})->toHtml;
+ $preview .= '
';
}
return $preview;
}
@@ -173,17 +174,21 @@ deleting the file if it was specified.
sub getValue {
my $self = shift;
my $value = $self->get("value");
- if ($self->session->form->param($self->privateName('delete'))) {
- my $storage = WebGUI::Storage->get($self->session,$value);
- $storage->delete if defined $storage;
- return '';
- } elsif ($self->session->form->param($self->privateName('action')) eq 'keep') {
+ my $storage = WebGUI::Storage->get($self->session,$value);
+ foreach my $file (@{$storage->getFiles}) {
+ if ($self->session->form->param($self->privateName('delete_'.$file))) {
+ $storage->deleteFile($file);
+ }
+ }
+ if ($self->session->form->param($self->privateName('action')) eq 'keep') {
return $value;
- } elsif ($self->session->form->param($self->privateName('action')) eq 'upload') {
+ }
+ elsif ($self->session->form->param($self->privateName('action')) eq 'upload') {
my $storage = undef;
if ($value ne "") {
$storage = WebGUI::Storage::Image->get($self->session, $value);
- } else {
+ }
+ else {
$storage = WebGUI::Storage::Image->create($self->session);
}
$storage->addFileFromFormPost($self->get("name")."_file",1000);
@@ -191,7 +196,8 @@ sub getValue {
if (scalar(@files) < 1) {
$storage->delete;
return undef;
- } else {
+ }
+ else {
my $id = $storage->getId;
$self->set("value", $id);
return $id;
diff --git a/lib/WebGUI/Form/Image.pm b/lib/WebGUI/Form/Image.pm
index 8b27bf5d5..89d05b184 100644
--- a/lib/WebGUI/Form/Image.pm
+++ b/lib/WebGUI/Form/Image.pm
@@ -103,8 +103,9 @@ sub getFilePreview {
my $image = $storage->isImage($file) ? $storage->getThumbnailUrl($file) : $storage->getFileIconUrl($file);
$preview .= ''
.'
'.$file.'
';
- $preview .= $i18n->get(392) . " "x4 . WebGUI::Form::YesNo->new($self->session, {-name=>$self->privateName('delete'), -value=>0})->toHtml;
+ .$file.'" /> '.$file.'
';
+ $preview .= $i18n->get(392) . " "x4 . WebGUI::Form::YesNo->new($self->session, {-name=>$self->privateName('delete_'.$file), -value=>0})->toHtml;
+ $preview .= '
'
}
return $preview;
}