#!/usr/local/bin/perl

###############################################################################
#
#　　　　　　	シンクタンク協議会 TOPICS CGI 05.04.01
#
#				original-edit by shuji nabara
#
###############################################################################

require './jcode.pl';

require './cgi-lib.pl';

$body = '<BODY BGCOLOR="#FFFFFF">';

$title = 'シンクタンク協議会 TOPICS';

$SCRIPT = './topics.cgi';

$TOP_PAGE = '../index.html';

$DISPLAY = "25";

$COOKDATA="SHINKTANK";

$PASSWD = "shinShin";

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
$year = $year - 100;
$date_num = sprintf("%02d%02d%02d%02d%02d%02d",$year,$mon +1,$mday,$hour,$min,$sec);


# ---------------------------------------------------------------------------------
# フォームデコード
# ---------------------------------------------------------------------------------

&ReadParse(*FORM);
	while (($key,$val) = each %FORM) {

	if ($key eq "PICTURE") {
			
			$FORM{$key} = $val;
			
	}else{
			
			# シフトJISコードに変換
			&jcode'convert(*val, 'euc');
			
			#$val =~ s/</&lt\;/g;
			#$val =~ s/>/&gt\;/g;
			$val =~ s/\r\n/<BR>/g;
			$val =~ s/\r/<BR>/g;
			$val =~ s/\n/<BR>/g;
			#$val =~ s/"/&quot;/g;


			
			$FORM{$key} = $val;
			
			#削除キーを配列に代入
			if ($key eq 'target') { push(@RM,$val); }

	}

}


#クッキー設定
if($FORM{passwd_flag} eq "1"){
&cookie;
$cook="password\:$FORM{'password'}";
print "Set-Cookie: $COOKDATA=$cook; path=/\n";
#expires=$date_gmt;

print "Location: $SCRIPT\n\n";
}

$cookies = $ENV{'HTTP_COOKIE'};
@pairs = split(/;/,$cookies);
foreach $pair (@pairs) {

	($name, $value) = split(/=/, $pair);
	$name =~ s/ //g;
	$DUMMY{$name} = $value;
}

@pairs = split(/,/,$DUMMY{$COOKDATA});

foreach $pair (@pairs) {

	($name, $value) = split(/:/, $pair);
	$COOKIE{$name} = $value;
}


unless($FORM{file} ne "" && $FORM{mode} eq "list" || $FORM{file} ne "" && $FORM{mode} eq "preview" || $FORM{file} ne "" && $FORM{mode} eq "back" || $FORM{file} ne "" && $FORM{mode} eq "index"){

if($COOKIE{password} ne "$PASSWD"){&passwd;}

}

sub passwd {

&header;
print <<EOF;

<TABLE BORDER="0" WIDTH="555" CELLPADDING="0" CELLSPACING="0">
<TR>
<TD>
<BR>
パスワードを入力してください。<BR>
<FORM ACTION="$SCRIPT" METHOD="POST">
<INPUT TYPE="hidden" NAME="passwd_flag" VALUE="1">
<INPUT TYPE="password" NAME="password" VALUE="" SIZE="10">
<INPUT TYPE="submit" VALUE="認証">
</FORM>
</TD>
</TR>
</TABLE>

EOF
&footer;
exit;
}



# -----------------------------------------------------------------------------
# データベースオープン＆エンジン
# -----------------------------------------------------------------------------

if($FORM{file} eq "topics"){
$DB = './topics.dat';
$img_dir = "./img/";
$img_dir2 = "./img/";
$title2="管理画面";
$title3="topics";
$COLOR1="#1C579B";
$COLOR2="#D2F2FD";
$title_image="bokin_news_title.gif";
$btn_image="link_btn.gif";
$index_header = "./index_head.html";
$index_footer = "./index_foot.html";
$topics_header = "./topics_head.html";
$topics_footer = "./topics_foot.html";
}



#☆テンプレートの読み込み
open(IN, $index_header);
@IHeader = <IN>;
close(IN);

open(IN, $index_footer);
@IFooter = <IN>;
close(IN);

open(IN, $topics_header);
@THeader = <IN>;
close(IN);

open(IN, $topics_footer);
@TFooter = <IN>;
close(IN);





if (!open(IN,"$DB")) {
#&top;
}
@DATA_BASE = <IN>;
close(IN);

#ソート番号順に並び替え
@DATA_BASE = sort { (split(/\t/,$b))[1] <=> (split(/\t/,$a))[1] } @DATA_BASE;

#selectが選ばれている際の抽出処理
if($FORM{select} =~ /\d{10}/){
$match_flag = 0;
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
if ($NO eq $FORM{select}) {
@N_DATA_BASE = $LINE;
$match_flag = 1;
last;
}
}
if($match_flag == 0){&error('Select_Error1','該当のデータがありません。');}
}


#バックナンバー表示の場合フラグの立っていないものだけにする。
if($FORM{mode} eq "back"){
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
if($FLAG ne "1"){
push(@B_DATA_BASE,$LINE);
}
}
@DATA_BASE = "0";
@DATA_BASE = @B_DATA_BASE;
}


#pageパラメータからの抽出処理
if($FORM{page} eq ""){ $FORM{page} = "1"; }
$line_count = "1";
foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
if($line_count >= $FORM{page} && $FORM{page} + $DISPLAY > $line_count){
push(@L_DATA_BASE,$LINE);
}
$line_count++;
}

