Fix a bug in the Story when handling images of different sizes. Add a

photoWidth property to the StoryArchive, and resize all newly uploaded pictures
to a Story.
This commit is contained in:
Colin Kuskie 2009-06-08 21:51:33 +00:00
parent 56fa667f9d
commit fcad3a112d
6 changed files with 50 additions and 4 deletions

View file

@ -640,15 +640,21 @@ sub processPropertiesFromFormPost {
};
splice @{ $photoData }, $photoIndex-1, 1, $newPhoto;
}
my $newStorage = $form->process('newPhoto', 'image');
if ($newStorage) {
my $newStorageId = $form->process('newPhoto', 'image');
if ($newStorageId) {
my $newStorage = WebGUI::Storage->get($session, $newStorageId);
my $photoName = $newStorage->getFiles->[0];
my ($width, $height) = $newStorage->getSizeInPixels($photoName);
if ($width > $self->getArchive->get('photoWidth')) {
$newStorage->resize($photoName, $self->getArchive->get('photoWidth'));
}
push @{ $photoData }, {
caption => $form->process('newImgCaption', 'text'),
alt => $form->process('newImgAlt', 'text'),
title => $form->process('newImgTitle', 'text'),
byLine => $form->process('newImgByline', 'text'),
url => $form->process('newImgUrl', 'url'),
storageId => $newStorage,
storageId => $newStorageId,
};
}
$self->setPhotoData($photoData);

View file

@ -116,6 +116,13 @@ sub definition {
namespace => 'Story',
defaultValue => '3QpYtHrq_jmAk1FNutQM5A',
},
photoWidth => {
tab => 'display',
fieldType => 'integer',
label => $i18n->get('photo width'),
hoverHelp => $i18n->get('photo width help'),
defaultValue => '300',
},
editStoryTemplateId => {
tab => 'display',
fieldType => 'template',