Joyful Note の全ての書き込みに「[返信]」のリンクをつける方法

Joyful Note という掲示板のスクリプトがあります。
Joyful Note : KENT-WEB CGI/Perl フリーソフト

デフォルトの設定では、スレッドに対してツリーを構成するための「[返信]」リンクが、親の書き込みにしかつきません。これを子の書き込みにもつけるためには、まず、以下の3点をjoyful.cgi(初期名称)に追記します。

1. sub bbs_list の変数の定義部分、コメントの「# 記事展開」の箇所に、リンク先指定用の変数(配列)を定義します。ここでは %reno を定義しました。

# 記事展開
my ($i,@log,%res,%nam,%sub,%dat,%com,%url,%col,%ext,%imw,%imh);
my %reno; # 追記部分

2. 同じく sub bbs_list でのコメント「# ハッシュ化」の箇所に、先ほど定義した変数 %reno に対して値を代入します。

# ハッシュ化
$nam{$no} = $name;
$sub{$no} = $sub;
$dat{$no} = $date;
$com{$no} = $com;
$col{$no} = $col;
$url{$no} = $url;
$reno{$no} = $reno; # 追記部分

3. 同じく sub bbs_list での「# 記事表示」部分内、「my $tmp = $resloop;」からの置換の羅列のところに、$renoの置換を付け加えます。

my $tmp = $resloop;
$tmp =~ s/!sub!/$sub{$r}/g;
$tmp =~ s/!name!/$nam{$r}/g;
$tmp =~ s/!url!/$url{$r}/g;
$tmp =~ s/!date!/$dat{$r}/g;
$tmp =~ s/!num!/$r/g;
$tmp =~ s/!comment!/$com{$r}/g;
$tmp =~ s/!reno!/$reno{$r}/g; # 追記部分
$res .= $tmp;

以上で joyful.cgi への追記は終わりです。続いてテンプレートの res.html に追記をします。テンプレートである bbs.html を全く同じように真似して、「返信」を含む行を追加しただけです。

<div class="reslog">
	<strong>!sub!</strong>
	<div class="rescom">!comment!</div>
	<div class="art-info">
		!icon:user_com.png! <b>!name!</b> !icon:time.png! !date! !url! <span class="num">No.!num!</span>
		[<a href="#" onclick="window.open('index.cgi?res=!reno!','_self')">返信</a>]
	</div>
</div>

これで全ての追加は完了です。掲示板をリロードすると、全ての書き込みに対して「[返信]」のリンクがついているはずです。レスが多くついたスレッドに対してレスをする際に、わざわざ親の書き込みまで戻らなくてよくて便利になりました。

Powered by はてなブログ