@DATA_BASE = sort { (split(/\t/,$b))[1] <=> (split(/\t/,$a))[1] } @DATA_BASE;
@L_DATA_BASE = sort { (split(/\t/,$b))[1] <=> (split(/\t/,$a))[1] } @L_DATA_BASE;

# -----------------------------------------------------------------------------
# メイン処理
# -----------------------------------------------------------------------------

if		($FORM{mode} 	eq 	"regist") 	{&form_regist;	}
elsif	($FORM{mode} 	eq 	"preview") 	{&form_preview;	}
elsif	($FORM{mode} 	eq 	"change") 	{&form_change;	}
elsif	($FORM{mode} 	eq 	"list") 	{&list;			}
elsif	($FORM{action}	eq	"regist") 	{&regist;		}
elsif	($FORM{action} 	eq	"delete") 	{&delete;		}
elsif	($FORM{action} 	eq	"change") 	{&change;		}
elsif	($FORM{mode} 	eq 	"index")	{&index;		}
elsif	($FORM{mode} 	eq 	"back")		{&back;			}
elsif	($FORM{mode} 	eq 	"html")		{&html;			}
elsif	($FORM{mode} 	eq 	"menu")		{&menu;			}
else									{print "Location:$SCRIPT?mode=menu&file=topics\n\n";}

# ------------------------------------------------------------------------------------
# トップメニュールーチン
# ------------------------------------------------------------------------------------

sub top {

&header;

print <<EOF;

<h3>$title</h3>
分類を選んでください。<BR>
<li><A HREF="$SCRIPT?mode=menu&file=japanese">Japanese</A><BR>
<li><A HREF="$SCRIPT?mode=menu&file=english">English</A><BR>

EOF

&footer;

exit;
}

# ------------------------------------------------------------------------------------
# メニューフォームルーチン
# ------------------------------------------------------------------------------------

sub menu {

$DATA_BASE = @DATA_BASE;
$PAGE_LINK = $DATA_BASE/$DISPLAY;
$amari = $DATA_BASE%$DISPLAY;
if($amari ne "0"){ $PAGE_LINK++; }
$L_DATA_BASE = @L_DATA_BASE;
$END_COUNT = $FORM{page}+$L_DATA_BASE-1;



&header;

print <<EOF;
<center>
<BR><BR>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="750"><TR BGCOLOR="#FFFFFF">
<TD><FONT SIZE="3">■$title <FONT COLOR="#FF0000">$title2</FONT> [全 $DATA_BASE 件]</FONT></TD>
<TD ALIGN="RIGHT">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="*">
<TR>
<!--//
<TD><A HREF="$SCRIPT?mode=index&file=$FORM{file}" TARGET="blank">[トップデータを\表\示]</A>&nbsp;<A HREF="$SCRIPT?mode=back&file=$FORM{file}" TARGET="blank">[バックナンバーを\表\示]</A>&nbsp;</TD>
//-->
<FORM ACTION="$SCRIPT" METHOD="POST">
<TD>
<INPUT TYPE="HIDDEN" NAME="file" VALUE="$FORM{file}">
<INPUT TYPE="HIDDEN" NAME="mode" VALUE="html">
<!--//<INPUT TYPE="SUBMIT" NAME="" VALUE="トップページに反映する">//-->
</TD>
</FORM>
<FORM METHOD="post" ACTION="$SCRIPT">
<TD>
<INPUT TYPE=HIDDEN NAME="mode" VALUE="regist">
<INPUT TYPE=HIDDEN NAME="file" VALUE="$FORM{file}">
<INPUT TYPE="submit" VALUE=" 新規登録 ">
</TD></FORM>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>

<HR SIZE="1" noshade WIDTH="750"><BR>

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="750"><TR BGCOLOR="#FFFFFF">
<TD>
<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=2 WIDTH="750"><TR BGCOLOR="$COLOR1" ALIGN="CENTER">
<TD><FONT COLOR="#FFFFFF">順序</FONT></TD><TD><FONT COLOR="#FFFFFF">入力日</FONT></TD><!--//<TD><FONT COLOR="#FFFFFF">カテゴリ</FONT></TD>//--><TD><FONT COLOR="#FFFFFF">タイトル</FONT></TD><TD><FONT COLOR="#FFFFFF">画像</FONT></TD><TD><FONT COLOR="#FFFFFF">修正｜削除｜プレビュー</FONT></TD>
EOF

foreach $LINE (@L_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;

if($FLAG == "1"){
print "<TR BGCOLOR=\"$COLOR2\" ALIGN=\"CENTER\">\n";
}else{
print "<TR BGCOLOR=\"#EFEFEF\" ALIGN=\"CENTER\">\n";
}


print "<TD>$SORT</TD>\n";

$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);

print "<TD>$NO1月$NO2日</TD>\n";

#if($SHURUI == 1){$SHURUI_TXT = "";}
#if($SHURUI == 2){$SHURUI_TXT = "";}
#if($SHURUI == 3){$SHURUI_TXT = "";}
#if($SHURUI == 4){$SHURUI_TXT = "";}

#print "<TD>$SHURUI_TXT</TD>\n";

print "<TD ALIGN=\"LEFT\">$MIDASHI</TD>\n";

print "<TD><A HREF=\"$img_dir/$PICTURE\" TARGET=\"_blank\">$PICTURE</A></TD>\n";

print "<TD ALIGN=\"CENTER\"><TABLE WIDTH=\"*\" CELLPADDING=\"0\" CELLSPACING=\"0\" BORDER=\"0\"><TR><FORM METHOD=\"POST\" ACTION=\"$SCRIPT\"><TD>\n";

print "<INPUT TYPE=\"hidden\" NAME=\"mode\" VALUE=\"change\"><INPUT TYPE=\"hidden\" NAME=\"file\" VALUE=\"$FORM{file}\"><INPUT TYPE=\"hidden\" NAME=\"select\" VALUE=\"$NO\"><INPUT TYPE=\"SUBMIT\" VALUE=\"修正\"></TD>\n";

print "</FORM><FORM METHOD=\"POST\" ACTION=\"$SCRIPT\" NAME=\"myform$NO\" onSubmit=\"return Check()\"><TD>\n";

print "<INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"delete\"><INPUT TYPE=\"hidden\" NAME=\"target\" VALUE=\"$NO\"><INPUT TYPE=\"hidden\" NAME=\"file\" VALUE=\"$FORM{file}\"><INPUT TYPE=\"SUBMIT\" VALUE=\"削除\"></TD>\n";

print "</FORM><FORM METHOD=\"POST\" ACTION=\"$SCRIPT\"><TD>\n";

print "<INPUT TYPE=\"hidden\" NAME=\"mode\" VALUE=\"preview\"><INPUT TYPE=\"hidden\" NAME=\"select\" VALUE=\"$NO\"><INPUT TYPE=\"hidden\" NAME=\"file\" VALUE=\"$FORM{file}\"><INPUT TYPE=\"SUBMIT\" VALUE=\"詳細ページ\"></TD>\n";

print "</FORM></TR></TABLE></TD></TR>\n";

}

