From 856ee6fd180871edd463df30e953ca9b6a0d3c54 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 25 Dec 2004 18:13:38 +0000 Subject: [PATCH] fixing the image asset --- docs/upgrades/upgrade_6.2.9-6.3.0.sql | 8 ++-- lib/WebGUI.pm | 11 +++-- lib/WebGUI/Asset.pm | 14 ++++-- lib/WebGUI/Asset/File/Image.pm | 66 ++++++++++++++++++--------- lib/WebGUI/Storage.pm | 2 +- 5 files changed, 66 insertions(+), 35 deletions(-) diff --git a/docs/upgrades/upgrade_6.2.9-6.3.0.sql b/docs/upgrades/upgrade_6.2.9-6.3.0.sql index 95858b4a1..6f952a0bd 100644 --- a/docs/upgrades/upgrade_6.2.9-6.3.0.sql +++ b/docs/upgrades/upgrade_6.2.9-6.3.0.sql @@ -179,7 +179,8 @@ INSERT INTO template VALUES ('1','Default payment gateway selection template','< create table ImageAsset ( assetId varchar(22) not null primary key, - thumbnailSize int not null default 50 + thumbnailSize int not null default 50, + parameters text ); INSERT INTO template VALUES ('1','Admin Console','^StyleSheet(^Extras;/adminConsole/adminConsole.css);\r\n^JavaScript(^Extras;/adminConsole/adminConsole.js);\r\n\r\n
\r\n \r\n \" target=\"_blank\">\"?\"\r\n \r\n
\r\n
\r\n \" border=\"0\" title=\"\" alt=\"\" />\r\n
\r\n
\r\n\"*\"\r\n
\r\n
\r\n \" border=\"0\" title=\"\" alt=\"\" />\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n  \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n  \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \">
\r\n
\r\n
\r\n
\r\n
\r\n ^AdminToggle;
\r\n ^LoginToggle;
\r\n
\r\n
\r\n\r\n','AdminConsole',1,1); @@ -198,7 +199,8 @@ INSERT INTO template VALUES ('7','Side By Side','\"> INSERT INTO template VALUES ('6','Right Column','\">\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n
 
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n\r\n\r\n \r\n \">\r\n \r\n \r\n \r\n\r\n\r\n \r\n
_div\" class=\"dragable\"> \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n \r\n\r\n\r\n\r\n \r\n \">\r\n \r\n \r\n \r\n\r\n\r\n \r\n
_div\" class=\"dragable\"> \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
 
\r\n\r\n\r\n \r\n
 
\r\n \r\n
\r\n ','page',1,1); INSERT INTO template VALUES ('1','Default Page','\">\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n \r\n\r\n\r\n\r\n \r\n \">\r\n \r\n \r\n \r\n\r\n\r\n \r\n
_div\" class=\"dragable\"> \r\n \r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n
 
\r\n \r\n
\r\n ','page',1,1); -INSERT INTO template VALUES ('1','File','\r\n

\r\n
\r\n\">\" alt=\"\" border=\"0\" />','FileAsset',1,1); +INSERT INTO template VALUES ('1','File','\r\n

\r\n
\r\n\">\" alt=\"\" border=\"0\" />','FileAsset',1,1); +INSERT INTO template VALUES ('2','Image','\r\n

\r\n
\r\n\" />','ImageAsset',1,1); -INSERT INTO template VALUES ('2vyWxxtft_ut0sfoyJm4Hg','File Folder','\">\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
\r\n \">/assets/folder.gif\" border=\"0\" alt=\"Folder\" />
\r\n
\r\n
\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
 
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
 
\r\n','page',1,1); +INSERT INTO template VALUES ('15','File Folder','\">\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n

\r\n
\r\n\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
\r\n \">/assets/folder.gif\" border=\"0\" alt=\"Folder\" />
\r\n
\r\n
\r\n\r\n\r\n
 
\r\n
\r\n\r\n\r\n
 
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
 
\r\n','page',1,1); diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index a554f38be..2cd9f9e37 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -70,11 +70,14 @@ sub page { $method = $session{form}{func}; } $method = "www_".$method; - $output = $asset->$method(); - if ($output eq "" && $method ne "view") { - $output = $asset->www_view; + $output = eval{$asset->$method()}; + if ($@) { + WebGUI::ErrorHandler::fatalError("Couldn't call method ".$method." on asset for ".$asset->get("url")." (".$asset->getId."). Root cause: ".$@); + } else { + if ($output eq "" && $method ne "view") { + $output = $asset->www_view; + } } - WebGUI::ErrorHandler::fatalError("Couldn't call method ".$method." on asset for ".$asset->get("url")." (".$asset->getId."). Root cause: ".$!) if ($!); } WebGUI::Affiliate::grabReferral(); # process affilliate tracking request if (WebGUI::HTTP::isRedirect() && !$useExistingSession) { diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index c4c42b3d9..22df8f426 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -766,11 +766,15 @@ sub update { sub www_add { my $self = shift; - my %properties = %{$self->get}; - delete $properties{title}; - delete $properties{menuTitle}; - delete $properties{url}; - delete $properties{description}; + my %properties = ( + groupIdView => $self->get("groupIdView"), + groupIdEdit => $self->get("groupIdEdit"), + ownerId => $self->get("ownerId"), + encryptPage => $self->get("encryptPage"), + hideFromNavigation => $self->get("hideFromNavigation"), + startDate => $self->get("startDate"), + endDate => $self->get("endDate") + ); my $newAsset = WebGUI::Asset->newByDynamicClass("new",$session{form}{class},\%properties); return $newAsset->www_edit(); } diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 3884f8823..49a71edb4 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -19,6 +19,7 @@ use WebGUI::Asset::File; use WebGUI::HTTP; use WebGUI::Session; use WebGUI::Storage; +use WebGUI::Utility; # do a check to see if they've installed Image::Magick my $hasImageMagick = 1; @@ -70,7 +71,11 @@ sub definition { thumbnailSize=>{ fieldType=>'integer', defaultValue=>$session{setting}{thumbnailSize} - } + }, + parameters=>{ + fieldType=>'textarea', + defaultValue=>'border="0"' + } } }); return $class->SUPER::definition($definition); @@ -96,12 +101,12 @@ sub generateThumbnail { if (defined $thumbnailSize) { $self->update({thumbnailSize=>$thumbnailSize}); } - if ($self->getValue("filename") && $hasImageMagick) { - my $storage = WebGUI::Storage->new($self->get("storageId")); + if (defined $self->get("filename") && $hasImageMagick) { + my $storage = WebGUI::Storage->get($self->get("storageId")); my $image = Image::Magick->new; - my $error = $image->Read($storage->getPath($storage->get("filename"))); + my $error = $image->Read($storage->getPath($self->get("filename"))); if ($error) { - $self->_addError("Couldn't read image for thumnail creation: ".$error); + WebGUI::ErrorHandler::warn("Couldn't read image for thumbnail creation: ".$error); return 0; } my ($x, $y) = $image->Get('width','height'); @@ -116,12 +121,12 @@ sub generateThumbnail { $error = $image->Write($storage->getPath.$session{os}{slash}.'thumb-'.$self->get("filename")); } if ($error) { - $self->_addError("Couldn't create thumbnail: ".$error); + WebGUI::ErrorHandler::warn("Couldn't create thumbnail: ".$error); return 0; } return 1; } - $self->_addError("Can't generate a thumbnail when you haven't uploaded a file."); + WebGUI::ErrorHandler::warn("Can't generate a thumbnail when you haven't uploaded a file."); return 0; # couldn't generate thumbnail } @@ -142,11 +147,16 @@ sub getEditForm { -label=>"Thumbnail Size", -value=>$self->getValue("thumbnailSize") ); + $tabform->getTab("properties")->textarea( + -name=>"parameters", + -label=>"Parameters", + -value=>$self->getValue("parameters") + ); if ($self->get("filename") ne "") { - my $storage = WebGUI::Storage->new($self->get("storageId")); + my $storage = WebGUI::Storage->get($self->get("storageId")); $tabform->getTab("properties")->readOnly( -label=>"Thumbnail", - -value=>'thumbnail' + -value=>'get("filename")).'" alt="thumbnail" />' ); } return $tabform; @@ -174,22 +184,34 @@ sub getName { return "Image"; } - -#------------------------------------------------------------------- - -=head2 www_editSave - -Gathers data from www_edit and persists it. - -=cut - -sub www_editSave { +sub processPropertiesFromFormPost { my $self = shift; - $self->SUPER::www_editSave(); + $self->SUPER::processPropertiesFromFormPost; + my $parameters = $self->get("parameters"); + unless ($parameters =~ /alt\=/) { + $self->update({parameters=>$parameters.' alt="'.$self->get("title").'"'}); + } $self->generateThumbnail; - return ""; } +sub view { + my $self = shift; + my $storage = WebGUI::Storage->get($self->get("storageId")); + my $toolbar = deleteIcon('func=delete',$self->get("url"),WebGUI::International::get(43)) + .editIcon('func=edit',$self->get("url")) + .moveUpIcon('func=promote',$self->get("url")) + .moveDownIcon('func=demote',$self->get("url")) + .cutIcon('func=cut',$self->get("url")) + .copyIcon('func=copy',$self->get("url")); + my %var = %{$self->get}; + $var{controls} = $toolbar; + $var{fileUrl} = $storage->getUrl($self->get("filename")); + $var{fileIcon} = $storage->getFileIconUrl($self->get("filename")); + $var{thumbnail} = $storage->getUrl("thumb-".$self->get("filename")); + return WebGUI::Template::process("1","ImageAsset",\%var); +} + + #------------------------------------------------------------------- @@ -204,7 +226,7 @@ sub www_view { if ($session{var}{adminOn}) { return $self->www_edit; } - my $storage = WebGUI::Storage->new($self->get("storageId")); + my $storage = WebGUI::Storage->get($self->get("storageId")); WebGUI::HTTP::setRedirect($storage->getUrl($self->get("filename"))); return ""; } diff --git a/lib/WebGUI/Storage.pm b/lib/WebGUI/Storage.pm index 69de1d34a..a07b27fd6 100644 --- a/lib/WebGUI/Storage.pm +++ b/lib/WebGUI/Storage.pm @@ -352,7 +352,7 @@ sub get { my $class = shift; my $id = shift; $id =~ m/^(.{2})(.{2})/; - bless {_id => $id, _part1 => $1, _part2 => $2}, $class; + bless {_id => $id, _part1 => $1, _part2 => $2}, ref($class)||$class; } #-------------------------------------------------------------------