Im trying to use a gallerific slideshow and want to use perl to open any image in the directory and make the slideshow. It works if i dont use the for loop but as soon as use the for loop it stops working. any help would be appreciated.
here is the code:
<color red>
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print <<startHTML;
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Galleriffic | Custom layout with external controls</title>
<link rel="stylesheet" href="css/basic.css" type="text/css" />
<link rel="stylesheet" href="css/galleriffic-5.css" type="text/css" />
<!-- <link rel="stylesheet" href="css/white.css" type="text/css" /> -->
<link rel="stylesheet" href="css/black.css" type="text/css" />
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery.history.js"></script>
<script type="text/javascript" src="js/jquery.galleriffic.js"></script>
<script type="text/javascript" src="js/jquery.opacityrollover.js"></script>
<!-- We only want the thunbnails to display when javascript is disabled -->
<script type="text/javascript">
document.write('<style>.noscript { display: none; }</style>');
</script>
</head>
<body>
<div id="page">
<div id="container">
<h1><a href="index.html">Galleriffic</a></h1>
<h2>Alternate layout using custom previous/next page controls</h2>
<!-- Start Advanced Gallery Html Containers -->
<div class="navigation-container">
<div id="thumbs" class="navigation">
<a class="pageLink prev" style="visibility: hidden;" href="#" title="Previous Page"></a>
<ul class="thumbs noscript">
startHTML
opendir(DIR, "../images/featured/small_featured");
my @dir = readdir DIR;
for (@dir){
chomp;
next if $_ =~ /^\./;
print "<li>\n";
print "<a class=\"thumb\" href=\"../images/featured/small_featured/$_\" title=\"$_\">\n";
print "<img src=\"../images/featured/small_featured/$_\" alt=\"$_\" width=\"50\" height=\"50\">\n";
print "</a>\n";
print "<div class=\"caption\>\n";
print "<div class=\"image-title\">$_</div>";
print "<div class=\"download\">\n";
print "<a href=\"../images/featured/small_featured/$_\">Download Original</a>\n";
print "</div>\n";
print "</div>\n";
print "</li>\n";
}
print <<endHTML;
</ul>
<a class="pageLink next" style="visibility: hidden;" href="#" title="Next Page"></a>
</div>
</div>
<div class="content">
<div class="slideshow-container">
<div id="controls" class="controls"></div>
<div id="loading" class="loader"></div>
<div id="slideshow" class="slideshow"></div>
</div>
<div id="caption" class="caption-container">
<div class="photo-index"></div>
</div>
</div>
<!-- End Gallery Html Containers -->
<div style="clear: both;"></div>
</div>
</div>
<div id="footer">© 2010 Sarah Paugh</div>
<script type="text/javascript">
jQuery(document).ready(function(\$) {
// We only want these styles applied when javascript is enabled
\$('div.content').css('display', 'block');
// Initially set opacity on thumbs and add
// additional styling for hover effect on thumbs
var onMouseOutOpacity = 0.67;
\$('#thumbs ul.thumbs li, div.navigation a.pageLink').opacityrollover({
mouseOutOpacity: onMouseOutOpacity,
mouseOverOpacity: 1.0,
fadeSpeed: 'fast',
exemptionSelector: '.selected'
});
// Initialize Advanced Galleriffic Gallery
var gallery = \$('#thumbs').galleriffic({
delay: 2500,
numThumbs: 10,
preloadAhead: 10,
enableTopPager: false,
enableBottomPager: false,
imageContainerSel: '#slideshow',
controlsContainerSel: '#controls',
captionContainerSel: '#caption',
loadingContainerSel: '#loading',
renderSSControls: true,
renderNavControls: true,
playLinkText: 'Play Slideshow',
pauseLinkText: 'Pause Slideshow',
prevLinkText: '‹ Previous Photo',
nextLinkText: 'Next Photo ›',
nextPageLinkText: 'Next ›',
prevPageLinkText: '‹ Prev',
enableHistory: true,
autoStart: false,
syncTransitions: true,
defaultTransitionDuration: 900,
onSlideChange: function(prevIndex, nextIndex) {
// 'this' refers to the gallery, which is an extension of $('#thumbs')
this.find('ul.thumbs').children()
.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
.eq(nextIndex).fadeTo('fast', 1.0);
// Update the photo index display
this.\$captionContainer.find('div.photo-index')
.html('Photo '+ (nextIndex+1) +' of '+ this.data.length);
},
onPageTransitionOut: function(callback) {
this.fadeTo('fast', 0.0, callback);
},
onPageTransitionIn: function() {
var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
var nextPageLink = this.find('a.next').css('visibility', 'hidden');
// Show appropriate next / prev page links
if (this.displayedPage > 0)
prevPageLink.css('visibility', 'visible');
var lastPage = this.getNumPages() - 1;
if (this.displayedPage < lastPage)
nextPageLink.css('visibility', 'visible');
this.fadeTo('fast', 1.0);
}
});
/**************** Event handlers for custom next / prev page links **********************/
gallery.find('a.prev').click(function(e) {
gallery.previousPage();
e.preventDefault();
});
gallery.find('a.next').click(function(e) {
gallery.nextPage();
e.preventDefault();
});
/****************************************************************************************/
/**** Functions to support integration of galleriffic with the jquery.history plugin ****/
// PageLoad function
// This function is called when:
// 1. after calling $.historyInit();
// 2. after calling $.historyLoad();
// 3. after pushing "Go Back" button of a browser
function pageload(hash) {
// alert("pageload: " + hash);
// hash doesn't contain the first # character.
if(hash) {
\$.galleriffic.gotoImage(hash);
} else {
gallery.gotoIndex(0);
}
}
// Initialize history plugin.
// The callback is called at once by present location.hash.
\$.historyInit(pageload, "advanced.html");
// set onlick event for buttons using the jQuery 1.3 live method
\$("a[rel='history']").live('click', function(e) {
if (e.button != 0) return true;
var hash = this.href;
hash = hash.replace(/^.*#/, '');
// moves to a new page.
// pageload is called at once.
// hash don't contain "#", "?"
\$.historyLoad(hash);
return false;
});
/****************************************************************************************/
});
</script>
</body>
</html>
endHTML
</color>
if i replace the for loop with the following it works fine:
<color red>
<li>
<a class="thumb" href="../images/featured/small_featured/Spino 182.2.jpg" title="Spino 182.2.jpg">
<img src="../images/featured/small_featured/Spino 182.2.jpg" alt="Spino 182.2.jpg" / width="50" height="50">
</a>
<div class="caption">
<div class="image-title">Spino 182.2.jpg</div>
<div class="image-desc">Description</div>
<div class="download">
<a href="../images/featured/small_featured/Spino 182.2.jpg">Download Original</a>
</div>
</div>
</li>
<li>
<a class="thumb" href="../images/featured/small_featured/Spino 179.jpg" title="Spino 179.jpg">
<img src="../images/featured/small_featured/Spino 179.jpg" alt="Spino 179.jpg" width="50" height="50">
</a>
<div class="caption">
<div class="image-title">Spino 179.jpg</div>
<div class="image-desc">Description</div>
<div class="download">
<a href="../images/featured/small_featured/Spino 179.jpg">Download Original</a>
</div>
</div>
</li>
</color>
here is the code:
<color red>
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
print <<startHTML;
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Galleriffic | Custom layout with external controls</title>
<link rel="stylesheet" href="css/basic.css" type="text/css" />
<link rel="stylesheet" href="css/galleriffic-5.css" type="text/css" />
<!-- <link rel="stylesheet" href="css/white.css" type="text/css" /> -->
<link rel="stylesheet" href="css/black.css" type="text/css" />
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery.history.js"></script>
<script type="text/javascript" src="js/jquery.galleriffic.js"></script>
<script type="text/javascript" src="js/jquery.opacityrollover.js"></script>
<!-- We only want the thunbnails to display when javascript is disabled -->
<script type="text/javascript">
document.write('<style>.noscript { display: none; }</style>');
</script>
</head>
<body>
<div id="page">
<div id="container">
<h1><a href="index.html">Galleriffic</a></h1>
<h2>Alternate layout using custom previous/next page controls</h2>
<!-- Start Advanced Gallery Html Containers -->
<div class="navigation-container">
<div id="thumbs" class="navigation">
<a class="pageLink prev" style="visibility: hidden;" href="#" title="Previous Page"></a>
<ul class="thumbs noscript">
startHTML
opendir(DIR, "../images/featured/small_featured");
my @dir = readdir DIR;
for (@dir){
chomp;
next if $_ =~ /^\./;
print "<li>\n";
print "<a class=\"thumb\" href=\"../images/featured/small_featured/$_\" title=\"$_\">\n";
print "<img src=\"../images/featured/small_featured/$_\" alt=\"$_\" width=\"50\" height=\"50\">\n";
print "</a>\n";
print "<div class=\"caption\>\n";
print "<div class=\"image-title\">$_</div>";
print "<div class=\"download\">\n";
print "<a href=\"../images/featured/small_featured/$_\">Download Original</a>\n";
print "</div>\n";
print "</div>\n";
print "</li>\n";
}
print <<endHTML;
</ul>
<a class="pageLink next" style="visibility: hidden;" href="#" title="Next Page"></a>
</div>
</div>
<div class="content">
<div class="slideshow-container">
<div id="controls" class="controls"></div>
<div id="loading" class="loader"></div>
<div id="slideshow" class="slideshow"></div>
</div>
<div id="caption" class="caption-container">
<div class="photo-index"></div>
</div>
</div>
<!-- End Gallery Html Containers -->
<div style="clear: both;"></div>
</div>
</div>
<div id="footer">© 2010 Sarah Paugh</div>
<script type="text/javascript">
jQuery(document).ready(function(\$) {
// We only want these styles applied when javascript is enabled
\$('div.content').css('display', 'block');
// Initially set opacity on thumbs and add
// additional styling for hover effect on thumbs
var onMouseOutOpacity = 0.67;
\$('#thumbs ul.thumbs li, div.navigation a.pageLink').opacityrollover({
mouseOutOpacity: onMouseOutOpacity,
mouseOverOpacity: 1.0,
fadeSpeed: 'fast',
exemptionSelector: '.selected'
});
// Initialize Advanced Galleriffic Gallery
var gallery = \$('#thumbs').galleriffic({
delay: 2500,
numThumbs: 10,
preloadAhead: 10,
enableTopPager: false,
enableBottomPager: false,
imageContainerSel: '#slideshow',
controlsContainerSel: '#controls',
captionContainerSel: '#caption',
loadingContainerSel: '#loading',
renderSSControls: true,
renderNavControls: true,
playLinkText: 'Play Slideshow',
pauseLinkText: 'Pause Slideshow',
prevLinkText: '‹ Previous Photo',
nextLinkText: 'Next Photo ›',
nextPageLinkText: 'Next ›',
prevPageLinkText: '‹ Prev',
enableHistory: true,
autoStart: false,
syncTransitions: true,
defaultTransitionDuration: 900,
onSlideChange: function(prevIndex, nextIndex) {
// 'this' refers to the gallery, which is an extension of $('#thumbs')
this.find('ul.thumbs').children()
.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
.eq(nextIndex).fadeTo('fast', 1.0);
// Update the photo index display
this.\$captionContainer.find('div.photo-index')
.html('Photo '+ (nextIndex+1) +' of '+ this.data.length);
},
onPageTransitionOut: function(callback) {
this.fadeTo('fast', 0.0, callback);
},
onPageTransitionIn: function() {
var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
var nextPageLink = this.find('a.next').css('visibility', 'hidden');
// Show appropriate next / prev page links
if (this.displayedPage > 0)
prevPageLink.css('visibility', 'visible');
var lastPage = this.getNumPages() - 1;
if (this.displayedPage < lastPage)
nextPageLink.css('visibility', 'visible');
this.fadeTo('fast', 1.0);
}
});
/**************** Event handlers for custom next / prev page links **********************/
gallery.find('a.prev').click(function(e) {
gallery.previousPage();
e.preventDefault();
});
gallery.find('a.next').click(function(e) {
gallery.nextPage();
e.preventDefault();
});
/****************************************************************************************/
/**** Functions to support integration of galleriffic with the jquery.history plugin ****/
// PageLoad function
// This function is called when:
// 1. after calling $.historyInit();
// 2. after calling $.historyLoad();
// 3. after pushing "Go Back" button of a browser
function pageload(hash) {
// alert("pageload: " + hash);
// hash doesn't contain the first # character.
if(hash) {
\$.galleriffic.gotoImage(hash);
} else {
gallery.gotoIndex(0);
}
}
// Initialize history plugin.
// The callback is called at once by present location.hash.
\$.historyInit(pageload, "advanced.html");
// set onlick event for buttons using the jQuery 1.3 live method
\$("a[rel='history']").live('click', function(e) {
if (e.button != 0) return true;
var hash = this.href;
hash = hash.replace(/^.*#/, '');
// moves to a new page.
// pageload is called at once.
// hash don't contain "#", "?"
\$.historyLoad(hash);
return false;
});
/****************************************************************************************/
});
</script>
</body>
</html>
endHTML
</color>
if i replace the for loop with the following it works fine:
<color red>
<li>
<a class="thumb" href="../images/featured/small_featured/Spino 182.2.jpg" title="Spino 182.2.jpg">
<img src="../images/featured/small_featured/Spino 182.2.jpg" alt="Spino 182.2.jpg" / width="50" height="50">
</a>
<div class="caption">
<div class="image-title">Spino 182.2.jpg</div>
<div class="image-desc">Description</div>
<div class="download">
<a href="../images/featured/small_featured/Spino 182.2.jpg">Download Original</a>
</div>
</div>
</li>
<li>
<a class="thumb" href="../images/featured/small_featured/Spino 179.jpg" title="Spino 179.jpg">
<img src="../images/featured/small_featured/Spino 179.jpg" alt="Spino 179.jpg" width="50" height="50">
</a>
<div class="caption">
<div class="image-title">Spino 179.jpg</div>
<div class="image-desc">Description</div>
<div class="download">
<a href="../images/featured/small_featured/Spino 179.jpg">Download Original</a>
</div>
</div>
</li>
</color>