print <<EOF;
</TABLE></TD></TR></TABLE>

<BR>
<HR SIZE="1" noshade WIDTH="750">

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="750"><TR BGCOLOR="#FFFFFF">
<TR><TD>Page：
EOF

####################　▼ページコントロール　####################
for ($i=1;$i<=$PAGE_LINK;$i++){
$ii=$i-1;
$PAGE_START = $DISPLAY*$ii+1;
print "<A HREF = \"$SCRIPT?file=$FORM{file}&mode=$FORM{mode}&page=$PAGE_START\">$i</A> ";
}

#次のページ数があるかどうか判定
if($DATA_BASE > $END_COUNT){
$NEXT_COUNT = $END_COUNT+1;

print <<EOF;
&nbsp;<A HREF="$SCRIPT?file=$FORM{file}&mode=$FORM{mode}&page=$NEXT_COUNT">[次のページへ]</A><BR>
EOF
}
####################　▲ページコントロール　####################

print <<EOF;
</TD>
<TD ALIGN="RIGHT" nowrap>
<!--//<A HREF="$SCRIPT?mode=top">[分類選択画面にもどる]</A>//-->
</TD>
</TR>
</TABLE>

</center>
EOF


&footer;

exit;

}


# ------------------------------------------------------------------------------------
# トップページプレビュールーチン
# ------------------------------------------------------------------------------------

sub index {

print "Content-type: text/html\n\n";

print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML LANG="ja">
<HEAD>
<TITLE>地方シンクタンク協議会</TITLE>
<META name="description" content="ホームページ紹介文">
<META name="keywords" content="キーワード">
<META name="robots" content="index,follow">
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
<SCRIPT TYPE="text/javascript" SRC="../fontsize.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" SRC="../action.js"></SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#333333" LINK="#0033FF" ALINK="#FF3300" VLINK="#9933CC" TOPMARGIN="0" LEFTMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0">

<IMG SRC="../../img/none.gif" ALT="" BORDER="0" WIDTH="1" HEIGHT="10"><BR>

<TABLE BORDER="0" WIDTH="440" CELLSPACING="5" CELLPADDING="0">

EOF


foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);

$NO0 = substr($NO,0,2);
$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);


if($FLAG == "1"){
print <<EOF;
<!-- 記事1件 -->
<TR VALIGN="top">
<TD NOWRAP><FONT CLASS="j12" COLOR="#FF6600">20$NO0.$NO1.$NO2</FONT></TD>
<TD><IMG SRC="img/none.gif" ALT="" BORDER="0" WIDTH="8" HEIGHT="10"></TD>
EOF

if($SHURUI ne ""){
print "<TD WIDTH=\"99%\"><FONT CLASS=\"j12\"><A HREF=\"$SHURUI\" TARGET=\"_parent\">$MIDASHI</A></FONT></TD>";
}else{
if($HONBUN ne ""){print "<TD WIDTH=\"99%\"><FONT CLASS=\"j12\"><A HREF=\"$SCRIPT?file=$FORM{file}&mode=preview&select=$NO\" TARGET=\"_parent\">$MIDASHI</A></FONT></TD>";}
else{print "<TD WIDTH=\"99%\"><FONT CLASS=\"j12\">$MIDASHI</FONT></TD>";}
}

print <<EOF;
</TR>
<!-- 記事1件 -->
EOF
}

}


print <<EOF;
</TABLE>


</BODY>
</HTML>

EOF

exit;
}

# ------------------------------------------------------------------------------------
# ＨＴＭＬ出力ルーチン
# ------------------------------------------------------------------------------------

sub html {

if(!open(OUT,">$TOP_PAGE")) {
	&error('html_outfile_Error','トップページＨＴＭＬファイルのオープンに失敗しました.');
}

flock(OUT,2);

print OUT @IHeader;

foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);

$NO0 = substr($NO,0,2);
$NO1 = substr($NO,2,2);
$NO2 = substr($NO,4,2);


