From 58018d5d690f462fcc78f9de878ae087588846ca Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Fri, 27 Apr 2007 17:12:50 +0000 Subject: [PATCH] More image uploading fixes. Copying/pasted code. Should probably be refactored a bit. --- docs/changelog/7.x.x.txt | 2 +- docs/gotcha.txt | 2 +- lib/WebGUI/Asset/File/Image.pm | 14 +++++++++++--- lib/WebGUI/Asset/WikiPage.pm | 16 +++++++++++----- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 50cc64b13..a484e657b 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,7 +1,7 @@ 7.3.16 - fix: The POD of Form::Image is faulty (perlDreamer Consulting, LLC) - fix: Method name clash between WebGUI::Asset::Post::Thread and WebGUI::AssetVersioning (perlDreamer Consulting, LLC) - - fix: Images in Collaboration Systems were broken in 7.3.15 + - fix: Images in various places were broken in 7.3.15 diff --git a/docs/gotcha.txt b/docs/gotcha.txt index 04f37393b..caf0708da 100644 --- a/docs/gotcha.txt +++ b/docs/gotcha.txt @@ -18,7 +18,7 @@ save you many hours of grief. In 7.3.16, the thread lock method inside Thread.pm was renamed isThreadLocked. No template variables, field names or database - columsn were changed. + columns were changed. 7.3.15 -------------------------------------------------------------------- diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index ca5f6ba31..aa47b36b3 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -208,9 +208,17 @@ sub processPropertiesFromFormPost { $self->update({parameters=>$parameters.' alt="'.$self->get("title").'"'}); } my $storage = $self->getStorageLocation; - $self->generateThumbnail($self->session->setting->get("maxImageSize")); - $storage->deleteFile($self->get("filename")); - $storage->renameFile('thumb-'.$self->get("filename"),$self->get("filename")); + my $max_size = $self->session->setting->get("maxImageSize"); + my $file = $self->get("filename"); + my ($w, $h) = $storage->getSizeInPixels($file); + if($w > $max_size || $h > $max_size) { + if($w > $h) { + $storage->resize($file, $max_size); + } + else { + $storage->resize($file, 0, $max_size); + } + } $self->generateThumbnail($self->session->form->process("thumbnailSize")); } diff --git a/lib/WebGUI/Asset/WikiPage.pm b/lib/WebGUI/Asset/WikiPage.pm index 635c3db6b..54704babb 100644 --- a/lib/WebGUI/Asset/WikiPage.pm +++ b/lib/WebGUI/Asset/WikiPage.pm @@ -252,11 +252,17 @@ sub processPropertiesFromFormPost { foreach my $file (@{$storage->getFiles}) { if ($storage->isImage($file)) { - ##Use generateThumbnail to shrink size to site's max image size - ##We should look into using the new resize method instead. - $storage->generateThumbnail($file, $self->getWiki->get("maxImageSize") || $self->session->setting->get("maxImageSize")); - $storage->deleteFile($file); - $storage->renameFile('thumb-'.$file,$file); + my ($w, $h) = $storage->getSizeInPixels($file); + my $max_size = $self->getWiki->get("maxImageSize") + || $self->session->setting->get("maxImageSize"); + if($w > $max_size || $h > $max_size) { + if($w > $h) { + $storage->resize($file, $max_size); + } + else { + $storage->resize($file, 0, $max_size); + } + } $storage->generateThumbnail($file, $self->getWiki->get("thumbnailSize")); } $size += $storage->getFileSize($file);