#! /usr/bin/perl # # album2.cgi # 写真タイトルのリストとそれぞれをコメント付きで表示。 # # 2.022 : 12/27/08 : ディレクトリ指定のリンクエラーを修正 # 2.021 : 12/21/08 : 簡易モードにディレクトリ指定のオプションを追加 # 2.020 : 1/7/08 : 画像クリックによるリンクエラーを修正 # 2.019 : 12/29/06 : head_insert_enを修正 # 2.018 : 2/18/06 : 戻るリンク名のオプションを追加 # 2.017 : 10/2/05 : Copyrightにリンクを追加 # 2.016 : 9/7/05 : cryptを修正 # 2.015 : 8/15/05 : 簡易モード、リストファイル処理を若干修正 # 2.014 : 8/12/05 : 簡易モードを追加 # 2.013 : 7/31/05 : リストファイルなしでもデフォルトでCGI起動するように変更 # 2.012 : 7/24/05 : 写真をクリックすると次の写真を表示するよう変更 # 2.011 : 2/21/05 : 管理用セットアップのパスワード認証でまれにミスするバグを修正 # 2.01 : 1/22/05 : 次の写真が無い時にプリロードをしないように修正 # 2.0 : 5/27/04 : Created # # $Id: album2.cgi,v 1.30 2008/12/26 18:51:19 Hideki Kanayama Exp $ # Copyright(c) 2004-2008 Hideki Kanayama All rights reserved use CGI::Carp qw(fatalsToBrowser); my $cgilib_en = 1 if (-e "cgi-lib.pl"); require "cgi-lib.pl" if ($cgilib_en); $setupfile = "album_setup.pl"; $admindat="albumadmin.txt"; # このスクリプト名 $script = "album2.cgi"; $version='2.022'; $reservedyear='2004-2008'; $lang = 0; #### 環境設定 ここから ############## # 画像があるディレクトリ(album2.cgiからみた相対パス)、httpからの指定でも可 $imagedir = "."; # アルバムのリストファイル。写真のファイル名、タイトル、コメントをこの中に書く $file = "album.lst"; # 戻り先のリンク。 (album2.cgiから見た相対パスとファイル名、絶対パス、httpからの指定でも可) $back = "../.."; $backname = "戻る"; # アルバムタイトルの設定 $title='サンプルアルバム'; $title_color="#000000"; $title_size='+2'; $title_face=''; # メニューの位置 1:左 0:右 $menu_locate=0; # メニューテキストエリアのサイズ $menu_height=18; # background $bgimage_en=0; $bgcolor="#ffffff"; $bgimagefile=""; #スタイルシート 1:on 0:off $style_sheet_en = 0; $style_sheet = ' A:link {text-decoration: none} A:visited {text-decoration: none} A:active {text-decoration: none} '; #
〜内に挿入できる構文 1:on, 0:off $head_insert_en = 0; $head_insert = ''; #### 環境設定 ここまで ############## require "$setupfile" if (-e "$setupfile"); if ($cgilib_en == 0){ &miniparse; } else { $parse_admin = ' &ReadParse; %in=&mbdecode(%in); if (! -e "$admindat"){ if ($in{mode} eq \'adminpwd\'){ &wradminpwd; } else { &setadminpwd; } }'; eval $parse_admin; } if ($bgimage_en == 1){ $bgimage = "background=\"$bgimagefile\""; } else { $bgimage = "bgcolor=\"$bgcolor\""; } if ($in{mode} eq 'setup'){ if ($cgilib_en == 1){ &setadminpwd; } else { &error("cgi-lib.plがありません。"); } } elsif ($in{mode} eq 'setupform'){ &setupform; } elsif ($in{mode} eq 'makesetup'){ &makesetup; } else { &dispphoto; } exit; sub dispphoto { $imagedir = $in{dir} ? $in{dir} : $imagedir; if (!open(FILE,"< $file")){ opendir(IMGDIR,"$imagedir") or &error("ディレクトリ$imagedirが開けません"); @filelist = grep !/^\./, readdir IMGDIR; closedir(IMGDIR); @newlist = ( grep /\.jpe?g$/i, @filelist); @newlist = (@newlist, grep /\.gif$/i, @filelist); @newlist = (@newlist, grep /\.png$/i, @filelist); @newlist = (@newlist, grep /\.bmp$/i, @filelist); @newlist = (@newlist, grep /\.tiff?$/i, @filelist); @newlist = (@newlist, grep /\.ief$/i, @filelist); @newlist = (@newlist, grep /\.cgm$/i, @filelist); @newlist = (@newlist, grep /\.pcx$/i, @filelist); @filelist = sort @newlist; &error("画像ファイルが$imagedirにありません。") if ($#filelist == -1); if ($in{image} eq ''){ $image = $filelist[0]; $previmage = ''; $nextimage = $filelist[1]; } else { $image = $in{image}; my $hitnum; foreach (@filelist){ last if (/^$in{image}$/); $hitnum++; } $previmage = $filelist[$hitnum-1] unless ($hitnum == 0); $nextimage = $filelist[$hitnum+1] unless ($hitnum >= $#filelist); } $title = $image; } else { @filelist =\n"; print "
\n" if ($cgilib_en != 0); print "
| $comment | \n"; print "\n"; } else { print " | \n"; print " | $comment | \n"; } print "
| $nextlink1 | \n";
if ($menu_locate == 0){
&listform;
}
print "