if($FLAG == "1"){


print OUT <<EOF;
<TR VALIGN="top">
<TD NOWRAP><FONT CLASS="j10">2005.03.01</FONT></TD>
EOF



if($SHURUI ne ""){
print OUT "<TD width=\"99%\"><FONT CLASS=\"j10\"><A HREF=\"$SHURUI\" TARGET=\"_top\">$MIDASHI</A></FONT></TD>";
}else{
if($HONBUN ne ""){print OUT "<TD width=\"99%\"><FONT CLASS=\"j10\"><A HREF=\"$SCRIPT?file=$FORM{file}&mode=preview&select=$NO\" TARGET=\"_top\">$MIDASHI</A></FONT></TD>";}
else{print OUT "<TD width=\"99%\"><FONT CLASS=\"j10\">$MIDASHI</FONT></TD>";}
}

print OUT <<EOF;
</TR>
EOF
}
}


print OUT @IFooter;

flock(OUT,8);
close(OUT);

print "Location: ../../index.html\n\n";

exit;
}


# ------------------------------------------------------------------------------------
# バックナンバールーチン
# ------------------------------------------------------------------------------------

sub back {

$DATA_BASE = @DATA_BASE;
$PAGE_LINK = $DATA_BASE/$DISPLAY;
$amari = $DATA_BASE%$DISPLAY;
if($amari ne "0"){ $PAGE_LINK++; }
$L_DATA_BASE = @L_DATA_BASE;
$END_COUNT = $FORM{page}+$L_DATA_BASE-1;


print "Content-type: text/html\n\n";

print @THeader;

print<<EOF;
<TABLE BORDER="0" WIDTH="550" CELLSPACING="5" CELLPADDING="0"><TR><TD>
<FONT SIZE="2" COLOR="#99CC66" CLASS="bun3">■</FONT><FONT SIZE="2" COLOR="#333333" CLASS="bun3">バックナンバー[全$DATA_BASE件]</FONT><BR></TD></TR></TABLE>

<TABLE BORDER="0" WIDTH="550" CELLSPACING="5" CELLPADDING="0">
EOF

foreach $LINE (@L_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
print <<EOF;
<TR VALIGN="top">
<TD><FONT SIZE="1" COLOR="#333333" CLASS="bun3"><A HREF="$SCRIPT?file=$FORM{file}&mode=preview&select=$NO">$MIDASHI</A></FONT></TD>
</TR>
EOF
}


print<<EOF;
</TABLE>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="550"><TR BGCOLOR="#FFFFFF">
<TR><TD><FONT SIZE="2" COLOR="#99CC66" CLASS="bun3">Page：
EOF

####################　▼ページコントロール　####################
for ($i=1;$i<=$PAGE_LINK;$i++){
$ii=$i-1;
$PAGE_START = $DISPLAY*$ii+1;
print "<A HREF = \"$SCRIPT?file=$FORM{file}&mode=$FORM{mode}&page=$PAGE_START\">$i</A> ";
}

#次のページ数があるかどうか判定
if($DATA_BASE > $END_COUNT){
$NEXT_COUNT = $END_COUNT+1;

print <<EOF;
&nbsp;<A HREF="$SCRIPT?file=$FORM{file}&mode=$FORM{mode}&page=$NEXT_COUNT">[次のページへ]</A><BR>
EOF
}
####################　▲ページコントロール　####################

print <<EOF;
</FONT></TD>
</TR>
</TABLE>
EOF

print @TFooter;

exit;
}


# ------------------------------------------------------------------------------------
# 登録フォームルーチン
# ------------------------------------------------------------------------------------

sub form_regist {

foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
#最大ソート番号割出
if($SORT > $MAX_SORT_NO){$MAX_SORT_NO = "$SORT";}
}
$MAX_SORT_NO++;

&header;

print <<EOF;
<CENTER>
<BR><BR>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="700">
<TR><TD ALIGN="LEFT">■新規登録 $title2</TD>
</TR>
</TABLE>

<HR SIZE=1 NOSHADE WIDTH="700">
<BR>

<TABLE BORDER=1 CELLPADDING=5 CELLSPACING=0 WIDTH="700">
<TR><FORM METHOD="post" ACTION="$SCRIPT" ENCTYPE="multipart/form-data">
<TD WIDTH="200"><INPUT TYPE=HIDDEN NAME=action VALUE=regist><INPUT TYPE=HIDDEN NAME=file VALUE=$FORM{file}>
\表\示用番号
</TD>
<TD>
<INPUT TYPE="text" NAME="SORT" VALUE="$MAX_SORT_NO" SIZE="20">
</TD>
</TR>
<TR><TD WIDTH="200">
トップページ\表\示フラグ
</TD>
<TD>
<INPUT TYPE="checkbox" NAME="FLAG" VALUE="1">
</TD>
</TR>
<TR><TD WIDTH="200">
別ページリンク
</TD>
<TD>
<INPUT TYPE="text" NAME="SHURUI" VALUE="" SIZE="70">
</TD>
</TR>
<TR><TD WIDTH="200">
見出しテキスト
</TD>
<TD>
<INPUT TYPE="text" NAME="MIDASHI" VALUE="" SIZE="70">
</TD>
</TR>

<!--//
<TR><TD WIDTH="200">
説明テキスト（トップ用）
</TD>
<TD>
<TEXTAREA NAME="DATE" COLS="50" ROWS="4">
</TEXTAREA>
</TD>
</TR>
//-->

