
#●
#---------------------------------------------------------------------------------------
# 名称     | View_Message
# Version  | 1.80
# 処理名   | (匿メール処理付き)一覧処理
# 動作内容 | 抽出されたログを表示する
# 備考     | 画面内に文字を挿入したい場合は、このサブルーチン内の◆印(２箇所用意)の場所に直接書きこむ
# 引数     | なし
# 戻り値   | なし
#
sub View_Message {

	&Search; # 抽出処理へ

	if (!$log) { # ログモード以外はカーソルフォーカス位置の決定

		if ($COOKIE{'NAME'} eq '') { $js = 'onLoad="document.WriteForm.NAME.focus();"'; }
		elsif ($COOKIE{'EMAIL'} eq '') { $js = 'onLoad="document.WriteForm.EMAIL.focus();"'; }
		else { $js = 'onLoad="document.WriteForm.TITLE.focus();"'; }

		$body =~ s/<body/<body $js/; # <body>タグに挿入
	}

	if ($in{'page_control'} != 0) { $jsback = '〔<A HREF="JavaScript:history.back()">前に戻る</A>〕'; } # 最初の画面以外は戻るリンクを用意

	if (!$log) { # ログモード以外は空き容量の処理

		$size = -s $message_file; # メッセージファイルのサイズ取得
		$free = $maxsize - $size; # 最大記録サイズとの差を得る

		if ($free < 0) { $free = 0; } # 空き容量がマイナス表示にならないようにする
		1 while $free =~ s/(.*\d)(\d\d\d)/$1,$2/g; # 桁カンマを入れる処理

		if ($size > $maxsize) { $free = "《書き込み不可》空き容量 $free bytes free"; }
		else { $free = "空き容量 $free bytes free"; }
	}
	else { $free = "《ログモード》"; }

	#-------------------------------------------------------------------------------
	# 表示処理

	&Html_head; # ヘッダの出力
	print "$body\n";

	# ◆ ↓画面上部に挿入する文字列(HTML形式)は、print <<'EOF'; の次の行から EOF の直前までの間に直接書いてください.
	print <<'EOF';
	<h1>簡易ＢＢＳ</h1>




EOF
	if (!$log) { # ログモードでない場合は投稿フォームを用意

		# ↓投稿フォーム
		print <<"EOF";
		<p>
		<form action="$ENV{'SCRIPT_NAME'}?log=$cmd{'log'}" method=POST name="WriteForm">
		<input type=hidden name="action" value="Write_Message">
		<p>
		<table cellpadding=2 cellspacing=2 border=0>
		<tr>
		<th bgcolor=#ff99cc>名前</th>
		<td colspan=2><input type=text name="NAME" value="$COOKIE{'NAME'}" size=30><font size=-1><input type=checkbox name="cookie1" value="1" checked>名前を保存</font></td>
		</tr>
		<tr>
		<th bgcolor=#ffffcc>Ｅメール</th>
		<td colspan=2><input type=text name="EMAIL" value="$COOKIE{'EMAIL'}" size=40><font size=-1><input type=checkbox name="cookie2" value="1" checked>Ｅメールを保存<br>
		<input type=radio name="toku_email" value="1" checked>公開しないでメールを受け取りたい <input type=radio name="toku_email" value="">公開する(記入なき場合は無効) </font></td>
		</tr>
		<tr>
		<th bgcolor=#669999>タイトル</th>
		<td colspan=2><input type=text name="TITLE" value="" size=50></td>
		</tr>
		<tr>
		<th bgcolor=#6699cc>本文</th>
		<td colspan=2><font size=-1>
		<input type=radio name="MODE" value="2">改行無効
		<input type=radio name="MODE" value="1" checked>改行有効
		<input type=radio name="MODE" value="0">図/表\モード</font><br>
		<textarea name="VALUE" rows=6 cols=70 wrap=off></textarea><br>
		<font size=-1><input type=checkbox name="LINK" value="1" checked>内容にURLがあればリンクさせる</font></td>
		</tr>
		<tr>
		<th bgcolor=#ff9966>パスワード</th>
		<td><input type=password name="PASSWD" value="$COOKIE{'PASSWD'}" size=10><font size=-1><input type=checkbox name="cookie3" value="1" checked>パスワードを保存</font></div></td>
		<td bgcolor=#ff6633 align=center>　<input type=submit name="preview" value="？プレビュー">　　<input type=submit value="  ○ 投稿  "> <input type=reset value="× リセット" onClick="message(); return f">　</td>
		</tr>
		</table>
		</form>
EOF
	}

	# ↓更新・終了リンク
	print <<"EOF";
	<p>
	<hr noshade>
	<table width=100% cellpadding=0 cellspacing=0 border=0><tr>
	<td><font size=+1><strong>$jsback〔<a href="$ENV{'SCRIPT_NAME'}?log=$cmd{'log'}">更新</a>〕〔<a href="$bye">終了</a>〕</strong></font></td>
	<td align=right>$free</td>
	</tr></table>
	<hr noshade>
EOF
	$err = join (',',@ERR);
	if (@ERR) {

		print "※ 次の番号の記事は削除できませんでした: $err<br>\n";
		print "※ <font size=-1>理由 (A)パスワードが違います (D)既に削除されています (N)存在しない番号または異常です</font><hr noshade>\n";
	}

	print <<"EOF";
	<p>
	<form action="$ENV{'SCRIPT_NAME'}?log=$cmd{'log'}" method=POST>
EOF
	foreach $message (@MESSAGE) {

		$message =~ s/\n//; # 改行を削除
		($number,$pwd,$date,$name,$email,$host,$title,$mode,$link,$toku_email,$value) = split(/\t/,$message,11);

		if ($toku_email eq '' && $email =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/) { $name = "$name &lt;<a href=\"mailto:$email\">$email</a>&gt;"; } # Ｅメール記載があればリンクする
		elsif ($toku_email eq '1' && $email =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/) {

			$uname = $name;
			$uname =~ s/([^0-9A-Za-z_])/"%" . unpack("H2",$1)/ge; # URLエンコード
			$name = "$name &lt;<a href=\"$ENV{'SCRIPT_NAME'}?log=$cmd{'log'}&num=$number&name=$uname\">匿メール送信</a>&gt;";
		}

		if ($host eq '') { $viewhost = 0; } # ホスト名の記録がない場合は表示しない
		if (!$viewhost) { $host = ''; } else { $host = "- $host"; }

		if (!$log) { $delsw = "<input type=checkbox name=\"delete\" value=\"$number\">削除"; }
		else { $delsw = ""; }

		# ↓記事一覧
		print <<"EOF";
		<table cellpadding=0 cellspacing=1 border=0 width=100%>
		<tr><td bgcolor=$cellcolor><font size=+1 color=$subject_color>【$number】<strong>$title</strong></font></td>
		</tr></table>
		<font size=-1 color=$info_color>$date - $name $host $delsw</font><p>
EOF
		if ($link) { # URLをリンクする

			$value =~ s/&gt;/\t/g;
			$value =~ s/(https?|ftp|gopher|telnet|whois|news)\:([\w|\:\!\#\$\%\=\&\-\^\`\\\|\@\~\[\{\]\}\;\+\*\,\.\?\/]+)/<a href=\"$1\:$2\" target=\"_blank\">$1\:$2<\/a>/ig;
			$value =~ s/\t/&gt;/g;
		}

		if ($mode == 0) { print "<pre><tt>"; } # 図/表モード(0)

		if ($mode == 0) { print $value; } # 図/表モード(0)
		elsif ($mode == 1) { $value =~ s/\r/<br>\r/g; print $value; } # 改行有効(1)
		else { $value =~ s/\r//g; print $value; } # 改行無効(2)

		if ($mode == 0) { print "</tt></pre><p>\n"; } # 図/表モード(0)

		print "<p>\n";
	}

	# ↓次のページ・削除ボタン
	print <<"EOF";
	<hr noshade>
	<table cellpadding=2 cellspacing=2 border=3><tr>
EOF

	if ($in{'str'} ne '') { 

		if ($next_num ne '') {

			print "<input type=hidden name=\"Next:$next_control\" value=\"\">\n";
			print "<input type=hidden name=\"boolean\" value=\"$in{'boolean'}\">\n";
			print "<input type=hidden name=\"str\" value=\"$in{'str'}\">\n";
			print "<td><input type=submit value=\"↓次のページ\"></td>\n";
		}
	}
	elsif ($next_control ne '') { print "<td><input type=submit name=\"Next:$next_control\" value=\"↓次のページ\"></td>\n"; }

	if (@MESSAGE && !$log) { print "<td>パスワード <input type=password name=\"PASSWD\" value=\"$COOKIE{'PASSWD'}\" size=10> <input type=submit value=\"削除\"></td>\n"; }
	if ($in{'page_control'} != 0) { print "<td><font size=+1><strong>$jsback</strong></font></td>\n"; }

	print <<"EOF";
	</tr></table>
	</form><p>
EOF
	# ◆ ↓この位置が、画面下部となる.
	print <<'EOF';




EOF
	print <<"EOF";
	<font size=-1>[<a href="$ENV{'SCRIPT_NAME'}?log=$cmd{'log'}&action=PasswordForm">管理用</a>]</font>
	<p>
	<div align=right><a href="http://www.rescue.ne.jp/" target="_top"><img src="$ENV{'SCRIPT_NAME'}\?img=copyright" border=0 alt="MiniBBS-kit"></a></div>
	<p></body></html>
EOF

}#End_of_View_Message

