p3220001.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220002.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220003.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220004.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220005.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220006.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220007.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220008.jpg     last modified: Tue Jul 1 09:27:30 2008

 
p3220009.jpg     last modified: Tue Jul 1 09:27:30 2008


#! /usr/bin/perl

# make-image-page

# makes an HTML index file for a web image directory so you can see
# your images all at once instead of having to grovel through them.

# Copyright 1998 Electric Lichen L.L.C.
# Don Marti <dmarti@electriclichen.com>

#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.

# height attribute for image tags
my $HEIGHT = 60;

# what to call the index -- don't use this file name for other things
# and this script will never blow away one of your html files.

my $INDEX_NAME = "image_index.html";

# to make image_index.html act like a real index.html either add it to
# the DirectoryIndex directive, or make the appropriate symlink.

# body tag -- change background, text, and link colors here.
my $BODYTAG = 
  qq{<body bgcolor="#000000" text="#ffffff" link="#ffffff" vlink="#ffffff">
   };

######################################################################
###                 no user-servicable parts below                 ###
######################################################################

my $directory = $ARGV[0];

# chop off extra / at end of directory name
$directory = $1 if $directory =~ /(.+)\/+/;

if (!$directory) {
  print STDERR "Usage: $0 [directory]\n";
  exit 1;
}

if (!-d $directory) {
  print STDERR "$directory is not a directory.\n";
  exit 1;
}

if (!-w $directory) {
  print STDERR "Image directory $directory is not writable.\n";
  exit 1;
}

index_directory($directory);
exit 0;

sub index_directory {
  my $directory = shift;
  opendir (IMAGEDIR, $directory) or die $!;
  my @images = sort { lc($a) cmp lc($b) } readdir(IMAGEDIR);
  closedir IMAGEDIR or die $!;
  
  # always descend recursively...
  foreach my $file (@images) {
    next if $file =~ /^\.+/;
    index_directory("$directory/$file") if -d "$directory/$file" and 
      ((-w "$directory/$file/$INDEX_NAME") or
       (!-e "$directory/$file/$INDEX_NAME" and -w "$directory/$file")
      );
  }
  
  open (INDEX, "> $directory/$INDEX_NAME") or die 
    "Can't open $directory/$INDEX_Name for writing: $!";
  print INDEX head($directory);

  foreach my $image (@images) {
    next if $image =~ /^\.+$/ or $image =~ /\.html$/;

    $mod_time = localtime(time() - -M $image);
   
    if (-d "$directory/$image") {
      print INDEX qq{ <p><a href="$image/$INDEX_NAME"> 
			$image (directory)
		      </a>
		    }
    }
    else {
      print INDEX qq{
	<p><a href="$image"> 
	  <img src="$image" height="$HEIGHT" border="0">&nbsp;
	<br>$image &nbsp; &nbsp; last modified: $mod_time</a>
      }
    }
  }
  print INDEX foot();
  close INDEX or die $!;
}

sub foot {
  join ('',
	'<hr><pre>',
	script(),
	'</pre>',
	qq{ </body></html>
	  }
      )
}

sub head {
  my $directory = $_[0];
  qq{
    <html><head><title>Images in $directory
    </title></head>

      $BODYTAG
  }
}

sub script {
  open (SCRIPT, $0) or die $!;
  my $content = join ('', <SCRIPT>);
  close SCRIPT;
  $content =~ s/&/&amp;/g;
  $content =~ s/</&lt;/g;
  $content =~ s/>/&gt;/g;
  return $content
}