--- akiary061.cgi 2005-04-28 18:11:11.450040000 +0900 +++ akiary.cgi 2005-05-15 08:02:01.786945600 +0900 @@ -18,6 +18,8 @@ { user_cfg_file=>{''=>'cfg/user.cfg'}, time_zone=>'+0900', + newline => '
', + charset => 'SHIFT_JIS', }; &parse_cfg_file($akiary_cfg_file,$acfg); @@ -259,9 +261,12 @@ $DATE{$dids[0]}=$date; $TITLE{$dids[0]}=$FORM{'title'}; $BODY{$dids[0]}=$FORM{'body'}; - $BODY{$dids[0]}=~s/\x0D\x0A/
/g; # 改行コード変換(Win) - $BODY{$dids[0]}=~s/\x0D/
/g; # 改行コード変換(Mac) - $BODY{$dids[0]}=~s/\x0A/
/g; # 改行コード変換(UNIX) + $BODY{$dids[0]}=~s/\x0D\x0A/\n/g; # 改行コード変換(Win) + $BODY{$dids[0]}=~s/\x0D/\n/g; # 改行コード変換(Mac) + $BODY{$dids[0]}=~s/\x0A/\n/g; # 改行コード変換(UNIX) + $newline = $acfg->{newline}; + $newline =~ s/\\n/\n/g; + $BODY{$dids[0]} =~ s/\n/$newline/g; $file=&date2dfn($date); @@ -291,9 +296,12 @@ $DATE{$dids[0]}=$date; $TITLE{$dids[0]}=$FORM{'title'}; $BODY{$dids[0]}=$FORM{'body'}; - $BODY{$dids[0]}=~s/\x0D\x0A/
/g; # 改行コード変換(Win) - $BODY{$dids[0]}=~s/\x0D/
/g; # 改行コード変換(Mac) - $BODY{$dids[0]}=~s/\x0A/
/g; # 改行コード変換(UNIX) + $BODY{$dids[0]}=~s/\x0D\x0A/\n/g; # 改行コード変換(Win) + $BODY{$dids[0]}=~s/\x0D/\n/g; # 改行コード変換(Mac) + $BODY{$dids[0]}=~s/\x0A/\n/g; # 改行コード変換(UNIX) + $newline = $acfg->{newline}; + $newline =~ s/\\n/\n/g; + $BODY{$dids[0]} =~ s/\n/$newline/g; $file=&date2dfn($date); @@ -459,7 +467,7 @@ $t=~s/(.*?)<\/TMPL_IF>/($p->{$1})?$2:''/egs; # - $t=~s//$p->{$1}/eg; + $t=~s//$p->{$1}/g; return($t); } @@ -640,8 +648,10 @@ ($date,$title,$body) =($date{$FORM{'did'}},$title{$FORM{'did'}},$body{$FORM{'did'}}); ($syear,$smon,$smday)=($date=~/^(\d{4})(\d{2})(\d{2})/); - $body=~tr/\x0D\x0A//d; # 改行コード削除 - $body=~s/
/\n/ig; + if ($acfg->{newline} eq '
') { + $body=~tr/\x0D\x0A//d; # 改行コード削除 + $body=~s/
/\n/ig; + } # ページ表示 $html=&HtmlHeader("修正"); @@ -779,7 +789,7 @@ 'akiary.cgiでデフォルト値を設定して下さい。'); } $v =~ s/"//g; - $v =~ s/\$ENV\{'(\w+)'\}/$ENV{$1}/eg; + $v =~ s/\$ENV\{'(\w+)'\}/$ENV{$1}/g; if ($ke =~ /\{"(\w*)"\}\{"(\w*)"\}/) { ${ $cfg->{$k} }{$1}{$2}=$v; @@ -850,9 +860,7 @@ # Print HTTP # sub PrintHTTP{ - print "Content-Type: text/html\n"; - print "\n"; - print $_[0]; + print "Content-Type:text/html;charset=", $acfg->{charset}, "\n\n", $_[0]; } # @@ -962,7 +970,7 @@ # デフォルトは"%Y0年%M0月%D0日(%W0)" # sub date2sdate{ - local($date,$format)=@_; + local($date,$format,$no_tag)=@_; local($y0,$m0,$d0,$w); local(@m2,@m3,@w0,@w1,@w2); local($color,$class,$sdate); @@ -997,28 +1005,29 @@ $sdate=~s/%Y2/$y0-1988/eg; # 平成元号 $sdate=~s/%M0/sprintf("%d",$m0)/eg; # 月 $sdate=~s/%M1/sprintf("%02d",$m0)/eg; # 月(0付き) - $sdate=~s/%M2/$m2[$m0-1]/eg; # 月(英語短縮) - $sdate=~s/%M3/$m3[$m0-1]/eg; # 月(英語) + $sdate=~s/%M2/$m2[$m0-1]/g; # 月(英語短縮) + $sdate=~s/%M3/$m3[$m0-1]/g; # 月(英語) $sdate=~s/%D0/sprintf("%d",$d0)/eg; # 日 $sdate=~s/%D1/sprintf("%02d",$d0)/eg; # 日(0付き) - $sdate=~s/%W0/$w0[$w]/eg; # 曜日 - $sdate=~s/%W1/$w1[$w]/eg; # 曜日(英語短縮) - $sdate=~s/%W2/$w2[$w]/eg; # 曜日(英語) + $sdate=~s/%W0/$w0[$w]/g; # 曜日 + $sdate=~s/%W1/$w1[$w]/g; # 曜日(英語短縮) + $sdate=~s/%W2/$w2[$w]/g; # 曜日(英語) + + if ($no_tag) { - if ($CFG{'date_color_tag'} eq 'font'){ + } elsif ($CFG{'date_color_tag'} eq 'font') { $color="#000000"; # 平日の色 $color="#DD0000" if ($w == 0); # 日曜日の色 $color="#3333FF" if ($w == 6); # 土曜日の色 $sdate="$sdate"; - } else { + } elsif ($CFG{'date_color_tag'} eq 'span') { $class="weekday"; # 平日の色 $class="sunday" if ($w == 0); # 日曜日の色 $class="saturday" if ($w == 6); # 土曜日の色 $sdate="$sdate"; } - # リターン - return("$sdate"); + return $sdate; } # @@ -1402,16 +1411,28 @@ # body部作成 foreach(@k){ - print FH "\n"; + print FH qq(); print FH ""; $tmp=$tmpbnbody; # 日付 $dates=&date2sdate($bndate{$_}); - $tmp=~s//$dates/; + $w3cdtf=&date2sdate($bndate{$_}, '%Y0-%M1-%D1', 1); + $tmp=~s//$dates/g; + $tmp=~s//$w3cdtf/g; # タイトル $tmp=~s//$bntitle{$_}/; + $tmp=~s//$bntitle{$_}/g; # 日記本文 $tmp=~s//$bnbody{$_}/; + # 生did + $tmp =~ s//$_/g; + # Permalink + $bn_file = $bndate{$_}; + $bn_file =~ s/^(\d{6}).*/$1.html/; + $base_uri = diary_dir_uri(); + $permalink = $base_uri . $bn_file . '#' . $_; + $tmp =~ s//$permalink/g; + print FH "$tmp"; print FH "\n"; } @@ -1595,8 +1616,8 @@ $tmp =~ s/%Y2/$y-1988/eg; # 元号 $tmp =~ s/%M0/sprintf("%d",$m)/eg; # 月 $tmp =~ s/%M1/sprintf("%02d",$m)/eg; # 月(0付き) - $tmp =~ s/%M2/$m2[$m-1]/eg; # 月(英語短縮) - $tmp =~ s/%M3/$m3[$m-1]/eg; # 月(英語) + $tmp =~ s/%M2/$m2[$m-1]/g; # 月(英語短縮) + $tmp =~ s/%M3/$m3[$m-1]/g; # 月(英語) if (defined($index{$y})){ $index{$y} .= $CFG{'index_format_between_months'}; } @@ -1685,15 +1706,27 @@ @k=splice(@k,-$latest_times,$latest_times); @k=reverse(@k) if ($reverse==1); foreach(@k){ - $ret.="\n"; + $ret .= qq(); $tmp=$match; # 日付 $dates=&date2sdate($date{$_}); + $w3cdtf=&date2sdate($date{$_}, '%Y0-%M1-%D1', 1); $tmp=~s//$dates/g; + $tmp=~s//$w3cdtf/g; # タイトル - $tmp=~s//$title{$_}/g; + $tmp=~s//$title{$_}/; + $tmp=~s//$title{$_}/g; # 日記本文 - $tmp=~s//$body{$_}/g; + $tmp=~s//$body{$_}/; + # 生did + $tmp =~ s//$_/g; + # Permalink + $bn_file = $date{$_}; + $bn_file =~ s/^(\d{6}).*/$1.html/; + $base_uri = diary_dir_uri(); + $permalink = $base_uri . $bn_file . '#' . $_; + $tmp =~ s//$permalink/g; + $ret.=$tmp; } @@ -1775,3 +1808,9 @@ } return("$y${m}01.html"); } + +sub diary_dir_uri { + my $uri = $ENV{'SCRIPT_NAME'}; + $uri =~ s!^(.*?)(?:[\./]+?)(?:\w+\.cgi|/)$!$1!; + return 'http://' . $ENV{'HTTP_HOST'} . $uri . '/' . (($dcfg->{'diary_dir'} eq './') ? '' : $dcfg->{'diary_dir'}); +}