<TR><TD WIDTH="200">
本文（詳細ページ用）
</TD>
<TD>
<TEXTAREA NAME="HONBUN" COLS="50" ROWS="10">
</TEXTAREA>
</TD>
</TR>
<TR><TD WIDTH="200">
写真キャプション
</TD>
<TD>
<TEXTAREA NAME="BIKOU" COLS="50" ROWS="4">
</TEXTAREA>
</TD>
</TR>
<TR><TD WIDTH="200">
写真(130KBまで)
</TD>
<TD>
<INPUT TYPE="file" NAME="PICTURE" VALUE="" SIZE="50">
</TD>
</TR>
<!--//
<TR><TD WIDTH="200">
写真説明
</TD>
<TD>
<TEXTAREA NAME="SETSUMEI" COLS="50" ROWS="2">
</TEXTAREA>
</TD>
</TR>
//-->
<TR><TD WIDTH="200">
リンク先
</TD>
<TD>
<INPUT TYPE="text" NAME="LINKURL" SIZE="70" VALUE="">
</TD>
</TR>
<TR><TD WIDTH="200">
申し込みフォームフラグ
</TD>
<TD>
<INPUT TYPE="checkbox" NAME="LINKTXT" VALUE="1">
</TD>
</TR>
</TABLE>
<BR>
<HR SIZE=1 NOSHADE WIDTH="700">

<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 WIDTH="700">
<TR><TD ALIGN="RIGHT">
<INPUT TYPE="submit" VALUE=" 登 録 "><INPUT TYPE="button" VALUE=" 戻 る " onClick="history.back()">
</TD>
</FORM>
</TR>
</TABLE>

</CENTER>
EOF

&footer;

exit;

}



# --------------------------------------------------------------------------------
# 変更フォームルーチン
# --------------------------------------------------------------------------------

sub form_change {

foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
}


$DATE =~ s/<BR>/\n/g;
$HONBUN =~ s/<BR>/\n/g;
$SETSUMEI =~ s/<BR>/\n/g;
$BIKOU =~ s/<BR>/\n/g;

&header;

print <<EOF;

<CENTER>
<BR>
<BR>
<TABLE BORDER="0" WIDTH="700" CELLSPACING="0" CELLPADDING="0">
<TR><TD ALIGN="LEFT">
■修正 $title2
</TD>
</TR>
</TABLE>

<HR SIZE="1" NOSHADE WIDTH="700">
<BR>
<TABLE BORDER=1 CELLPADDING=5 CELLSPACING=0 WIDTH="700">
<TR><FORM METHOD="post" ACTION="$SCRIPT" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="select" VALUE="$NO">
<INPUT TYPE=HIDDEN NAME=action VALUE=change>
<INPUT TYPE=HIDDEN NAME=file VALUE=$FORM{file}>
<INPUT TYPE="hidden" NAME="N_NO" VALUE="$NO">
<TD WIDTH="200">
\表\示用番号
</TD>
<TD>
<INPUT TYPE="text" NAME="N_SORT" VALUE="$SORT" SIZE="20">
</TD>
</TR>
<TR><TD WIDTH="200">
トップページ\表\示フラグ
</TD>
<TD>
EOF

if($FLAG == "1"){
print "<INPUT TYPE=\"checkbox\" NAME=\"N_FLAG\" VALUE=\"1\" CHECKED>";
}else{
print "<INPUT TYPE=\"checkbox\" NAME=\"N_FLAG\" VALUE=\"1\">";
}

print <<EOF;
</TD>
</TR>
<TR><TD WIDTH="200">
別ページリンク
</TD>
<TD>
<INPUT TYPE="text" NAME="N_SHURUI" VALUE="$SHURUI" SIZE="70">
</TD>
</TR>
<TR><TD WIDTH="200">
見出しテキスト
</TD>
<TD>
<INPUT TYPE="text" NAME="N_MIDASHI" VALUE="$MIDASHI" SIZE="70">
</TD>
</TR>

<!--//
<TR><TD WIDTH="200">
説明テキスト（トップ用） 
</TD>
<TD>
<TEXTAREA NAME="N_DATE" COLS="50" ROWS="4">
$DATE</TEXTAREA>
</TD>
</TR>
//-->

<TR><TD WIDTH="200">
本文（詳細ページ用） 
</TD>
<TD>
<TEXTAREA NAME="N_HONBUN" COLS="50" ROWS="10">
$HONBUN</TEXTAREA>
</TD>
</TR>
<TR><TD WIDTH="200">
写真キャプション
</TD>
<TD>
<TEXTAREA NAME="N_BIKOU" COLS="50" ROWS="4">
$BIKOU</TEXTAREA>
</TD>
</TR>
<TR><TD WIDTH="200">
写真(130KBまで) <BR><FONT COLOR="FF0000">変更する場合、画像選択してください</FONT>
</TD>
<TD>
<INPUT TYPE="file" NAME="PICTURE" VALUE="" SIZE="50">
</TD>
</TR>
</TR>
<!--//
<TR><TD WIDTH="200">
写真説明
</TD>
<TD>
<TEXTAREA NAME="N_SETSUMEI" COLS="50" ROWS="2">
$SETSUMEI</TEXTAREA>
</TD>
</TR>
//-->
<TR><TD WIDTH="200">
リンク先
</TD>
<TD>
<INPUT TYPE="text" NAME="N_LINKURL" VALUE="$LINKURL" SIZE="50">
</TD>
</TR>

<TR><TD WIDTH="200">
申し込みフォームフラグ
</TD>
<TD>
EOF

if($LINKTXT == "1"){
print "<INPUT TYPE=\"checkbox\" NAME=\"N_LINKTXT\" VALUE=\"1\" CHECKED>";
}else{
print "<INPUT TYPE=\"checkbox\" NAME=\"N_LINKTXT\" VALUE=\"1\">";
}

