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

@ -6,7 +6,8 @@
- fixed: #10262: Default Inbox View Template: Mismatch in HTML for upper and lower page navigation
- fixed rfe #10474: Improve error message for template errors
- removed hardcoding of administer.js and survey.css hardcoded extras paths.
- fixed Error message when you try to send a message from the Inbox, but none of your friends allow private messaging.
- fixed: Error message when you try to send a message from the Inbox, but none of your friends allow private messaging.
- fixed: Images uploaded to a Story should all be the same width so the YUI carousel does not break.
7.7.9
- fixed #10266: Public Profile overrides Able to be friend

View file

@ -29,6 +29,7 @@ my $quiet; # this line required
my $session = start(); # this line required
addStoryPhotoWidth($session);
# upgrade functions go here
@ -44,6 +45,18 @@ finish($session); # this line required
# print "DONE!\n" unless $quiet;
#}
#----------------------------------------------------------------------------
# Describe what our function does
sub addStoryPhotoWidth {
my $session = shift;
print "\tAdd a width parameter to the StoryManager... " unless $quiet;
# and here's our code
$session->db->write(<<EOSQL);
alter table StoryArchive add column photoWidth int(11)
EOSQL
print "DONE!\n" unless $quiet;
}
# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------

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',

View file

@ -66,6 +66,7 @@ our $HELP = {
{ 'name' => 'groupToPost', },
{ 'name' => 'templateId', },
{ 'name' => 'storyTemplateId', },
{ 'name' => 'photoWidth', },
{ 'name' => 'editStoryTemplateId', },
{ 'name' => 'keywordListTemplateId', },
{ 'name' => 'archiveAfter', },

View file

@ -309,6 +309,24 @@ our $I18N = {
lastUpdated => 0,
},
'photoWidth' => {
message => q|The width that all photos uploaded into Stories for this StoryArchive will be resized to.|,
context => q|Template variable.|,
lastUpdated => 0,
},
'photo width' => {
message => q|Photo width|,
context => q|Label in the edit screen|,
lastUpdated => 0,
},
'photo width help' => {
message => q|Photos displayed by the YUI Carousel need to be similar sizes for it to render correctly. This width will be used to resize all photos. To disable this feature, set it to 0.|,
context => q|hoverhelp for photoWidth in the edit screen|,
lastUpdated => 0,
},
};
1;