--- suikawiki/script/wiki.cgi 2002/02/04 15:27:22 1.7 +++ suikawiki/script/wiki.cgi 2002/03/24 01:14:30 1.12 @@ -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.12 2002/03/24 01:14:30 wakaba Exp $ ############################## my $version = "1.6.6"; ############################## @@ -108,7 +108,7 @@ # 文字']'を1つ多くとるようにしている。 # my $WikiName = '([A-Z][a-z]+([A-Z][a-z]+)+)'; -my $BracketName = '\[\[([^>\s]+?\]?)\]\]'; +my $BracketName = '\[\[([^>\x09]+?\]?)\]\]'; # アイコン部分のタグ my $IconTag = ''; #<<"EOD"; @@ -566,7 +566,7 @@ $line =~ s! ( (?:<(?:mailto|http|https|ftp|urn):[\x21-\x7E]*)> - | (?:$WikiName) # LocalLinkLikeThis + #| (?:$WikiName) # LocalLinkLikeThis | (?:$BracketName) # [[日本語リンク]] ) ! @@ -578,7 +578,7 @@ # ページのタイトルからページの内容を得る sub get_page { my $page_name = shift; - return $database{$page_name}; + return $database{$page_name} || $database{'[['.$page_name.']]'}; } # ページの内容を与える @@ -615,7 +615,7 @@ sub print_header { my $title = shift; print <<"EOD"; -Content-type: text/html +Content-type: text/html; charset=${charset} $title @@ -645,7 +645,7 @@ 一覧 | $editlink 単語検索 | -最終更新 +最近の更新 ]

EOD @@ -654,21 +654,29 @@ # ページのフッタを出力 sub print_footer { print <<"EOD"; -
+
- + EOD + print <<'EOH'; +
+ +$Revision: 1.12 $ $Date: 2002/03/24 01:14:30 $ + +
+ +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 +686,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?|; + } } } @@ -760,7 +774,8 @@ } # 編集可能ページか? -sub is_editable { +sub is_editable {return 1; +## TODO: ... my ($pagename) = @_; foreach (@uneditable) { if ($pagename eq $_) { @@ -773,7 +788,7 @@ return 0; } -# Validな名前か? +# Validな名前か? sub is_valid_name { my ($pagename) = @_; if ($pagename =~ /^$WikiName$/) {