From 9d025d7c28d7eb2d38a050398a422d9b4061015e Mon Sep 17 00:00:00 2001 From: JT Smith Date: Mon, 14 Feb 2005 18:08:11 +0000 Subject: [PATCH] lots of bug fixes --- docs/upgrades/upgrade_6.2.11-6.3.0.pl | 24 ++++++++------ docs/upgrades/upgrade_6.2.11-6.3.0.sql | 2 +- lib/WebGUI/Asset/File.pm | 43 +++++++++++++++++-------- lib/WebGUI/Asset/File/Image.pm | 9 ++++-- lib/WebGUI/Asset/FilePile.pm | 31 ++++++++++-------- lib/WebGUI/Asset/Post.pm | 1 + lib/WebGUI/Asset/Wobject/Folder.pm | 1 + lib/WebGUI/Storage/Image.pm | 10 +++--- www/extras/assets/filePile.gif | Bin 0 -> 2893 bytes www/extras/assets/folder.gif | Bin 2893 -> 2569 bytes www/extras/assets/small/filePile.gif | Bin 0 -> 680 bytes www/extras/assets/small/folder.gif | Bin 680 -> 1074 bytes www/extras/fileIcons/abw.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/aw.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/kwd.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/rtf.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/rtx.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/sdw.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/stw.gif | Bin 1504 -> 978 bytes www/extras/fileIcons/sxw.gif | Bin 1504 -> 978 bytes 20 files changed, 75 insertions(+), 46 deletions(-) create mode 100644 www/extras/assets/filePile.gif create mode 100644 www/extras/assets/small/filePile.gif diff --git a/docs/upgrades/upgrade_6.2.11-6.3.0.pl b/docs/upgrades/upgrade_6.2.11-6.3.0.pl index 50d7439b7..74387bb21 100644 --- a/docs/upgrades/upgrade_6.2.11-6.3.0.pl +++ b/docs/upgrades/upgrade_6.2.11-6.3.0.pl @@ -137,7 +137,7 @@ WebGUI::SQL->write("alter table EventsCalendar_event add column eventLocation te WebGUI::SQL->write("alter table EventsCalendar_event change column startDate eventStartDate bigint(20)"); WebGUI::SQL->write("alter table EventsCalendar_event change column endDate eventEndDate bigint(20)"); WebGUI::SQL->write("alter table EventsCalendar_event add column templateId varchar(22)"); -WebGUI::SQL->write("alter table EventsCalendar_event add column assetId varchar(22)"); +WebGUI::SQL->write("alter table EventsCalendar_event add column assetId varchar(22) not null"); WebGUI::SQL->write("alter table EventsCalendar_event drop primary key"); @@ -1152,7 +1152,7 @@ sub walkTree { $wobject->{startDate}, $wobject->{endDate}, $wobject->{ownerId}, $wobject->{groupIdEdit}, $page->{styleId}, $page->{printableStyleId}); } - rmtree($session{config}{uploadsPath}.'/'.$wobject->{wobjectId}); + rmtree($session{config}{uploadsPath}.$session{os}{slash}.$wobject->{wobjectId}); } elsif ($wobject->{namespace} eq "SiteMap") { print "\t\t\tConverting SiteMap ".$wobject->{wobjectId}." into Navigation\n" unless ($quiet); my ($starturl) = WebGUI::SQL->quickArray("select urlizedTitle from page @@ -1169,9 +1169,9 @@ sub walkTree { WebGUI::SQL->write("update wobject set namespace='Navigation' where assetId=".quote($wobjectId)); } elsif ($wobject->{namespace} eq "FileManager") { print "\t\t\tConverting File Manager ".$wobject->{wobjectId}." into File Folder Layout\n" unless ($quiet); - WebGUI::SQL->write("update asset set className='WebGUI::Asset::Layout' where assetId=".quote($wobjectId)); - WebGUI::SQL->write("insert into Layout (assetId,templateId) values (".quote($wobjectId).", '15')"); - WebGUI::SQL->write("update wobject set namespace='Layout' where wobjectId=".quote($wobject->{wobjectId})); + WebGUI::SQL->write("update asset set className='WebGUI::Asset::Folder' where assetId=".quote($wobjectId)); + WebGUI::SQL->write("insert into Folder (assetId,templateId) values (".quote($wobjectId).", '15')"); + WebGUI::SQL->write("update wobject set namespace='Folder' where wobjectId=".quote($wobject->{wobjectId})); print "\t\t\tMigrating attachments for File Manager ".$wobject->{wobjectId}."\n" unless ($quiet); my $sth = WebGUI::SQL->read("select * from FileManager_file where wobjectId=".quote($wobjectId)." order by sequenceNumber"); my $rank = 1; @@ -1206,7 +1206,7 @@ sub walkTree { } } $sth->finish; - rmtree($session{config}{uploadsPath}.'/'.$wobject->{wobjectId}); + rmtree($session{config}{uploadsPath}.$session{os}{slash}.$wobject->{wobjectId}); } elsif ($wobject->{namespace} eq "Product") { print "\t\t\tMigrating information for Product ".$wobject->{wobjectId}."\n" unless ($quiet); my ($newProductStoreId); @@ -1269,8 +1269,6 @@ sub walkTree { 0, 0, ".quote($master->{archiveAfter}||31536000).", ".quote($master->{postsPerPage}||10).", ".quote($namespace->{submissionsPerPage}).", ".quote($sg->groupId).", ".quote($wobject->{allowDiscussion}).")"); - #count threads, views, replies - #find last post WebGUI::SQL->write("update wobject set namespace='Collaboration' where wobjectId=".quote($wobject->{wobjectId})); print "\t\t\tMigrating submissions for USS ".$wobject->{wobjectId}."\n" unless ($quiet); my $ussId = $namespace->{USS_id}; @@ -1379,6 +1377,13 @@ sub walkTree { rating=>$post->{rating} },undef,$postId); $postRank++; + if ($submission->{image}) { + my $storageId = copyFile($submission->{image},$wobject->{wobjectId}.$session{os}{slash}.$submission->{USS_submissionId}); + copyFile('thumb-'.$submission->{image},$wobject->{wobjectId}.$session{os}{slash}.$submission->{USS_submissionId},$storageId); + } + if ($submission->{attachment}) { + my $storageId = copyFile($submission->{attachment},$wobject->{wobjectId}.$session{os}{slash}.$submission->{USS_submissionId}); + } } $posts->finish; WebGUI::SQL->setRow("Thread","assetId",{ @@ -1394,6 +1399,7 @@ sub walkTree { $oldestForumPost{id} = $oldestThreadPost{id}; } } + rmtree($session{config}{uploadsPath}.$session{os}{slash}.$wobject->{wobjectId}); WebGUI::SQL->setRow("Collaboration","assetId",{ assetId=>$wobjectId, lastPostId=>$oldestForumPost{id}, @@ -1402,8 +1408,6 @@ sub walkTree { views=>$collabViewCounter, threads=>$collabThreadCounter }); - # migrate submission attachments - # migrate submission images } elsif ($wobject->{namespace} eq "WobjectProxy") { WebGUI::SQL->write("update WobjectProxy set description=".quote($wobject->{description})." where assetId=".quote($wobjectId)); diff --git a/docs/upgrades/upgrade_6.2.11-6.3.0.sql b/docs/upgrades/upgrade_6.2.11-6.3.0.sql index 28c2f3dd2..d3e9ea40b 100644 --- a/docs/upgrades/upgrade_6.2.11-6.3.0.sql +++ b/docs/upgrades/upgrade_6.2.11-6.3.0.sql @@ -225,7 +225,7 @@ INSERT INTO template VALUES ('1','Default Page','\"> 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 ('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 \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\">\" border=\"0\" alt=\"\"> \">
\">\" border=\"0\" alt=\"\"> \">^D(\"%z %Z\",);
', 'Folder',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 \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\">\" border=\"0\" alt=\"\"> \">
\">\" border=\"0\" alt=\"\"> \">^D(\"%z %Z\",);
', 'Folder',1,1); alter table HttpProxy add column cookieJarStorageId varchar(22); diff --git a/lib/WebGUI/Asset/File.pm b/lib/WebGUI/Asset/File.pm index af701056a..11c5ec9e6 100644 --- a/lib/WebGUI/Asset/File.pm +++ b/lib/WebGUI/Asset/File.pm @@ -84,17 +84,13 @@ sub definition { return $class->SUPER::definition($definition); } -sub getBox { - my $self = shift; - my %var; - $var{"attachment.icon"} = $self->getFileIcon; - $var{"attachment.url"} = $self->getFileUrl; - $var{"attachment.name"} = $self->get("filename"); - $var{"attachment.size"} = $self->getStorageLocation->getSize; - $var{"attachment.type"} = $self->getStorageLocation->getFileExtension; - return $self->processTemplate(\%var,"PBtmpl0000000000000003"); -} +#------------------------------------------------------------------- +sub DESTROY { + my $self = shift; + $self->{_storageLocation}->DESTROY if (exists $self->{_storageLocation}); + $self->SUPER::DESTROY; +} #------------------------------------------------------------------- @@ -106,6 +102,18 @@ sub duplicate { } +#------------------------------------------------------------------- +sub getBox { + my $self = shift; + my %var; + $var{"attachment.icon"} = $self->getFileIcon; + $var{"attachment.url"} = $self->getFileUrl; + $var{"attachment.name"} = $self->get("filename"); + $var{"attachment.size"} = $self->getStorageLocation->getSize; + $var{"attachment.type"} = $self->getStorageLocation->getFileExtension; + return $self->processTemplate(\%var,"PBtmpl0000000000000003"); +} + #------------------------------------------------------------------- =head2 getEditForm () @@ -170,11 +178,17 @@ sub getName { return "File"; } + #------------------------------------------------------------------- sub getStorageLocation { my $self = shift; unless (exists $self->{_storageLocation}) { - $self->{_storageLocation} = WebGUI::Storage->get($self->get("storageId")); + if ($self->get("storageId") eq "") { + $self->{_storageLocation} = WebGUI::Storage->create; + $self->update({storageId=>$self->{_storageLocation}->getId}); + } else { + $self->{_storageLocation} = WebGUI::Storage->get($self->get("storageId")); + } } return $self->{_storageLocation}; } @@ -184,7 +198,7 @@ sub getStorageLocation { sub processPropertiesFromFormPost { my $self = shift; $self->SUPER::processPropertiesFromFormPost; - my $storage = $self->{_storageLocation} = WebGUI::Storage->create; + my $storage = $self->getStorageLocation->create; my $filename = $storage->addFileFromFormPost("file"); if (defined $filename) { my $oldVersions; @@ -203,6 +217,7 @@ sub processPropertiesFromFormPost { $self->update(\%data); $self->setSize($storage->getFileSize($filename)); $storage->setPrivileges($self->get("ownerUserId"), $self->get("groupIdView"), $self->get("groupIdEdit")); + $self->{_storageLocation} = $storage; } else { $storage->delete; $self->getStorageLocation->setPrivileges($self->get("ownerUserId"), $self->get("groupIdView"), $self->get("groupIdEdit")); @@ -221,14 +236,14 @@ sub purge { my @old = split("\n",$self->get("olderVersions")); foreach my $oldone (@old) { my ($storageId, $filename) = split("|",$oldone); - my $storage = WebGUI::Storage->get($storageId); - $storage->delete; + $self->getStorageLocation->delete; } $self->getStorageLocation->delete; return $self->SUPER::purge; } +#------------------------------------------------------------------- sub view { my $self = shift; my %var = %{$self->get}; diff --git a/lib/WebGUI/Asset/File/Image.pm b/lib/WebGUI/Asset/File/Image.pm index 37f5f61b8..0957f9576 100644 --- a/lib/WebGUI/Asset/File/Image.pm +++ b/lib/WebGUI/Asset/File/Image.pm @@ -160,7 +160,12 @@ sub getName { sub getStorageLocation { my $self = shift; unless (exists $self->{_storageLocation}) { - $self->{_storageLocation} = WebGUI::Storage::Image->get($self->get("storageId")); + if ($self->get("storageId") eq "") { + $self->{_storageLocation} = WebGUI::Storage::Image->create; + $self->update({storageId=>$self->{_storageLocation}->getId}); + } else { + $self->{_storageLocation} = WebGUI::Storage::Image->get($self->get("storageId")); + } } return $self->{_storageLocation}; } @@ -168,7 +173,7 @@ sub getStorageLocation { #------------------------------------------------------------------- sub getThumbnailUrl { my $self = shift; - return $self->getStorageLocation->getThumbnailUrl; + return $self->getStorageLocation->getThumbnailUrl($self->get("filename")); } diff --git a/lib/WebGUI/Asset/FilePile.pm b/lib/WebGUI/Asset/FilePile.pm index 1e620983d..a04ac9b76 100644 --- a/lib/WebGUI/Asset/FilePile.pm +++ b/lib/WebGUI/Asset/FilePile.pm @@ -16,11 +16,13 @@ package WebGUI::Asset::FilePile; use strict; use WebGUI::Asset; +use WebGUI::Asset::File; +use WebGUI::Asset::File::Image; use WebGUI::HTTP; use WebGUI::Icon; use WebGUI::Session; use WebGUI::SQL; -use WebGUI::Storage; +use WebGUI::Storage::Image; use WebGUI::TabForm; use WebGUI::Utility; @@ -140,16 +142,16 @@ sub edit { #------------------------------------------------------------------- sub editSave { my $class = shift; - my $parent = WebGUI::Asset->newByUrl; my $tempStorage = WebGUI::Storage->create; $tempStorage->addFileFromFormPost("file"); foreach my $filename (@{$tempStorage->getFiles}) { - my $storage = WebGUI::Storage->create; + my $storage = WebGUI::Storage::Image->create; $storage->addFileFromFilesystem($tempStorage->getPath($filename)); + $storage->setPrivileges($class->getParent->get("ownerUserId"),$class->getParent->get("groupIdView"),$class->getParent->get("groupIdEdit")); my %data; - my $class = 'WebGUI::Asset::File'; - $class = "WebGUI::Asset::File::Image" if (isIn($storage->getFileExtension($filename),qw(jpg jpeg gif png))); - foreach my $definition (@{$class->definition}) { + my $className = 'WebGUI::Asset::File'; + $className = "WebGUI::Asset::File::Image" if ($storage->isImage($filename)); + foreach my $definition (@{$className->definition}) { foreach my $property (keys %{$definition->{properties}}) { $data{$property} = WebGUI::FormProcessor::process( $property, @@ -158,17 +160,17 @@ sub editSave { ); } } - $data{className} = $class; + $data{className} = $className; $data{storageId} = $storage->getId; $data{filename} = $data{title} = $data{menuTitle} = $filename; - $data{url} = $parent->getUrl.'/'.$filename; - my $newAsset = $parent->addChild(\%data); + $data{url} = $class->getParent->getUrl.'/'.$filename; + my $newAsset = $class->getParent->addChild(\%data); $newAsset->setSize($storage->getFileSize($filename)); - $newAsset->generateThumbnail if ($class eq "WebGUI::Asset::File::Image"); + $newAsset->generateThumbnail if ($className eq "WebGUI::Asset::File::Image"); } $tempStorage->delete; - return $parent->www_manageAssets if ($session{form}{proceed} eq "manageAssets"); - return $parent->www_view; + return $class->getParent->www_manageAssets if ($session{form}{proceed} eq "manageAssets"); + return $class->getParent->www_view; } #------------------------------------------------------------------- @@ -176,9 +178,9 @@ sub getIcon { my $self = shift; my $small = shift; if ($small) { - return $session{config}{extrasURL}.'/assets/small/folder.gif'; + return $session{config}{extrasURL}.'/assets/small/filePile.gif'; } - return $session{config}{extrasURL}.'/assets/folder.gif'; + return $session{config}{extrasURL}.'/assets/filePile.gif'; } @@ -200,6 +202,7 @@ sub getUploadControl { WebGUI::Style::setScript($session{config}{extrasURL}.'/FileUploadControl.js',{type=>"text/javascript"}); my $uploadControl = '