#!/usr/bin/perl BEGIN { if (exists $ENV{MOD_PERL}){ if (Apache->request->filename() =~ m!(.*[/\\])!){ require Cwd; Cwd::chdir(substr($1,0,-1)); } } } $BASEDIR = "."; $INDEX_X = 7; $INDEX_Y = 7; $INDEX_N = ($INDEX_X * $INDEX_Y) - (($INDEX_X - 2) * ($INDEX_Y -2 )); $TBL_SX = $INDEX_X -2; $TBL_SY = $INDEX_Y -2; $SUM_X = 48; $SUM_Y = 48; $CELLSPC = 8; $TBL_X = ($SUM_X * $INDEX_X)+ ($INDEX_X-1) * $CELLSPC; $PRE_X = ($SUM_X * $TBL_SX) + ($TBL_SX-1) * $CELLSPC; $PRE_Y = ($SUM_Y * $TBL_SY) + ($TBL_SY-1) * $CELLSPC; if( -e "album.conf") { require "./album.conf"; } HttpStart(); GetQueryString(); HtmlOpen(); SWITCH: for ($_) { /INDEX/ && do { Index(); last; }; /VIEW/ && do { View(); last; }; // && do { last; }; } HtmlClose(); exit; ############################################## sub GetQueryString { if( $ENV{'QUERY_STRING'} eq "" ) { $_="INDEX"; return; } @p1 = split(/&/, $ENV{'QUERY_STRING'}); foreach $pair (@p1) { ($name, $val) = split(/=/,$pair); $val =~ tr$\\!\$|<>/"';:$$d; $QS{$name} = $val; # print "$name = $val
"; } if( defined $QS{'index'} ) { $QS{'index'} = abs($QS{'index'}); $_ = "INDEX"; # } elsif( $name eq "edit" ) { # $_ = "EDIT"; } # } elsif( $name eq "view" ) { if( $name eq "view" ) { $_ = "VIEW"; # } elsif( $name eq "memo" ) { # $_ = "MEMO"; } elsif( $name eq "post" ) { $_ = "POST"; } else { $QS{'index'} = 0; $_ = "INDEX"; } } sub Index { opendir(DIR, "$BASEDIR/photo/") or die; @files = sort {$b cmp $a} grep( !/^_|^\.\.?$/, readdir( DIR ) ); closedir(DIR); $allfiles = $#files; if( ($allfiles-1) < $QS{'index'} ) { return }; #BOX Init. for($y=0;$y<$INDEX_Y;$y++) { for($x=0;$x<$INDEX_X;$x++) { $box[$x][$y] = "1"; } } $box[1][1] = -1; # #Make Box # $cnt = 0; #BOX UP for($lc=0;$lc<$INDEX_X;$lc++) { $box[$lc][0] = $files[$QS{'index'}+$cnt++]; } #BOX RIGHT for($lc=1;$lc<$INDEX_Y;$lc++) { $box[$INDEX_X-1][$lc] = $files[$QS{'index'}+$cnt++]; } #BOX UNDER for($lc=$INDEX_X-2;$lc>=0;$lc--) { $box[$lc][$INDEX_Y-1] = $files[$QS{'index'}+$cnt++]; } #BOX LEFT for($lc=$INDEX_Y-2;$lc>0;$lc--) { $box[0][$lc] = $files[$QS{'index'}+$cnt++]; } print "\n"; # if($QS{'index'} eq "" ) { # print "\n"; # } for($cnt=0,$y=0;$y<$INDEX_Y;$y++) { print ""; for($x=0;$x<$INDEX_X;$x++,$cnt++) { if($box[$x][$y] eq "1" ) { next; } if($box[$x][$y] eq "" ) { print ""; next;} if($box[$x][$y] == -1 ) { print ""; } else { print ""; } } print "\n"; } print "
"; # open( MEMO, "memo"); # print while ; # close(MEMO); # print "


"; if( $QS{'preview'} ne "" ) { FileCount($QS{'preview'}); # print ""; print ""; } print "

\n"; print "
\n"; $a = int((($allfiles-1)/$INDEX_N)+1); $b = int(sqrt($a*2)+0.5); for($cnt=0;$cnt<$a && $b > 0;$b--) { for($c=0;$c<$b && $cnt<$a ;$c++,$cnt++) { printf("%02d ",$cnt*$INDEX_N, $cnt+1); } print "
"; } print "

\n"; print "

"; # Text no display 2004/11/18 # if( -e "memo" ) { # print "Text
"; # } print "Return
\n"; } sub View { local $filename = $QS{'view'}; FileCount($filename); if( $filename =~ m/\./ ) { $filename = $`; } print <= $cnt = $QS{'view'}

END # memo no display 2004/11/18 # open(HTML, "$BASEDIR/text/$filename.html"); # print while ; # close(HTML); print < END } sub FileCount { local $filename = $_[0],$cnt; if( $filename =~ m/\./ ) { $filename = $`; } open(CNT, "+< $BASEDIR/cnt/$filename"); $cnt = ; flock(CNT, 2); $cnt++; seek(CNT, 0, 0); print CNT "$cnt\n"; truncate(CNT, tell(CNT)); close(CNT); } sub HttpStart { print "Content-type: text/html; charset=Shift_JIS\n\n"; print "\\n\n"; } sub HtmlOpen { print < EOP open(fn, "$BASEDIR/title"); print ""; print "
"; print "\n"; print "

"; print ; print "
\n"; print "
\n"; close(fn); } sub HtmlClose { print "
\n\n"; }