print <<EOF;
</TD>
</TR>

</TABLE>
<BR>
<HR SIZE="1" NOSHADE WIDTH="700">


<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 WIDTH="700">
<TR><TD ALIGN="RIGHT">
<INPUT TYPE="submit" VALUE=" 修 正 "><INPUT TYPE="button" VALUE=" 戻 る " onClick="history.back()">
</TD>
</FORM>
</TR>
</TABLE>

</CENTER>

EOF


&footer;

exit;

}



# -------------------------------------------------------------------------------
# プレビュールーチン
# -------------------------------------------------------------------------------

sub form_preview {

print "Content-type: text/html\n\n";
print @THeader;

foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;
}

if($FORM{select} ne "all"){

print <<EOF;
<IMG SRC="img/none.gif" ALT="" BORDER="0" WIDTH="1" HEIGHT="20"><BR>

<!-- ↓タイトル -->
<TABLE BORDER="0" WIDTH="520" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="13">
<IMG SRC="img/potti.gif" ALT="" BORDER="0" WIDTH="13" HEIGHT="18"></TD>
<TD WIDTH="507">
<FONT CLASS="j14" COLOR="#000000"><STRONG>$MIDASHI</STRONG></FONT></TD>
</TR>
<TR>
<TD COLSPAN="2">
<IMG SRC="img/title_bar.gif" ALT="" BORDER="0" WIDTH="520" HEIGHT="3"></TD>
</TR>
</TABLE>
<!-- ↑タイトル -->
<IMG SRC="img/none.gif" ALT="" BORDER="0" WIDTH="1" HEIGHT="30"><BR>

<TABLE BORDER="0" WIDTH="520" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD>
<DIV STYLE="font-size:12px">
$HONBUN<BR>
</DIV>
EOF



if($PICTURE ne ""){
print <<EOF;
<center>
<IMG SRC="img/none.gif" ALT="" BORDER="0" WIDTH="1" HEIGHT="20"><BR>
<IMG SRC="img/$PICTURE" ALT="" BORDER="0" WIDTH="$W" HEIGHT="$H"><BR>
<FONT CLASS="j10">$SETSUMEI</FONT><BR>
</center>
EOF
}



if($LINKURL ne ""){
print <<EOF;
<!-- ↓リンクボタン -->
<A HREF="$LINKURL" TARGET="_blank"><IMG SRC="img/btn_link.gif" ALT="LINK" BORDER="0" WIDTH="85" HEIGHT="25"></A><BR>
<!-- ↑リンクボタン -->
EOF
}

if($LINKTXT eq "1"){
print <<EOF;
<IMG SRC="img/none.gif" ALT="" BORDER="0" WIDTH="1" HEIGHT="5"><BR>

<table cellpadding="0" cellspacing="0" border="0">
<tr>
<form action="moushikomi_form.cgi" method="post">
<input type="hidden" name="MIDASHI_TITLE" value="$MIDASHI">
<td>
<!-- ↓リンクボタン -->
<INPUT TYPE="image" SRC="img/btn_moushikomi.gif" ALT="申し込みフォームへ" BORDER="0" WIDTH="134" HEIGHT="25" NAME="moushikomi"><BR>
<!-- ↑リンクボタン -->
</td>
</form>
</tr>
</table>
EOF
}

}

print @TFooter;

exit;

}




# --------------------------------------------------------------------------
# 登録処理ルーチン
# --------------------------------------------------------------------------

sub regist {

if($FORM{MIDASHI} eq ""){&error('エラー','タイトルが入力されていません。');}

&upfile();


$REGIST_DATA = "$date_num	$FORM{SORT}	$FORM{MIDASHI}	$FORM{SHURUI}	$FORM{FLAG}	$FORM{DATE}	$FORM{HONBUN}	$filename	$H	$W	$FORM{SETSUMEI}	$FORM{BIKOU}	$FORM{LINKURL}	$FORM{LINKTXT}\n";

if (!open(OUT,">>$DB")) {
	&error('Regist_Error','データベースの読み込みに失敗しました.');
}
#flock(OUT,2);
print OUT $REGIST_DATA;
#flock(OUT,8);
close(OUT);

print "Content-type: text/html\n\n";
print "<b>登録されました。</b><br><br>";
print "<a href=$SCRIPT?mode=menu&file=$FORM{file}>メニュー画面へ戻る</a>";

exit;

}


# ------------------------------------------------------------------------
# 削除ルーチン
# ------------------------------------------------------------------------

sub delete {

$target = join('|',@RM);

foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);

if ($NO =~ /$target/) {
#画像削除
$rcd2= -e "$img_dir2/$PICTURE";
if($rcd2){unlink("$img_dir2/$PICTURE");}

}else{
push(@NEW,$LINE);
}

}



if($target eq ""){
&error("Delete_Error",'何らかの理由で削除できません。');
}

if (!open(OUT,">$DB")) {
	&error('Delete_Error','データベースの読み込みに失敗しました.');
}

#flock(OUT,2);
print OUT @NEW;
#flock(OUT,8);
close(OUT);


print "Content-type: text/html\n\n";
print "<b>削除されました。</b><br><br>";
print "<a href=$SCRIPT?mode=menu&file=$FORM{file}>メニュー画面へ戻る</a>";


exit;

}


# ---------------------------------------------------------------------------
# 変更ルーチン
# ---------------------------------------------------------------------------

