--- suikawiki/script/wiki.cgi 2002/02/04 15:27:22 1.7 +++ suikawiki/script/wiki.cgi 2002/04/23 10:14:12 1.15 @@ -20,7 +20,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # -# $Id: wiki.cgi,v 1.7 2002/02/04 15:27:22 wakaba Exp $ +# $Id: wiki.cgi,v 1.15 2002/04/23 10:14:12 wakaba Exp $ ############################## my $version = "1.6.6"; ############################## @@ -75,7 +75,10 @@ ############################## # 全ページのスタイル my $style = <<'EOD'; -pre, dl, ul, ol, p, blockquote { line-height:120%; } +@import '/s/simpledoc'; +pre, dl, ul, ol, p, blockquote { line-height:120%; +margin-bottom: 1em} +a.wiki .mark {vertical-align: sub, color: GrayText} a { text-decoration: none; } a:link { color: #0000FF; background-color: #FFFFFF; } a:visited { color: #9900CC; background-color: #FFFFFF; } @@ -108,7 +111,7 @@ # 文字']'を1つ多くとるようにしている。 # my $WikiName = '([A-Z][a-z]+([A-Z][a-z]+)+)'; -my $BracketName = '\[\[([^>\s]+?\]?)\]\]'; +my $BracketName = '\[\[([^>\x09]+?\]?)\]\]'; # アイコン部分のタグ my $IconTag = ''; #<<"EOD"; @@ -566,7 +569,7 @@ $line =~ s! ( (?:<(?:mailto|http|https|ftp|urn):[\x21-\x7E]*)> - | (?:$WikiName) # LocalLinkLikeThis + #| (?:$WikiName) # LocalLinkLikeThis | (?:$BracketName) # [[日本語リンク]] ) ! @@ -578,7 +581,7 @@ # ページのタイトルからページの内容を得る sub get_page { my $page_name = shift; - return $database{$page_name}; + return $database{$page_name} || $database{'[['.$page_name.']]'}; } # ページの内容を与える @@ -615,7 +618,7 @@ sub print_header { my $title = shift; print <<"EOD"; -Content-type: text/html +Content-type: text/html; charset=${charset} $title @@ -645,7 +648,7 @@ 一覧 | $editlink 単語検索 | -最終更新 +最近の更新 ]

EOD @@ -654,21 +657,29 @@ # ページのフッタを出力 sub print_footer { print <<"EOD"; -
-YukiWiki 1.6.6 Copyright (C) 2000,2001 by Hiroshi Yuki. -+ $modifier ${version}. +
- + EOD + print <<'EOH'; +
+YukiWiki 1.6.6 +Copyright © 2000,2001 by Hiroshi Yuki. + +$Revision: 1.15 $ $Date: 2002/04/23 10:14:12 $ + +
+ +EOH } # URLやページの名前からリンクを作る sub make_link { my $name = shift; $name =~ s/^<(.*)>$/$1/; + $name =~ s/^\[\[(.*)\]\]$/$1/; if ($name =~ /^(http|https|ftp).*?(\.png|\.jpeg|\.jpg)?$/) { if ($2) { return qq||; @@ -678,14 +689,20 @@ } elsif ($name =~ /^mailto:(.*)/) { my $address = $1; return qq|<$address>|; - } elsif ($name =~ /^urn:[0-9A-Za-z_:-]+/) { + } elsif ($name =~ m#^urn:[0-9A-Za-z_:;/.-]+#) { return qq|<$name>|; - } elsif ($database{$name}) { - my $percent_name = &encode_percent($name); - return qq|$name|; } else { - my $percent_name = &encode_percent($name); - return qq|$name?|; + my $name2 = $name; $name2 =~ tr/\x20/-/; + if ($database{$name2}) { + my $percent_name = &encode_percent($name2); + return qq|$name|; + } elsif ($database{'[['.$name2.']]'}) { + my $percent_name = &encode_percent('[['.$name2.']]'); + return qq|$name|; + } else { + my $percent_name = &encode_percent($name2); + return qq|$name?|; + } } } @@ -711,9 +728,16 @@ sub convert_html { my ($txt) = shift; my (@txt) = split(/\n/, $txt); + push (@result, '

'); ## ad hoc... foreach (@txt) { chomp; - if (/^\*\*(.*)/) { + if (/^\*\*\*\*\*(.*)/) { + push(@result, splice(@saved), '

' . &inline($1) . '
'); + } elsif (/^\*\*\*\*(.*)/) { + push(@result, splice(@saved), '
' . &inline($1) . '
'); + } elsif (/^\*\*\*(.*)/) { + push(@result, splice(@saved), '

' . &inline($1) . '

'); + } elsif (/^\*\*(.*)/) { push(@result, splice(@saved), '

' . &inline($1) . '

'); } elsif (/^\*(.*)/) { push(@result, splice(@saved), '

' . &inline($1) . '

'); @@ -722,6 +746,9 @@ } elsif (/^(-{1,3})(.*)/) { &back_push('ul', length($1)); push(@result, '
  • ' . &inline($2) . '
  • '); + } elsif (/^(={1,3})(.*)/) { + &back_push('ol', length($1)); + push(@result, '
  • ' . &inline($2) . '
  • '); } elsif (/^:([^:]+):(.*)/) { &back_push('dl', 1); push(@result, '
    ' . &inline($1) . '
    ', '
    ' . &inline($2) . '
    '); @@ -734,7 +761,8 @@ push(@result, "

    "); } elsif (/^(\s+.*)$/) { &back_push('pre', 1); - push(@result, &escape($1)); # Not &inline, but &escape + #push(@result, &escape($1)); # Not &inline, but &escape + push(@result, &inline($1)); # Not &inline, but &escape } else { push(@result, &inline($_)); } @@ -760,7 +788,8 @@ } # 編集可能ページか? -sub is_editable { +sub is_editable {return 1; +## TODO: ... my ($pagename) = @_; foreach (@uneditable) { if ($pagename eq $_) { @@ -773,7 +802,7 @@ return 0; } -# Validな名前か? +# Validな名前か? sub is_valid_name { my ($pagename) = @_; if ($pagename =~ /^$WikiName$/) {