Mail Index
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Slideshow feature in A::G
Hello everybody
Someone suggested a slideshow feature in A::G which I think was a
great idea.
I have done a little bit of hacking and did both some cleanup and
a suggestion for a slideshow feature.
You can see it in action at
http://gallery.legart.dk/Test/IMG_2801.JPG?slideshow=5
The intervals that the user can select are configurable.
I'm not sure if it should work like this. Currently the slideshow
stops if you change resolution or use the prev/next buttons. Another
known bug is that you can only see the slideshow in the default
resolution.
Anyway, just checking if I am on the right track. What do you
think?
As you can see in the commit mail you have to update two
old templates and install a couple of new ones.
The code can be downloaded at
http://svn.apachegallery.dk:8080/snapshots/Apache-Gallery-r38.tar.gz
on this URL (http://svn.apachegallery.dk:8080/snapshots/) you
will always be able to download the latest snapshot of Apache::Gallery -
a tarball gets created on each commit automaticly.
You can also make a checkout of the code directly from the server
using a Subversion client (subversion.tigris.org)
The url for the HEAD version is http://svn.apachegallery.dk:8080/svn/gallery/trunk
Cheers,
Michael
----- Forwarded message from mil@xxxxxxxxxxxxxxx -----
From: mil@xxxxxxxxxxxxxxx
Subject: rev 38 - in trunk: . lib/Apache templates
To: michael@xxxxxxxxx
Date: Tue, 20 Aug 2002 17:11:36 +0200 (CEST)
Author: mil
Date: 2002-08-20 17:11:36 +0200 (Tue, 20 Aug 2002)
New Revision: 38
Added:
trunk/templates/interval.tpl
trunk/templates/intervalactive.tpl
trunk/templates/refresh.tpl
trunk/templates/scaleactive.tpl
trunk/templates/slideshowisoff.tpl
trunk/templates/slideshowoff.tpl
Modified:
trunk/Changes
trunk/README
trunk/UPGRADE
trunk/lib/Apache/Gallery.pm
trunk/templates/layout.tpl
trunk/templates/showpicture.tpl
Log:
Did some codecleanup and added a slideshow feature. The slideshow stuff
is still experimental, it is just proof of concept.
Modified: trunk/lib/Apache/Gallery.pm
==============================================================================
--- trunk/lib/Apache/Gallery.pm (original)
+++ trunk/lib/Apache/Gallery.pm Tue Aug 20 17:11:36 2002
@@ -88,6 +88,7 @@
);
$tpl->assign(TITLE => "Index of: ".$uri);
+ $tpl->assign(META => " ");
unless (opendir (DIR, $filename)) {
show_error ($r, $!, "Unable to access directory $filename: $!");
@@ -269,15 +270,22 @@
my $tpl = new CGI::FastTemplate($r->dir_config('GalleryTemplateDir'));
$tpl->define(
- layout => 'layout.tpl',
- picture => 'showpicture.tpl',
- navpicture => 'navpicture.tpl',
- info => 'info.tpl',
- scale => 'scale.tpl',
- orig => 'orig.tpl'
+ layout => 'layout.tpl',
+ picture => 'showpicture.tpl',
+ navpicture => 'navpicture.tpl',
+ info => 'info.tpl',
+ scale => 'scale.tpl',
+ scaleactive => 'scaleactive.tpl',
+ orig => 'orig.tpl',
+ refresh => 'refresh.tpl',
+ interval => 'interval.tpl',
+ intervalactive => 'intervalactive.tpl',
+ slideshowisoff => 'slideshowisoff.tpl',
+ slideshowoff => 'slideshowoff.tpl'
);
$tpl->assign(TITLE => "Viewing ".$r->uri()." at $image_width x $height");
+ $tpl->assign(META => " ");
$tpl->assign(RESOLUTION => "$image_width x $height");
$tpl->assign(MENU => generate_menu($r));
$tpl->assign(SRC => ".cache/".$cached);
@@ -292,13 +300,16 @@
@pictures = sort @pictures;
$tpl->assign(TOTAL => scalar @pictures);
-
+
+ my $prevpicture;
+ my $nextpicture;
+
for (my $i=0; $i <= $#pictures; $i++) {
if ($pictures[$i] eq $picfilename) {
$tpl->assign(NUMBER => $i+1);
- my $prevpicture = $pictures[$i-1];
+ $prevpicture = $pictures[$i-1];
my $displayprev = ($i>0 ? 1 : 0);
if ($r->dir_config("GalleryWrapNavigation")) {
@@ -320,7 +331,7 @@
$tpl->assign(BACK => " ");
}
- my $nextpicture = $pictures[$i+1];
+ $nextpicture = $pictures[$i+1];
if ($r->dir_config("GalleryWrapNavigation")) {
$nextpicture = $pictures[$i == $#pictures ? 0 : $i+1];
}
@@ -373,7 +384,12 @@
$tpl->assign(IMAGEURI => uri_escape($r->uri(), $escape_rule));
$tpl->assign(SIZE => $size);
$tpl->assign(WIDTH => $size);
+ if ($width == $size) {
+ $tpl->parse(SIZES => '.scaleactive');
+ }
+ else {
$tpl->parse(SIZES => '.scale');
+ }
}
}
@@ -382,6 +398,35 @@
$tpl->parse(SIZES => '.orig');
}
+ my @slideshow_intervals = split (/ /, $r->dir_config('GallerySlideshowIntervals') ? $r->dir_config('GallerySlideshowIntervals') : '3 5 10 15 30');
+ foreach my $interval (@slideshow_intervals) {
+ $tpl->assign(IMAGEURI => uri_escape($r->uri(), $escape_rule));
+ $tpl->assign(SECONDS => $interval);
+ if ($apr->param('slideshow') && $apr->param('slideshow') == $interval and $nextpicture) {
+ $tpl->parse(SLIDESHOW => '.intervalactive');
+ }
+ else {
+ $tpl->parse(SLIDESHOW => '.interval');
+ }
+ }
+
+ if ($apr->param('slideshow') and $nextpicture) {
+
+ $tpl->parse(SLIDESHOW => '.slideshowoff');
+
+ unless ((grep $apr->param('slideshow') == $_, @slideshow_intervals)) {
+ show_error($r, "Invalid interval", $apr->param('slideshow')." is not an allowed interval.");
+ return OK;
+ }
+
+ $tpl->assign(INTERVAL => $apr->param('slideshow'));
+ $tpl->parse(META => '.refresh');
+
+ }
+ else {
+ $tpl->parse(SLIDESHOW => '.slideshowisoff');
+ }
+
$tpl->parse("MAIN", ["picture", "layout"]);
my $content = $tpl->fetch("MAIN");
@@ -650,7 +695,6 @@
$r->print(${$content});
- return OK;
}
sub generate_menu {
@@ -858,6 +902,11 @@
resizing or putting the CopyrightImage on it.
Set to 1 or 0, default is 0
+
+=item B<GallerySlideshowIntervals>
+
+With this option you can configure which intervals can be selected for
+a slideshow. The default is '3 5 10 15 30'
=back
Modified: trunk/UPGRADE
==============================================================================
--- trunk/UPGRADE (original)
+++ trunk/UPGRADE Tue Aug 20 17:11:36 2002
@@ -1,6 +1,18 @@
# $Author$ $Rev$
# $Date$
+For users upgrading from 0.4 to devel
+
+Remember to update the following templates:
+templates/interval.tpl
+templates/intervalactive.tpl
+templates/layout.tpl
+templates/refresh.tpl
+templates/scaleactive.tpl
+templates/showpicture.tpl
+templates/slideshowisoff.tpl
+templates/slideshowoff.tpl
+
For users upgrading from 0.3 to 0.4:
Two new options have been added, they are both optional:
Modified: trunk/Changes
==============================================================================
--- trunk/Changes (original)
+++ trunk/Changes Tue Aug 20 17:11:36 2002
@@ -3,6 +3,9 @@
Revision history for Perl extension Apache::Gallery.
+ - Added slideshow feature (Me)
+ - Code cleanup (Me)
+
0.4.1 Sun Aug 11 17:48:09 CEST 2002
- URI Escape image URL in the size selection URLs. (Me)
Modified: trunk/README
==============================================================================
--- trunk/README (original)
+++ trunk/README Tue Aug 20 17:11:36 2002
@@ -1,6 +1,3 @@
-$Author$ $Rev$
-$Date$
-
NAME
Apache::Gallery - mod_perl handler to create an image gallery
@@ -59,7 +56,7 @@
Defines which widths images can be scaled to. Images cannot be
scaled to other widths than the ones you define with this option.
- The default is '640 1024 1600 2272'
+ The default is '640 800 1024 1600'
GalleryThumbnailSize
Defines the width and height of the thumbnail images.
@@ -84,6 +81,10 @@
Set to 1 or 0, default is 0
+ GallerySlideshowIntervals
+ With this option you can configure which intervals can be selected
+ for a slideshow. The default is '3 5 10 15 30'
+
FEATURES
Rotate images
Pictures can be rotated on the fly without modifying the original
@@ -116,11 +117,18 @@
Apache::Request
URI::Escape
Image::Info
+ Image::Size
CGI::FastTemplate
Inline::C
X11 libraries (ie, XFree86)
Imlib2 Remember the -dev package when using rpm, deb or other package
formats!
+BUGS
+ Fatal errors are showed on a page with a HTTP OK return code. This is
+ because Internet Explorer will show it's own error page otherwise. Is it
+ possible to force IE to show our custom errormessage even when returning
+ HTTP status code 500?
+
AUTHOR
Michael Legart <michael@xxxxxxxxx>
@@ -137,10 +145,11 @@
THANKS
Thanks to Thomas Kjaer for templates and design of
- http://apachegallery.dk and thanks to Thomas Eibner for patches.
+ http://apachegallery.dk Thanks to Thomas Eibner and other for patches.
+ (See the Changes file)
SEE ALSO
the perl manpage, the mod_perl manpage, the Apache::Request manpage, the
- Inline::C manpage, the CGI::FastTemplate manpage, and the Image::Info
- manpage.
+ Inline::C manpage, the CGI::FastTemplate manpage, the Image::Info
+ manpage, and the Image::Size manpage.
Added: trunk/templates/scaleactive.tpl
==============================================================================
--- trunk/templates/scaleactive.tpl (original)
+++ trunk/templates/scaleactive.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+$SIZE
Added: trunk/templates/interval.tpl
==============================================================================
--- trunk/templates/interval.tpl (original)
+++ trunk/templates/interval.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+<a href="$IMAGEURI?slideshow=$SECONDS">$SECONDS</a>
Added: trunk/templates/slideshowisoff.tpl
==============================================================================
--- trunk/templates/slideshowisoff.tpl (original)
+++ trunk/templates/slideshowisoff.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+Off
Added: trunk/templates/slideshowoff.tpl
==============================================================================
--- trunk/templates/slideshowoff.tpl (original)
+++ trunk/templates/slideshowoff.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+<a href="$IMAGEURI">Off</a>
Added: trunk/templates/refresh.tpl
==============================================================================
--- trunk/templates/refresh.tpl (original)
+++ trunk/templates/refresh.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+<meta http-equiv="refresh" content="$INTERVAL; url=$URL?slideshow=$INTERVAL" />
Modified: trunk/templates/showpicture.tpl
==============================================================================
--- trunk/templates/showpicture.tpl (original)
+++ trunk/templates/showpicture.tpl Tue Aug 20 17:11:36 2002
@@ -9,7 +9,8 @@
<center class="nav">
Viewing picture $NUMBER of $TOTAL at $RESOLUTION pixels<br>
<img src="$SRC"><br>
- Size [ $SIZES ]
+ Size [ $SIZES ]<br>
+ Slideshow [ $SLIDESHOW ]
</center>
</td>
</tr>
@@ -32,7 +33,7 @@
<tr>
<td colspan="3">
<div id="gallery">
- Indexed by <a href="http://apachegallery.dk">Apache::Gallery</a> - Copyright © 2001 Michael Legart - <a href="http://www.hestdesign.com/">Hest Design!</a>
+ Indexed by <a href="http://apachegallery.dk">Apache::Gallery</a> - Copyright © 2001-2002 Michael Legart - <a href="http://www.hestdesign.com/">Hest Design!</a>
</div>
</td>
</tr>
Modified: trunk/templates/layout.tpl
==============================================================================
--- trunk/templates/layout.tpl (original)
+++ trunk/templates/layout.tpl Tue Aug 20 17:11:36 2002
@@ -5,6 +5,7 @@
<head>
<title>$TITLE</title>
<link rel="stylesheet" href="/gallery.css">
+ $META
</head>
<body>
Added: trunk/templates/intervalactive.tpl
==============================================================================
--- trunk/templates/intervalactive.tpl (original)
+++ trunk/templates/intervalactive.tpl Tue Aug 20 17:11:36 2002
@@ -0,0 +1 @@
+$SECONDS
----- End forwarded message -----