added Image::ExifTool to WebGUI. fixed upgrade script properlike
This commit is contained in:
parent
7e12c6c2f0
commit
673faf9be6
11 changed files with 283 additions and 268 deletions
|
|
@ -1,237 +0,0 @@
|
||||||
#-------------------------------------------------------------------
|
|
||||||
# WebGUI is Copyright 2001-2006 Plain Black Corporation.
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
# Please read the legal notices (docs/legal.txt) and the license
|
|
||||||
# (docs/license.txt) that came with this distribution before using
|
|
||||||
# this software.
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
# http://www.plainblack.com info@plainblack.com
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
|
|
||||||
use lib "../../lib";
|
|
||||||
use strict;
|
|
||||||
use Getopt::Long;
|
|
||||||
use WebGUI::Session;
|
|
||||||
|
|
||||||
|
|
||||||
my $toVersion = "photogallery"; # make this match what version you're going to
|
|
||||||
my $quiet; # this line required
|
|
||||||
|
|
||||||
|
|
||||||
my $session = start(); # this line required
|
|
||||||
|
|
||||||
# upgrade functions go here
|
|
||||||
installGalleryAsset($session);
|
|
||||||
installGalleryAlbumAsset($session);
|
|
||||||
installPhotoAsset($session);
|
|
||||||
|
|
||||||
finish($session); # this line required
|
|
||||||
|
|
||||||
|
|
||||||
##-------------------------------------------------
|
|
||||||
#sub exampleFunction {
|
|
||||||
# my $session = shift;
|
|
||||||
# print "\tWe're doing some stuff here that you should know about.\n" unless ($quiet);
|
|
||||||
# # and here's our code
|
|
||||||
#}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# Install the Gallery asset
|
|
||||||
sub installGalleryAsset {
|
|
||||||
my $session = shift;
|
|
||||||
print "\tInstalling Gallery asset..." unless $quiet;
|
|
||||||
|
|
||||||
$session->db->write(<<'ENDSQL');
|
|
||||||
CREATE TABLE IF NOT EXISTS Gallery (
|
|
||||||
assetId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
revisionDate BIGINT NOT NULL,
|
|
||||||
groupIdAddComment VARCHAR(22) BINARY,
|
|
||||||
groupIdAddFile VARCHAR(22) BINARY,
|
|
||||||
groupIdModerator VARCHAR(22) BINARY,
|
|
||||||
imageResolutions TEXT,
|
|
||||||
imageViewSize INT,
|
|
||||||
imageViewCompression INT,
|
|
||||||
imageThumbnailSize INT,
|
|
||||||
maxSpacePerUser VARCHAR(20),
|
|
||||||
richEditIdFileComment VARCHAR(22) BINARY,
|
|
||||||
templateIdAddArchive VARCHAR(22) BINARY,
|
|
||||||
templateIdDeleteAlbum VARCHAR(22) BINARY,
|
|
||||||
templateIdDeleteFile VARCHAR(22) BINARY,
|
|
||||||
templateIdEditFile VARCHAR(22) BINARY,
|
|
||||||
templateIdListAlbums VARCHAR(22) BINARY,
|
|
||||||
templateIdListAlbumsRss VARCHAR(22) BINARY,
|
|
||||||
templateIdListUserFiles VARCHAR(22) BINARY,
|
|
||||||
templateIdListUserFilesRss VARCHAR(22) BINARY,
|
|
||||||
templateIdMakeShortcut VARCHAR(22) BINARY,
|
|
||||||
templateIdSearch VARCHAR(22) BINARY,
|
|
||||||
templateIdSlideshow VARCHAR(22) BINARY,
|
|
||||||
templateIdThumbnails VARCHAR(22) BINARY,
|
|
||||||
templateIdViewAlbum VARCHAR(22) BINARY,
|
|
||||||
templateIdViewAlbumRss VARCHAR(22) BINARY,
|
|
||||||
templateIdViewFile VARCHAR(22) BINARY,
|
|
||||||
workflowIdCommit VARCHAR(22) BINARY,
|
|
||||||
PRIMARY KEY (assetId, revisionDate)
|
|
||||||
)
|
|
||||||
ENDSQL
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print "DONE!\n" unless $quiet;
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# Install the GalleryAlbum asset
|
|
||||||
sub installGalleryAlbumAsset {
|
|
||||||
my $session = shift;
|
|
||||||
print "\tInstalling GalleryAlbum asset..." unless $quiet;
|
|
||||||
|
|
||||||
$session->db->write(<<'ENDSQL');
|
|
||||||
CREATE TABLE IF NOT EXISTS GalleryAlbum (
|
|
||||||
assetId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
revisionDate BIGINT NOT NULL,
|
|
||||||
othersCanAdd INT,
|
|
||||||
allowComments INT,
|
|
||||||
PRIMARY KEY (assetId, revisionDate)
|
|
||||||
)
|
|
||||||
ENDSQL
|
|
||||||
|
|
||||||
print "DONE!\n" unless $quiet;
|
|
||||||
}
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# Install the photo asset
|
|
||||||
sub installPhotoAsset {
|
|
||||||
my $session = shift;
|
|
||||||
print "\tInstalling Photo asset..." unless $quiet;
|
|
||||||
|
|
||||||
# Photo Asset
|
|
||||||
$session->db->write(<<'ENDSQL');
|
|
||||||
CREATE TABLE IF NOT EXISTS Photo (
|
|
||||||
assetId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
revisionDate BIGINT NOT NULL,
|
|
||||||
friendsOnly INT,
|
|
||||||
rating INT,
|
|
||||||
storageIdPhoto VARCHAR(22) BINARY,
|
|
||||||
userDefined1 TEXT,
|
|
||||||
userDefined2 TEXT,
|
|
||||||
userDefined3 TEXT,
|
|
||||||
userDefined4 TEXT,
|
|
||||||
userDefined5 TEXT,
|
|
||||||
PRIMARY KEY (assetId, revisionDate)
|
|
||||||
)
|
|
||||||
ENDSQL
|
|
||||||
|
|
||||||
$session->db->write(<<'ENDSQL');
|
|
||||||
CREATE TABLE IF NOT EXISTS Photo_comment (
|
|
||||||
assetId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
commentId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
userId VARCHAR(22) BINARY,
|
|
||||||
visitorIp VARCHAR(255),
|
|
||||||
creationDate DATETIME,
|
|
||||||
bodyText LONGTEXT,
|
|
||||||
INDEX (commentId),
|
|
||||||
PRIMARY KEY (assetId, commentId)
|
|
||||||
)
|
|
||||||
ENDSQL
|
|
||||||
|
|
||||||
$session->db->write(<<'ENDSQL');
|
|
||||||
CREATE TABLE IF NOT EXISTS Photo_rating (
|
|
||||||
assetId VARCHAR(22) BINARY NOT NULL,
|
|
||||||
userId VARCHAR(22) BINARY,
|
|
||||||
visitorIp VARCHAR(255),
|
|
||||||
rating INT,
|
|
||||||
INDEX (assetId)
|
|
||||||
)
|
|
||||||
ENDSQL
|
|
||||||
|
|
||||||
print "DONE!\n" unless $quiet;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ---- DO NOT EDIT BELOW THIS LINE ----
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
|
||||||
sub start {
|
|
||||||
my $configFile;
|
|
||||||
$|=1; #disable output buffering
|
|
||||||
GetOptions(
|
|
||||||
'configFile=s'=>\$configFile,
|
|
||||||
'quiet'=>\$quiet
|
|
||||||
);
|
|
||||||
my $session = WebGUI::Session->open("../..",$configFile);
|
|
||||||
$session->user({userId=>3});
|
|
||||||
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
|
||||||
$versionTag->set({name=>"Upgrade to ".$toVersion});
|
|
||||||
updateTemplates($session);
|
|
||||||
return $session;
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
|
||||||
sub finish {
|
|
||||||
my $session = shift;
|
|
||||||
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
|
||||||
$versionTag->commit;
|
|
||||||
$session->close();
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
|
||||||
sub updateTemplates {
|
|
||||||
my $session = shift;
|
|
||||||
return undef unless (-d "templates-".$toVersion);
|
|
||||||
print "\tUpdating templates.\n" unless ($quiet);
|
|
||||||
opendir(DIR,"templates-".$toVersion);
|
|
||||||
my @files = readdir(DIR);
|
|
||||||
closedir(DIR);
|
|
||||||
my $importNode = WebGUI::Asset->getImportNode($session);
|
|
||||||
my $newFolder = undef;
|
|
||||||
foreach my $file (@files) {
|
|
||||||
next unless ($file =~ /\.tmpl$/);
|
|
||||||
open(FILE,"<templates-".$toVersion."/".$file);
|
|
||||||
my $first = 1;
|
|
||||||
my $create = 0;
|
|
||||||
my $head = 0;
|
|
||||||
my %properties = (className=>"WebGUI::Asset::Template");
|
|
||||||
while (my $line = <FILE>) {
|
|
||||||
if ($first) {
|
|
||||||
$line =~ m/^\#(.*)$/;
|
|
||||||
$properties{id} = $1;
|
|
||||||
$first = 0;
|
|
||||||
} elsif ($line =~ m/^\#create$/) {
|
|
||||||
$create = 1;
|
|
||||||
} elsif ($line =~ m/^\#(.*):(.*)$/) {
|
|
||||||
$properties{$1} = $2;
|
|
||||||
} elsif ($line =~ m/^~~~$/) {
|
|
||||||
$head = 1;
|
|
||||||
} elsif ($head) {
|
|
||||||
$properties{headBlock} .= $line;
|
|
||||||
} else {
|
|
||||||
$properties{template} .= $line;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close(FILE);
|
|
||||||
if ($create) {
|
|
||||||
$newFolder = createNewTemplatesFolder($importNode) unless (defined $newFolder);
|
|
||||||
my $template = $newFolder->addChild(\%properties, $properties{id});
|
|
||||||
} else {
|
|
||||||
my $template = WebGUI::Asset->new($session,$properties{id}, "WebGUI::Asset::Template");
|
|
||||||
if (defined $template) {
|
|
||||||
my $newRevision = $template->addRevision(\%properties);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------
|
|
||||||
sub createNewTemplatesFolder {
|
|
||||||
my $importNode = shift;
|
|
||||||
my $newFolder = $importNode->addChild({
|
|
||||||
className=>"WebGUI::Asset::Wobject::Folder",
|
|
||||||
title => $toVersion." New Templates",
|
|
||||||
menuTitle => $toVersion." New Templates",
|
|
||||||
url=> $toVersion."_new_templates",
|
|
||||||
groupIdView=>"12"
|
|
||||||
});
|
|
||||||
return $newFolder;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -22,6 +22,9 @@ my $session = start(); # this line required
|
||||||
|
|
||||||
# upgrade functions go here
|
# upgrade functions go here
|
||||||
addFriendsNetwork($session);
|
addFriendsNetwork($session);
|
||||||
|
installGalleryAsset($session);
|
||||||
|
installGalleryAlbumAsset($session);
|
||||||
|
installPhotoAsset($session);
|
||||||
|
|
||||||
finish($session); # this line required
|
finish($session); # this line required
|
||||||
|
|
||||||
|
|
@ -99,6 +102,118 @@ EOSQL
|
||||||
print "OK\n" unless $quiet;
|
print "OK\n" unless $quiet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Install the GalleryAlbum asset
|
||||||
|
sub installGalleryAlbumAsset {
|
||||||
|
my $session = shift;
|
||||||
|
print "\tInstalling GalleryAlbum asset..." unless $quiet;
|
||||||
|
|
||||||
|
$session->db->write(<<'ENDSQL');
|
||||||
|
CREATE TABLE IF NOT EXISTS GalleryAlbum (
|
||||||
|
assetId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
revisionDate BIGINT NOT NULL,
|
||||||
|
othersCanAdd INT,
|
||||||
|
allowComments INT,
|
||||||
|
PRIMARY KEY (assetId, revisionDate)
|
||||||
|
)
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
print "DONE!\n" unless $quiet;
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Install the Gallery asset
|
||||||
|
sub installGalleryAsset {
|
||||||
|
my $session = shift;
|
||||||
|
print "\tInstalling Gallery asset..." unless $quiet;
|
||||||
|
|
||||||
|
$session->db->write(<<'ENDSQL');
|
||||||
|
CREATE TABLE IF NOT EXISTS Gallery (
|
||||||
|
assetId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
revisionDate BIGINT NOT NULL,
|
||||||
|
groupIdAddComment VARCHAR(22) BINARY,
|
||||||
|
groupIdAddFile VARCHAR(22) BINARY,
|
||||||
|
groupIdModerator VARCHAR(22) BINARY,
|
||||||
|
imageResolutions TEXT,
|
||||||
|
imageViewSize INT,
|
||||||
|
imageThumbnailSize INT,
|
||||||
|
maxSpacePerUser VARCHAR(20),
|
||||||
|
richEditIdFileComment VARCHAR(22) BINARY,
|
||||||
|
templateIdAddArchive VARCHAR(22) BINARY,
|
||||||
|
templateIdDeleteAlbum VARCHAR(22) BINARY,
|
||||||
|
templateIdDeleteFile VARCHAR(22) BINARY,
|
||||||
|
templateIdEditFile VARCHAR(22) BINARY,
|
||||||
|
templateIdListAlbums VARCHAR(22) BINARY,
|
||||||
|
templateIdListAlbumsRss VARCHAR(22) BINARY,
|
||||||
|
templateIdListUserFiles VARCHAR(22) BINARY,
|
||||||
|
templateIdListUserFilesRss VARCHAR(22) BINARY,
|
||||||
|
templateIdMakeShortcut VARCHAR(22) BINARY,
|
||||||
|
templateIdSearch VARCHAR(22) BINARY,
|
||||||
|
templateIdSlideshow VARCHAR(22) BINARY,
|
||||||
|
templateIdThumbnails VARCHAR(22) BINARY,
|
||||||
|
templateIdViewAlbum VARCHAR(22) BINARY,
|
||||||
|
templateIdViewAlbumRss VARCHAR(22) BINARY,
|
||||||
|
templateIdViewFile VARCHAR(22) BINARY,
|
||||||
|
workflowIdCommit VARCHAR(22) BINARY,
|
||||||
|
PRIMARY KEY (assetId, revisionDate)
|
||||||
|
)
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print "DONE!\n" unless $quiet;
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Install the photo asset
|
||||||
|
sub installPhotoAsset {
|
||||||
|
my $session = shift;
|
||||||
|
print "\tInstalling Photo asset..." unless $quiet;
|
||||||
|
|
||||||
|
# Photo Asset
|
||||||
|
$session->db->write(<<'ENDSQL');
|
||||||
|
CREATE TABLE IF NOT EXISTS Photo (
|
||||||
|
assetId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
revisionDate BIGINT NOT NULL,
|
||||||
|
exifData LONGTEXT,
|
||||||
|
friendsOnly INT,
|
||||||
|
rating INT,
|
||||||
|
storageIdPhoto VARCHAR(22) BINARY,
|
||||||
|
userDefined1 TEXT,
|
||||||
|
userDefined2 TEXT,
|
||||||
|
userDefined3 TEXT,
|
||||||
|
userDefined4 TEXT,
|
||||||
|
userDefined5 TEXT,
|
||||||
|
PRIMARY KEY (assetId, revisionDate)
|
||||||
|
)
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
$session->db->write(<<'ENDSQL');
|
||||||
|
CREATE TABLE IF NOT EXISTS Photo_comment (
|
||||||
|
assetId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
commentId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
userId VARCHAR(22) BINARY,
|
||||||
|
visitorIp VARCHAR(255),
|
||||||
|
creationDate DATETIME,
|
||||||
|
bodyText LONGTEXT,
|
||||||
|
INDEX (commentId),
|
||||||
|
PRIMARY KEY (assetId, commentId)
|
||||||
|
)
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
$session->db->write(<<'ENDSQL');
|
||||||
|
CREATE TABLE IF NOT EXISTS Photo_rating (
|
||||||
|
assetId VARCHAR(22) BINARY NOT NULL,
|
||||||
|
userId VARCHAR(22) BINARY,
|
||||||
|
visitorIp VARCHAR(255),
|
||||||
|
rating INT,
|
||||||
|
INDEX (assetId)
|
||||||
|
)
|
||||||
|
ENDSQL
|
||||||
|
|
||||||
|
print "DONE!\n" unless $quiet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# ---- DO NOT EDIT BELOW THIS LINE ----
|
# ---- DO NOT EDIT BELOW THIS LINE ----
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -397,16 +397,25 @@ sub setFile {
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 setSize ( fileSize )
|
||||||
|
|
||||||
|
Set the size of this asset by including all the files in its storage
|
||||||
|
location. C<fileSize> is an integer of additional bytes to include in
|
||||||
|
the asset size.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
sub setSize {
|
sub setSize {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $fileSize = shift || 0;
|
my $fileSize = shift || 0;
|
||||||
my $storage = $self->getStorageLocation;
|
my $storage = $self->getStorageLocation;
|
||||||
if (defined $storage) {
|
if (defined $storage) {
|
||||||
foreach my $file (@{$storage->getFiles}) {
|
foreach my $file (@{$storage->getFiles}) {
|
||||||
$fileSize += $storage->getFileSize($file);
|
$fileSize += $storage->getFileSize($file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $self->SUPER::setSize($fileSize);
|
return $self->SUPER::setSize($fileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,14 @@ package WebGUI::Asset::File::Image::Photo;
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Tie::IxHash;
|
|
||||||
use Carp qw( croak );
|
|
||||||
use base 'WebGUI::Asset::File::Image';
|
use base 'WebGUI::Asset::File::Image';
|
||||||
|
|
||||||
|
use Carp qw( croak );
|
||||||
|
use Image::ExifTool qw( :Public );
|
||||||
|
use JSON;
|
||||||
|
use Tie::IxHash;
|
||||||
|
|
||||||
|
use WebGUI::Friends;
|
||||||
use WebGUI::Utility;
|
use WebGUI::Utility;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -109,18 +114,30 @@ sub appendTemplateVarsForCommentForm {
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 applyConstraints ( )
|
=head2 applyConstraints ( options )
|
||||||
|
|
||||||
Apply the constraints to the original file. Called automatically by C<setFile>
|
Apply the constraints to the original file. Called automatically by C<setFile>
|
||||||
and C<processPropertiesFromFormPost>.
|
and C<processPropertiesFromFormPost>.
|
||||||
|
|
||||||
|
This is a sort of catch-all method for applying things to the file after it's
|
||||||
|
uploaded. This method simply calls other methods to do its work.
|
||||||
|
|
||||||
|
C<options> is a hash reference of options and is currently not used.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub applyConstraints {
|
sub applyConstraints {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $gallery = $self->getGallery;
|
my $gallery = $self->getGallery;
|
||||||
|
|
||||||
|
$self->makeResolutions();
|
||||||
|
$self->updateExifDataFromFile();
|
||||||
|
|
||||||
# ...
|
# Update the asset's size and make a thumbnail
|
||||||
|
$self->SUPER::applyConstraints({
|
||||||
|
maxImageSize => $self->getGallery->get("imageViewSize"),
|
||||||
|
thumbnailSize => $self->getGallery->get("imageThumbnailSize"),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -164,9 +181,8 @@ sub canView {
|
||||||
return 0 unless $album->canView($userId);
|
return 0 unless $album->canView($userId);
|
||||||
|
|
||||||
if ($self->isFriendsOnly) {
|
if ($self->isFriendsOnly) {
|
||||||
|
return 0
|
||||||
# ...
|
unless WebGUI::Friends->new($self->session, $self->get("ownerUserId"))->isFriend($userId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Passed all checks
|
# Passed all checks
|
||||||
|
|
@ -188,7 +204,7 @@ sub deleteComment {
|
||||||
croak "Photo->deleteComment: No commentId specified."
|
croak "Photo->deleteComment: No commentId specified."
|
||||||
unless $commentId;
|
unless $commentId;
|
||||||
|
|
||||||
return $self->session->db->do(
|
return $self->session->db->write(
|
||||||
"DELETE FROM Photo_comment WHERE assetId=? AND commentId=?",
|
"DELETE FROM Photo_comment WHERE assetId=? AND commentId=?",
|
||||||
[$self->getId, $commentId],
|
[$self->getId, $commentId],
|
||||||
);
|
);
|
||||||
|
|
@ -296,7 +312,8 @@ sub getResolutions {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $storage = $self->getStorageLocation;
|
my $storage = $self->getStorageLocation;
|
||||||
|
|
||||||
# ...
|
# Return a list not including the web view image.
|
||||||
|
return grep { $_ ne $self->get("filename") } @{ $storage->getFiles };
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -310,8 +327,16 @@ Get a hash reference of template variables shared by all views of this asset.
|
||||||
sub getTemplateVars {
|
sub getTemplateVars {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $vars = $self->get;
|
my $vars = $self->get;
|
||||||
|
|
||||||
|
### Format exif vars
|
||||||
|
my $exif = jsonToObj( delete $var->{exifData} );
|
||||||
|
for my $tag ( keys %$exif ) {
|
||||||
|
# Hash of exif_tag => value
|
||||||
|
$var->{ "exif_" . $tag } = $exif->{$tag};
|
||||||
|
|
||||||
# ...
|
# Loop of tag => "...", value => "..."
|
||||||
|
push @{ $var->{exifLoop} }, { tag => $tag, value => $exif->{$tag} };
|
||||||
|
}
|
||||||
|
|
||||||
return $vars;
|
return $vars;
|
||||||
}
|
}
|
||||||
|
|
@ -407,9 +432,6 @@ sub makeShortcut {
|
||||||
|
|
||||||
=head2 processPropertiesFromFormPost ( )
|
=head2 processPropertiesFromFormPost ( )
|
||||||
|
|
||||||
Used to process properties from the form posted. Do custom things with
|
|
||||||
noFormPost fields here, or do whatever you want. This method is called
|
|
||||||
when /yourAssetUrl?func=editSave is requested/posted.
|
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
|
|
@ -444,6 +466,24 @@ sub setComment {
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
=head2 updateExifDataFromFile ( )
|
||||||
|
|
||||||
|
Gets the EXIF data from the uploaded image and store it in the database.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub updateExifDataFromFile {
|
||||||
|
my $self = shift;
|
||||||
|
my $storage = $self->getStorageLocation;
|
||||||
|
|
||||||
|
my $info = ImageInfo( $storage->getFilePath( $self->get('filename') ) );
|
||||||
|
$self->update({
|
||||||
|
exifData => objToJson( $info ),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 view ( )
|
=head2 view ( )
|
||||||
|
|
||||||
method called by the container www_view method.
|
method called by the container www_view method.
|
||||||
|
|
@ -535,6 +575,9 @@ This page is only available to those who can edit this Photo.
|
||||||
|
|
||||||
sub www_edit {
|
sub www_edit {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
my $session = $self->session;
|
||||||
|
my $form = $self->session->form;
|
||||||
|
|
||||||
return $self->session->privilege->insufficient unless $self->canEdit;
|
return $self->session->privilege->insufficient unless $self->canEdit;
|
||||||
return $self->session->privilege->locked unless $self->canEditIfLocked;
|
return $self->session->privilege->locked unless $self->canEditIfLocked;
|
||||||
|
|
||||||
|
|
@ -619,7 +662,8 @@ sub www_makeShortcutSave {
|
||||||
|
|
||||||
return $self->session->privilege->insufficient unless $self->canEdit;
|
return $self->session->privilege->insufficient unless $self->canEdit;
|
||||||
|
|
||||||
#...
|
#...
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
|
|
@ -311,7 +311,7 @@ sub sendMessage {
|
||||||
userId => $userId,
|
userId => $userId,
|
||||||
sentBy => $myId,
|
sentBy => $myId,
|
||||||
status => 'unread',
|
status => 'unread',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
10
lib/WebGUI/i18n/English/Asset_Gallery.pm
Normal file
10
lib/WebGUI/i18n/English/Asset_Gallery.pm
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
package WebGUI::i18n::English::Asset_Gallery;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
'assetName' => {
|
||||||
|
message => 'Gallery',
|
||||||
|
lastUpdated => 1131394072,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
10
lib/WebGUI/i18n/English/Asset_GalleryAlbum.pm
Normal file
10
lib/WebGUI/i18n/English/Asset_GalleryAlbum.pm
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
package WebGUI::i18n::English::Asset_GalleryAlbum;
|
||||||
|
|
||||||
|
our $I18N = {
|
||||||
|
'assetName' => {
|
||||||
|
message => 'Gallery Album',
|
||||||
|
lastUpdated => 1131394072,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
@ -122,6 +122,7 @@ checkModule("Locale::US");
|
||||||
checkModule("Weather::Com::Finder","0.5.1");
|
checkModule("Weather::Com::Finder","0.5.1");
|
||||||
checkModule("Class::InsideOut","1.06");
|
checkModule("Class::InsideOut","1.06");
|
||||||
checkModule("HTML::TagCloud","0.34");
|
checkModule("HTML::TagCloud","0.34");
|
||||||
|
checkModule("Image::ExifTool","7.00");
|
||||||
|
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
|
|
@ -200,8 +201,8 @@ print "\nTesting complete!\n\n";
|
||||||
#----------------------------------------
|
#----------------------------------------
|
||||||
sub checkModule {
|
sub checkModule {
|
||||||
my $module = shift;
|
my $module = shift;
|
||||||
my $version = shift || 0;
|
my $version = shift || 0;
|
||||||
my $skipInstall = shift;
|
my $skipInstall = shift;
|
||||||
my $afterinstall = shift;
|
my $afterinstall = shift;
|
||||||
unless (defined $afterinstall) { $afterinstall = 0; }
|
unless (defined $afterinstall) { $afterinstall = 0; }
|
||||||
printTest("Checking for module $module");
|
printTest("Checking for module $module");
|
||||||
|
|
|
||||||
56
t/Asset/File/Image/Photo/exif.t
Normal file
56
t/Asset/File/Image/Photo/exif.t
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# WebGUI is Copyright 2001-2007 Plain Black Corporation.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# Please read the legal notices (docs/legal.txt) and the license
|
||||||
|
# (docs/license.txt) that came with this distribution before using
|
||||||
|
# this software.
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
# http://www.plainblack.com info@plainblack.com
|
||||||
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
|
use FindBin;
|
||||||
|
use strict;
|
||||||
|
use lib "$FindBin::Bin/../../../../lib";
|
||||||
|
|
||||||
|
## The goal of this test is to test the EXIF functionality of WebGUI's photo
|
||||||
|
# asset
|
||||||
|
|
||||||
|
use Scalar::Util qw( blessed );
|
||||||
|
use WebGUI::Test;
|
||||||
|
use WebGUI::Session;
|
||||||
|
use Test::More;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Init
|
||||||
|
my $session = WebGUI::Test->session;
|
||||||
|
my $node = WebGUI::Asset->getImportNode($session);
|
||||||
|
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||||
|
$versionTag->set({name=>"Photo Test"});
|
||||||
|
my $gallery
|
||||||
|
= $node->addChild({
|
||||||
|
className => "WebGUI::Asset::Wobject::Gallery",
|
||||||
|
});
|
||||||
|
my $album
|
||||||
|
= $gallery->addChild({
|
||||||
|
className => "WebGUI::Asset::Wobject::GalleryAlbum",
|
||||||
|
});
|
||||||
|
my ( $photo );
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Cleanup
|
||||||
|
END {
|
||||||
|
$versionTag->rollback();
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Tests
|
||||||
|
plan no_plan => 1;
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Test that exif data gets parsed from the file
|
||||||
|
$photo
|
||||||
|
= $album->addChild({
|
||||||
|
className => "WebGUI::Asset::File::Image::Photo",
|
||||||
|
});
|
||||||
|
$photo->setFile( WebGUI::Test->getCollateralPath("lamp.jpg") );
|
||||||
|
my $exif = $photo->get("exifData");
|
||||||
|
|
@ -17,6 +17,7 @@ use lib "$FindBin::Bin/../../../../lib";
|
||||||
use Scalar::Util qw( blessed );
|
use Scalar::Util qw( blessed );
|
||||||
use WebGUI::Test;
|
use WebGUI::Test;
|
||||||
use WebGUI::Session;
|
use WebGUI::Session;
|
||||||
|
use WebGUI::Friends;
|
||||||
use Test::More;
|
use Test::More;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -27,6 +28,10 @@ my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||||
$versionTag->set({name=>"Photo Test"});
|
$versionTag->set({name=>"Photo Test"});
|
||||||
my ($photo);
|
my ($photo);
|
||||||
$session->user({ userId => 3 });
|
$session->user({ userId => 3 });
|
||||||
|
|
||||||
|
my $friend = WebGUI::User->new($session, "new");
|
||||||
|
WebGUI::Friends->new($session)->add( [ $friend->userId ] );
|
||||||
|
|
||||||
my $gallery
|
my $gallery
|
||||||
= $node->addChild({
|
= $node->addChild({
|
||||||
className => "WebGUI::Asset::Wobject::Gallery",
|
className => "WebGUI::Asset::Wobject::Gallery",
|
||||||
|
|
@ -46,7 +51,9 @@ my $album
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Cleanup
|
# Cleanup
|
||||||
END {
|
END {
|
||||||
$versionTag->rollback();
|
WebGUI::Friends->new($session)->delete( [ $friend->userId ] );
|
||||||
|
$friend->delete;
|
||||||
|
$versionTag->rollback;
|
||||||
}
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
@ -54,8 +61,6 @@ END {
|
||||||
plan no_plan => 1;
|
plan no_plan => 1;
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Photo assets outside of Gallery assets
|
|
||||||
|
|
||||||
# Everyone can view, Admins can edit, Owned by current user
|
# Everyone can view, Admins can edit, Owned by current user
|
||||||
$photo
|
$photo
|
||||||
= $album->addChild({
|
= $album->addChild({
|
||||||
|
|
@ -72,6 +77,7 @@ ok( !$photo->canEdit(2), "Registered users cannot edit" );
|
||||||
ok( $photo->canView, "Current user can view" );
|
ok( $photo->canView, "Current user can view" );
|
||||||
ok( $photo->canEdit, "Current user can edit" );
|
ok( $photo->canEdit, "Current user can edit" );
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
# Admins can view, Admins can edit, Owned by Admin, current user is Visitor
|
# Admins can view, Admins can edit, Owned by Admin, current user is Visitor
|
||||||
my $oldUser = $session->user;
|
my $oldUser = $session->user;
|
||||||
$session->user( { user => WebGUI::User->new($session, "1") } );
|
$session->user( { user => WebGUI::User->new($session, "1") } );
|
||||||
|
|
@ -91,6 +97,7 @@ ok( $photo->canView(3), "Admins can view" );
|
||||||
ok( $photo->canEdit(3), "Admins can edit" );
|
ok( $photo->canEdit(3), "Admins can edit" );
|
||||||
$session->user( { user => $oldUser } );
|
$session->user( { user => $oldUser } );
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
# Photo without specific view/edit inherits from gallery properties
|
# Photo without specific view/edit inherits from gallery properties
|
||||||
$photo
|
$photo
|
||||||
= $album->addChild({
|
= $album->addChild({
|
||||||
|
|
@ -109,11 +116,11 @@ ok( $photo->canEdit, "Owner can edit" );
|
||||||
ok( $photo->canView(3), "Admin can view" );
|
ok( $photo->canView(3), "Admin can view" );
|
||||||
ok( $photo->canEdit(3), "Admin can edit" );
|
ok( $photo->canEdit(3), "Admin can edit" );
|
||||||
|
|
||||||
# Photo with specific view uses that instead (friends lists)
|
#----------------------------------------------------------------------------
|
||||||
|
# Friends are allowed to view friendsOnly photos
|
||||||
$photo
|
$photo
|
||||||
= $album->addChild({
|
= $album->addChild({
|
||||||
className => "WebGUI::Asset::File::Image::Photo",
|
className => "WebGUI::Asset::File::Image::Photo",
|
||||||
groupIdView => "3",
|
|
||||||
groupIdEdit => "",
|
groupIdEdit => "",
|
||||||
ownerUserId => $session->user->userId,
|
ownerUserId => $session->user->userId,
|
||||||
});
|
});
|
||||||
|
|
|
||||||
BIN
t/supporting_collateral/lamp.jpg
Normal file
BIN
t/supporting_collateral/lamp.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 663 KiB |
Loading…
Add table
Add a link
Reference in a new issue