#!/usr/local/bin/perl # ###################################################################### ### ### ### CGI辞書システム T-Dictionary Ver.0.92 ### [2/8] コメント (tdpcom.cgi) ### (c) 1996-2002 Takahiro Nishida ### http://www.mytools.net/ ### ### ###################################################################### # ### 変数設定部 (詳細は上記ページをご覧下さい) ###################### ### 変数設定部 (ここまで)########################################### require './tdllib.pl'; require './tdlprs.pl'; require './tdlout.pl'; &main; sub main{ &tdllib'lock; &get_variables; &open_datafile; &check_input; &exec_action; &update_datafile; &tdllib'unlock; &show_html; } ########## 各種変数の取得 sub get_variables{ } ########## 入力のチェック sub check_input{ &tdllib'parseform; ### 主要なものだけ $mode = $tdllib'F{'mode'}; $cwid = $tdllib'F{'cwid'}; } ########## データファイルのオープン sub open_datafile{ &tdllib'openfile($tdllib'datcom, *coms); } ########## メイン sub exec_action{ ### mode に応じた処理 if($mode eq 'write'){ &exec_comment; } $mode = 'top'; } ######### 書込み記録 sub exec_comment{ ### 更新 &tdlprs'update_comment(*coms); ### フラグ $upflag_coms = 1; } ########## ファイルを更新する sub update_datafile{ ($upflag_coms) && (&tdllib'updatefile($tdllib'datcom, *coms)); } ################################### 表示関数 ################################### ########## メイン sub show_html{ ### 改めてハッシュするため全てクリア &tdlprs'clear_all_hash(); ### テンプレートパーツ読込 defined(%PT_COM) || &tdlout'read_template_parts($tdllib'tplcom, *PT_COM); # 表示用ハッシュ $C{'cwid'} = $tdllib'F{'cwid'}; $C{'cgiurl'} = $tdllib'cgiurl; $C{'cname'} = $tdllib'F{'cname'}; $C{'copyright'} = $tdllib'copyright; ### 閲覧モード if($cwid){ &html_comment; } else{ &html_allcomment; } print "Content-type: text/html\n\n"; &tdlout'merge_template($tdllib'tplcom, '', '', *C); } ########## コメント一覧表示 sub html_comment{ ### 必須 ($cwid =~ /^\d+/) || &tdllib'error("TC-1301", 0, "単語IDが不正です", "($cwid)"); ### 単語情報の取得 ($line = &tdlprs'hash_dic_wid($cwid)) || &tdllib'error("TC-1302", 0, "指定された単語IDが見つかりません", $cwid); &tdlprs'parse_line_dic($line, *C); ### 「戻る」のリンク $C{'wurl'} = "$tdllib'htmlurl/tdv$C{'idxdec'}.html#$C{'wid'}"; ### フォーム $C{'body'} .= &tdlout'merge_template_parts($PT_COM{'comform'}, *C); ### タイトル $C{'wordtitle'} = "「$C{'word'}」への"; ### コメント表示 &tdlprs'array_com($C{'wid'}, *subs); foreach(@subs){ undef(%CP); &tdlprs'parse_line_com($_, *CP); $CP{'ctime'} = &tdllib'get_time($C{'stime'}, 3); $C{'coms'} .= &tdlout'merge_template_parts($PT_COM{'coms'}, *CP); } $C{'body'} .= &tdlout'merge_template_parts($PT_COM{'comment'}, *C); } ########## 全コメント一覧表示 sub html_allcomment{ local($comcnt, $line); local(%CP, %BBL); ### タイトル $C{'wordtitle'} = "最新 $tdllib'MAX_ALL_COMMENTS 件の"; ### コメントリスト $comcnt = 0; foreach(@coms){ undef(%CP); &tdlprs'parse_line_com($_, *CP); $b_cwid = $CP{'cwid'}; ### 単語詳細 unless($b_link = $BBL{$b_cwid}){ $BBL{$b_cwid} = "-"; if($line = &tdlprs'hash_dic_wid($b_cwid)){ &tdlprs'parse_line_dic($line, *CP) || next; $BBL{$b_cwid} = "($CP{'ruby'})"; } $b_link = $BBL{$b_cwid}; } # 無かったら無視して次へ(削除済み単語の可能性もあるので)) ($b_link ne "-") || next; $CP{'ctime'} = &tdllib'get_time($CP{'ctime'}, 3); $CP{'cword'} = $b_link; $C{'coms'} .= &tdlout'merge_template_parts($PT_COM{'coms'}, *CP); (++$comcnt < $tdllib'MAX_ALL_COMMENTS) || last; } ### 「戻る」のリンク $C{'wurl'} = "$tdllib'htmlurl/tdsblk.html"; $C{'body'} .= &tdlout'merge_template_parts($PT_COM{'comment'}, *C); }