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.' '.$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.' '.$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; }