sub change {

foreach $LINE (@N_DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
}

if($FORM{PICTURE} ne ""){

#画像削除
$rcd2= -e "$img_dir/$PICTURE";
if($rcd2){unlink("$img_dir/$PICTURE");}

&upfile("change"); $change_flag="1"; $HH=$H; $WW=$W;
}

foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);

if($NO eq $FORM{N_NO}){

unless($change_flag){$WW=$W; $HH=$H;}

#画像変更がある場合新しい画像名を代入
if($update){$PICTURE = $filename;}

$LINE = "$NO	$FORM{N_SORT}	$FORM{N_MIDASHI}	$FORM{N_SHURUI}	$FORM{N_FLAG}	$FORM{N_DATE}	$FORM{N_HONBUN}	$PICTURE	$HH	$WW	$FORM{N_SETSUMEI}	$FORM{N_BIKOU}	$FORM{N_LINKURL}	$FORM{N_LINKTXT}\n";
push(@NEW,$LINE);
}
else{ push(@NEW,$LINE); }
}

@NEW = sort { (split(/\t/,$b))[1] <=> (split(/\t/,$a))[1] } @NEW;

if (!open(OUT,">$DB")) {
	&error('Delete_Error','データベースの読み込みに失敗しました.');
}
#flock(OUT,2);
print OUT @NEW;
#flock(OUT,8);
close(OUT);

print "Content-type: text/html\n\n";
print "<b>変更されました。</b><br><br>";
print "<a href=$SCRIPT?mode=menu&file=$FORM{file}>メニュー画面へ戻る</a>";

exit;

}

# ------------------------------------------------------------------------------------
# リスト形式出力ルーチン
# ------------------------------------------------------------------------------------

sub list {

print "Content-type: text/html\n\n";
print @THeader;

foreach $LINE (@DATA_BASE) {
($NO,$SORT,$MIDASHI,$SHURUI,$FLAG,$DATE,$HONBUN,$PICTURE,$H,$W,$SETSUMEI,$BIKOU,$LINKURL,$LINKTXT) = split(/\t/,$LINE);
chop $LINKTXT;


if($FLAG eq "1"){

print <<EOF;
<!-- ↓ここから１つの表 -->
<TABLE WIDTH="590" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR> 
<TD BGCOLOR="#FFCA95"><IMG SRC="img/spacer.gif" ALT="" WIDTH="15" HEIGHT="15" 

BORDER="0"></TD>
<TD COLSPAN="4"><DIV CLASS="midashi"><STRONG>$MIDASHI</STRONG></DIV></TD>
</TR>
<TR> 
<TD COLSPAN="5" BGCOLOR="#FFCA95"><IMG SRC="img/spacer.gif" ALT="" WIDTH="590" HEIGHT="1" 

BORDER="0"></TD>
</TR>
<TR> 
<TD COLSPAN="5"><IMG SRC="img/spacer.gif" ALT="" WIDTH="590" HEIGHT="5" BORDER="0"></TD>
</TR>
<TR> 
<TD ROWSPAN="4"><IMG SRC="img/spacer.gif" ALT="" WIDTH="15" HEIGHT="1" BORDER="0"></TD>
<TD><IMG SRC="img/spacer.gif" ALT="" WIDTH="80" HEIGHT="20" BORDER="0"></TD>
<TD><IMG SRC="img/spacer.gif" ALT="" WIDTH="260" HEIGHT="1" BORDER="0"></TD>
<TD ROWSPAN="4" ALIGN="RIGHT" VALIGN="TOP">
EOF

if($PICTURE ne ""){
print "<IMG SRC=\"/topics/img/$PICTURE\" ALT=\"\" WIDTH=\"$W\" HEIGHT=\"$H\" BORDER=\"0\">";
}else{
print "<IMG SRC=\"/img/spacer.gif\" ALT=\"\" WIDTH=\"200\" HEIGHT=\"1\" BORDER=\"0\">";
}

print <<EOF;
</TD>
<TD ROWSPAN="4"><IMG SRC="img/spacer.gif" ALT="" WIDTH="15" HEIGHT="1" BORDER="0"></TD>
</TR>
EOF

if($BIKOU ne ""){
print <<EOF;
<TR> 
<TD HEIGHT="25" VALIGN="TOP"><FONT CLASS="f3">● 期　間</FONT></TD>
<TD VALIGN="TOP"><FONT CLASS="f3">$BIKOU</FONT></TD>
</TR>
EOF
}

if($LINKURL ne ""){
print <<EOF;
<TR> 
<TD HEIGHT="25" VALIGN="TOP"><FONT CLASS="f3">● U R L</FONT></TD>
<TD VALIGN="TOP"><FONT CLASS="f3"><A HREF="$LINKURL" TARGET="_blank">$LINKURL</A></FONT></TD>
</TR>
EOF
}

if($HONBUN ne ""){
print <<EOF;
<TR> 
<TD VALIGN="TOP"><FONT CLASS="f3">● Note</FONT></TD>
<TD VALIGN="TOP"><DIV CLASS="lead">$HONBUN</DIV></TD>
</TR>
EOF
}

print <<EOF;
<TR> 
<TD COLSPAN="5"><IMG SRC="img/spacer.gif" ALT="" WIDTH="1" HEIGHT="40" BORDER="0"></TD>
</TR>
</TABLE>
<!-- ↑ここまで１つの表 -->
EOF

}
}

print @TFooter;

exit;


}



# ---------------------------------------------------------------------------
# ヘッダールーチン
# ---------------------------------------------------------------------------

