#!/usr/bin/perl #----------------------------------------------------------- # 私本管理GOOUT for SmartPhone By:EKAKIN #----------------------------------------------------------- # #----------------------------------------------------------- # 動作環境 #----------------------------------------------------------- # Perl 5.8.1 以降。 # Perl 5.8.0 は文字コードの扱いに問題があるため、 # 文字化けを起こす等の不具合が発生する可能性があります # なお、jcode.plは使用しなくなりました #----------------------------------------------------------- # #----------------------------------------------------------- # 改版履歴 #----------------------------------------------------------- #2015.01.10 Ver2.1.0 modified by shela # 私本管理 Ver.4のバックアップデータ(*.shn,*.csv)に対応 # ISBNのチェックディジット計算のバグ修正 # バックアップデータのヘッダ行を無視するように修正 # 一括画像ローカル保存プラグインに対応 #2015.01.10 Ver2.0.1 検索時、特定の文字列が文字化けして正しく検索できない不具合を修正 # 画像が正しく表示されない不具合を修正 #2011.08.07 Ver2.0.0 改名 # UI変更 #2010.08.11 Ver1.0.0 公開 # 【Thank you for kmzw】 #----------------------------------------------------------- use strict; use utf8; use CGI qw/:standard :netscape/; use Encode qw/decode_utf8/; use HTML::Entities qw/encode_entities/; my $TITLE = "私本管理GOOUT"; # タイトル my $VERSION = "Ver 2.1.0"; # バージョン my $SCRIPT_NAME = "$ENV{'SCRIPT_NAME'}"; # CGIファイル名 #----------------------------------------------------------- # カスタマイズ #----------------------------------------------------------- my $PAGE = 20; # 1ページに表示する件数 # 「No Image」画像の場所を指定します # cgiと同じ場所の場合は「noimage.jpg」と指定します # @niftyの場合は「http://homepage○.nifty.com/○○○/ディレクトリ/noimage.jpg」で指定します # ↓このままでも使用できますが、変更される可能性があります my $NOIMAGE = "http://homepage1.nifty.com/EKAKIN/cgi/goout/noimage.jpg"; # For iPhone my $ICON_PATH = "http://homepage1.nifty.com/EKAKIN/cgi/goout/iphone_icon.png"; my $LINK_URL = "http://www.amazon.co.jp/gp/aw/d/"; my $AMAZON_TAG = ""; #----------------------------------------------------------- # 検索ファイル名(フォルダと対になるように追加してください) #----------------------------------------------------------- my @FILE = ( "123.csv" ); #----------------------------------------------------------- # 検索フォルダ名(ファイルと対になるように追加してください) #----------------------------------------------------------- my @DIR = ( "デフォルト" ); #=========================================================== # 実行処理 #=========================================================== my %FORM = (); my %FDATA = (); my @FDATAindex = (); # フラグ付きUTF-8文字列をフラグなしにして出力させる binmode STDOUT, ":utf8"; # フォームの内容取得 &formDataGet; if ( $ENV{'REQUEST_METHOD'} eq "POST" || defined( $FORM{page} ) && $FORM{page} ne "" ) { # 検索結果画面表示 &htmlResult; } else { # 検索画面表示 &htmlStart; } exit; #----------------------------------------------------------- # 検索画面表示 #----------------------------------------------------------- sub htmlStart { &htmlHeader01; &htmlSearch; # 検索画面 &htmlFooter01; } #----------------------------------------------------------- # 検索結果表示 #----------------------------------------------------------- sub htmlResult { &htmlHeader02; &runSearch; # 検索処理 &htmlFooter02; } #----------------------------------------------------------- # スタイルシート #----------------------------------------------------------- sub Style { print <<"_EOF_"; _EOF_ } #----------------------------------------------------------- # HTML ヘッダ初期 #----------------------------------------------------------- sub htmlHeader01 { print "Content-type: text/html\n\n"; print <<"_EOF_"; $TITLE _EOF_ &Style; print <<"_EOF_"; _EOF_ } #----------------------------------------------------------- # HTML ヘッダ検索後 #----------------------------------------------------------- sub htmlHeader02 { print "Content-Type: text/html\n\n"; print <<"_EOF_"; $TITLE _EOF_ &Style; print <<"_EOF_"; _EOF_ } #----------------------------------------------------------- # HTML フッタ初期 #----------------------------------------------------------- sub htmlFooter01 { print << "_EOF_";
EKAKIN'S SCRIBBLE PAGE
_EOF_ } #----------------------------------------------------------- # HTML フッタ検索後 #----------------------------------------------------------- sub htmlFooter02 { print << "_EOF_"; _EOF_ } #----------------------------------------------------------- # HTML 検索画面 #----------------------------------------------------------- sub htmlSearch { print <<"_EOF_";
_EOF_ } #----------------------------------------------------------- # 検索内容取得 #----------------------------------------------------------- sub formDataGet { # 入力パラメータ取得 foreach my $key (param) { $key = decode_utf8($key); my $value = decode_utf8( param($key) ); if ( $key =~ /data(\d+)/ ) { my $index = $1; if ( $index eq "0" ) { # ISBN $FDATA{$index} = &isbn_change($value); } else { # ISBN以外は小文字にして保持 $FDATA{$index} = lc($value); } unless ( $FDATA{$index} eq "" ) { push( @FDATAindex, $index ); } } else { # ジャンル、検索タイプ(AND/OR)、ページ $FORM{$key} = $value; } } } #----------------------------------------------------------- # 検索処理 #----------------------------------------------------------- sub runSearch { # ファイルの読み込み if ( !open( FH, "<:raw", $FILE[ $FORM{file} ] ) ) { &error( "エラー", "私本管理バックアップファイルが読み込めません" ); return; } # 初期ページを設定 if ( !defined( $FORM{page} ) || $FORM{page} eq "" ) { $FORM{page} = 1; } my $maxRec = $FORM{page} * $PAGE; # 表示レコード MAX my $minRec = $maxRec - $PAGE + 1; # 表示レコード MIN print "\n"; } else { print "\n
該当データ:${count}件
\n"; } print "
\n"; print "\n"; if ( defined( $FDATA{0} ) && $FDATA{0} ne "" ) { print "\n"; } if ( defined( $FDATA{1} ) && $FDATA{1} ne "" ) { print "\n"; } if ( defined( $FDATA{5} ) && $FDATA{5} ne "" ) { print "\n"; } if ( defined( $FDATA{20} ) && $FDATA{20} ne "" ) { print "\n"; } print "\n"; print "\n"; print "
\n"; if ( $flg == 1 ) { my $p = $FORM{page}; my $maxPage = int( $count / $PAGE ); if ( $count % $PAGE != 0 ) { $maxPage++; } # 指定ページが範囲外の場合は先頭または最終ページにする if ( $p < 1 ) { $p = 1; } elsif ( $p > $maxPage ) { $p = $maxPage; } print "\n"; print "\n"; } } #----------------------------------------------------------- # ISBN変換 #----------------------------------------------------------- sub isbn_change { my $isbn = $_[0]; #ISBNは-を削除 x、+、*はXとみなす $isbn =~ s/-//g; $isbn =~ tr/+*x/X/; return $isbn; } #----------------------------------------------------------- # エラーメッセージ #----------------------------------------------------------- sub error { my @msg = @_; print "\n"; }