sub header {

print "Content-type: text/html\n\n";

print <<EOF;

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<TITLE>$title</TITLE>

<SCRIPT language="JavaScript">
<!--
function Check(){
		flag = confirm("本当に削除しますか？");
		if (flag==true) return true;
		else 	return false;
}
// -->
</SCRIPT>

<style TYPE="text/css">
<!--
BODY { font-size: 12px;line-height: 18px}
TABLE { font-size: 12px; }
-->
</style>

EOF


if($FORM{mode} eq "list"){

$body='<BODY BGCOLOR="#CFE1F0" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0" BACKGROUND="../../img/background2.gif">';
}


print "</HEAD>";
print "$body";



}




# ---------------------------------------------------------------------------
# フッタールーチン
# ---------------------------------------------------------------------------

sub footer {

print <<EOF;

</BODY>
</HTML>

EOF

}


# ---------------------------------------------------------------------------
# エラールーチン
# ---------------------------------------------------------------------------

sub error {

	print "Content-type: text/html\n\n";
	print "<html><head><title>$title</title></head>\n";
	print "<body>\n";
	print "<h3>$_[0]</h3>\n";
	print "<h3>$_[1]</h3>\n";
	print "※ フォームページへ戻るか、ブラウザの[戻る]ボタンを押して前の画面に移動してください.<p>\n";
	print "<p></body></html>\n";
	
exit;
}


# ---------------------------------------------------------------------------
# 画像アップ
# ---------------------------------------------------------------------------

sub upfile {

$MaxH = "468";
$MaxW = "468";

$change = $_[0];

$count = "0";

	# 画像処理

	foreach (@FORM) {
	$macbin=0;

		if ($_ =~ /(.*)Content-type:(.*)\/(.*)/i) { $tail  = $3; }
		if ($_ =~ /(.*)filename=(.*)/i)		  { $fname = $2; } else { $fname = ""; }
		if ($_ =~ /application\/x-macbinary/i)	  { $macbin= 1; }

	$tail =~ s/\r//g;
	$tail =~ s/\n//g;
	$fname =~ s/\r//g;
	$fname =~ s/\n//g;
	$fname =~ s/\"//g;
	
	if($fname eq ""){ next; }
	


	# ファイル形式を認識
	$flag=0;
	if ($tail =~ /gif/i) { $tail=".gif"; $flag=1; }
	if ($tail =~ /jpeg/i) { $tail=".jpg"; $flag=1; }

	if (!$flag) {
		if ($fname =~ /.gif/i) { $tail=".gif"; $flag=1; }
		if (($fname =~ /.jpg/i) || ($fname =~ /.jpeg/i)) { $tail=".jpg"; $flag=1; }
	}

	if (!$flag) { &error("$fname<>$tail<>画像形式でありません。","lock"); }

	if($count == 0 || $change ne ""){
	$upfile = $FORM{PICTURE};
	$name1 = reverse($fname);
	($fname1) = split(/\\|\/|\:/, $name1);
	$filename1 = reverse($fname1);
	$filename=$filename1;
	$update="1";
	}

	if($upfile ne "") {
	
	# マックバイナリ対策
	if ($macbin) {
		$length = substr($upfile,83,4);
		$length = unpack("%N",$length);
		$upfile = substr($upfile,128,$length);
	}



	# 添付データを書き込み
	$ImgFile = "$img_dir2\/$filename";
	open(OUT,"> $ImgFile") || &error("画像のアップロードに失敗しました","lock");
	binmode(OUT);
	binmode(STDOUT);
	print OUT $upfile;
	close(OUT);

	chmod (0666,$ImgFile);
	
	# 画像サイズ取得
	if ($tail eq ".jpg") { ($W, $H) = &JpegSize($ImgFile); }
	if ($tail eq ".gif") { ($W, $H) = &GifSize($ImgFile); }

	# 画像表示縮小
	if ($W > $MaxW) {

		$key = $MaxW / $W;

		$W = int ($W * $key) || 1;
		$H = int ($H * $key) || 1;
	}
	
	
		if ($H > $MaxH) {

		$key = $MaxH / $H;

		$W = int ($W * $key) || 1;
		$H = int ($H * $key) || 1;
	}
	
	
	
	}

	$count++;

	}

}

#------------------#
#  JPEGサイズ認識  #
#------------------#
sub JpegSize {
	local($jpeg) = @_;
	local($t, $m, $c, $l, $W, $H);

	open(JPEG, "$jpeg") || return (0,0);
	binmode JPEG;
	read(JPEG, $t, 2);
	while (1) {
		read(JPEG, $t, 4);
		($m, $c, $l) = unpack("a a n", $t);

		if ($m ne "\xFF") { $W = $H = 0; last; }		elsif ((ord($c) >= 0xC0) && (ord($c) <= 0xC3)) {
			read(JPEG, $t, 5);
			($H, $W) = unpack("xnn", $t);
			last;
		}
		else {
			read(JPEG, $t, ($l - 2));
		}
	}
	close(JPEG);
	return ($W, $H);
}

#-----------------#
#  GIFサイズ認識  #
#-----------------#
sub GifSize {
	local($gif) = @_;
	local($data);

	open(GIF,"$gif") || return (0,0);
	binmode(GIF);
	sysread(GIF,$data,10);
	close(GIF);

	if ($data =~ /^GIF/) { $data = substr($data,-4); }

	$W = unpack("v",substr($data,0,2));
	$H = unpack("v",substr($data,2,2));
	return ($W, $H);
}

sub cookie {

	($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 12*60*60*1);
	$y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday";
	$m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec";
	@youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6);
	@monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11);
	$date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1900,$hourg,$ming,$secg);
}

