| 40 |
# データベース名(.pag, .dir, .dbなどは不要) |
# データベース名(.pag, .dir, .dbなどは不要) |
| 41 |
# $dbmopen = 1のときはデータベース名、 |
# $dbmopen = 1のときはデータベース名、 |
| 42 |
# $dbmopen = 0のときはディレクトリ名になる。 |
# $dbmopen = 0のときはディレクトリ名になる。 |
| 43 |
my $dbname = './wiki'; |
my $dbname = './wikidata'; |
| 44 |
my $diffdbname = './wikidiff'; |
my $diffdbname = './wikidiff'; |
| 45 |
############################## |
############################## |
| 46 |
# 修正者の氏名(自由に変更してください) |
# 修正者の氏名(自由に変更してください) |
| 108 |
# 文字']'を1つ多くとるようにしている。 |
# 文字']'を1つ多くとるようにしている。 |
| 109 |
# |
# |
| 110 |
my $WikiName = '([A-Z][a-z]+([A-Z][a-z]+)+)'; |
my $WikiName = '([A-Z][a-z]+([A-Z][a-z]+)+)'; |
| 111 |
my $BracketName = '\[\[([^>\s]+?\]?)\]\]'; |
my $BracketName = '\[\[([^>\x09]+?\]?)\]\]'; |
| 112 |
|
|
| 113 |
# アイコン部分のタグ |
# アイコン部分のタグ |
| 114 |
my $IconTag = ''; #<<"EOD"; |
my $IconTag = ''; #<<"EOD"; |
| 233 |
$page_msg = &escape($page_msg); |
$page_msg = &escape($page_msg); |
| 234 |
print <<"EOD"; |
print <<"EOD"; |
| 235 |
<form action="$thisurl" method="post"> |
<form action="$thisurl" method="post"> |
| 236 |
<input type="hidden" name="mycmd" value="preview"> |
<!--<input type="hidden" name="mycmd" value="preview">--> |
| 237 |
<input type="hidden" name="mypage" value="$page_name"> |
<input type="hidden" name="mypage" value="$page_name"> |
| 238 |
<input type="hidden" name="mydigest" value="$digest"> |
<input type="hidden" name="mydigest" value="$digest"> |
| 239 |
<textarea cols="$cols" rows="$rows" name="mymsg" wrap="virtual">$page_msg</textarea><br> |
<textarea cols="$cols" rows="$rows" name="mymsg" wrap="virtual">$page_msg</textarea><br> |
| 240 |
<input type="submit" value="プレビュー"> |
<input type="submit" name="myspecial_preview" value="確認"> |
| 241 |
|
<input type="submit" name="myspecial_write" value="確認せず変更"> |
| 242 |
</form> |
</form> |
| 243 |
<hr> |
<hr> |
| 244 |
<h3>テキスト整形のルール</h3> |
<h3>テキスト整形のルール</h3> |
| 564 |
$line =~ s|'''([^']+?)'''|<strong>$1</strong>|g; |
$line =~ s|'''([^']+?)'''|<strong>$1</strong>|g; |
| 565 |
$line =~ s|''([^']+?)''|<em>$1</em>|g; |
$line =~ s|''([^']+?)''|<em>$1</em>|g; |
| 566 |
$line =~ s! |
$line =~ s! |
| 567 |
( |
( |
| 568 |
((mailto|http|https|ftp):[\x21-\x7E]*) # Direct http://... |
(?:<(?:mailto|http|https|ftp|urn):[\x21-\x7E]*)> |
| 569 |
| |
#| (?:$WikiName) # LocalLinkLikeThis |
| 570 |
($WikiName) # LocalLinkLikeThis |
| (?:$BracketName) # [[日本語リンク]] |
| 571 |
| |
) |
|
($BracketName) # [[日本語リンク]] |
|
|
) |
|
| 572 |
! |
! |
| 573 |
&make_link($1) |
&make_link($1) |
| 574 |
!gex; |
!gex; |
| 578 |
# ページのタイトルからページの内容を得る |
# ページのタイトルからページの内容を得る |
| 579 |
sub get_page { |
sub get_page { |
| 580 |
my $page_name = shift; |
my $page_name = shift; |
| 581 |
return $database{$page_name}; |
return $database{$page_name} || $database{'[['.$page_name.']]'}; |
| 582 |
} |
} |
| 583 |
|
|
| 584 |
# ページの内容を与える |
# ページの内容を与える |
| 615 |
sub print_header { |
sub print_header { |
| 616 |
my $title = shift; |
my $title = shift; |
| 617 |
print <<"EOD"; |
print <<"EOD"; |
| 618 |
Content-type: text/html |
Content-type: text/html; charset=${charset} |
| 619 |
|
|
| 620 |
<html><head> |
<html><head> |
| 621 |
<title>$title</title> |
<title>$title</title> |
| 645 |
<a href="$thisurl?mycmd=list">一覧</a> | |
<a href="$thisurl?mycmd=list">一覧</a> | |
| 646 |
$editlink |
$editlink |
| 647 |
<a href="$thisurl?mycmd=search">単語検索</a> | |
<a href="$thisurl?mycmd=search">単語検索</a> | |
| 648 |
<a href="$thisurl?mycmd=read;mypage=$whatsnew">最終更新</a> |
<a href="$thisurl?mycmd=read;mypage=$whatsnew">最近の更新</a> |
| 649 |
] |
] |
| 650 |
</p> |
</p> |
| 651 |
EOD |
EOD |
| 654 |
# ページのフッタを出力 |
# ページのフッタを出力 |
| 655 |
sub print_footer { |
sub print_footer { |
| 656 |
print <<"EOD"; |
print <<"EOD"; |
| 657 |
<address> |
<div class="navigation"> |
| 658 |
<a href="http://www.hyuki.com/yukiwiki/">YukiWiki</a> 1.6.6 Copyright (C) 2000,2001 by <a href="http://www.hyuki.com/">Hiroshi Yuki.</a> |
<a href="http://www.hyuki.com/yukiwiki/">YukiWiki</a> 1.6.6 Copyright (C) 2000,2001 by <a href="http://www.hyuki.com/">Hiroshi Yuki.</a> |
| 659 |
+ <a href="$modifierlink">$modifier</a> ${version}. |
+ <a href="$modifierlink">$modifier</a> ${version}. |
| 660 |
[<a href="/" title="このサーバーの首頁">/</a> |
[<a href="/" title="このサーバーの首頁">/</a> |
| 661 |
<a href="/map" title="このサーバーの案内">地図</a> |
<a href="/map" title="このサーバーの案内">地図</a> |
| 662 |
<a href="/search/" title="このサーバーの検索">検索</a>] |
<a href="/search/" title="このサーバーの検索">検索</a>] |
| 663 |
</address> |
</div> |
| 664 |
|
<div class="update"> |
| 665 |
|
<a href="/gate/cvs/wakaba/wiki/" title="CVS Repository"> |
| 666 |
|
\$Revision$ |
| 667 |
|
\$Date$ |
| 668 |
|
</a> |
| 669 |
|
</div> |
| 670 |
</body></html> |
</body></html> |
| 671 |
EOD |
EOD |
| 672 |
} |
} |
| 674 |
# URLやページの名前からリンクを作る |
# URLやページの名前からリンクを作る |
| 675 |
sub make_link { |
sub make_link { |
| 676 |
my $name = shift; |
my $name = shift; |
| 677 |
if ($name =~ /^(http|https|ftp).*?(\.gif|\.png|\.jpeg|\.jpg)?$/) { |
$name =~ s/^<(.*)>$/$1/; |
| 678 |
|
$name =~ s/^\[\[(.*)\]\]$/$1/; |
| 679 |
|
if ($name =~ /^(http|https|ftp).*?(\.png|\.jpeg|\.jpg)?$/) { |
| 680 |
if ($2) { |
if ($2) { |
| 681 |
return qq|<a href="$name"><img border="0" src="$name" /></a>|; |
return qq|<a href="$name"><img border="0" src="$name" /></a>|; |
| 682 |
} else { |
} else { |
| 683 |
return qq|<a href="$name">$name</a>|; |
return qq|<<a href="$name">$name</a>>|; |
| 684 |
} |
} |
| 685 |
} elsif ($name =~ /^mailto:(.*)/) { |
} elsif ($name =~ /^mailto:(.*)/) { |
| 686 |
my $address = $1; |
my $address = $1; |
| 687 |
return qq|<a href="$name">$address</a>|; |
return qq|<<a href="$name">$address</a>>|; |
| 688 |
} elsif ($database{$name}) { |
} elsif ($name =~ m#^urn:[0-9A-Za-z_:;/.-]+#) { |
| 689 |
my $percent_name = &encode_percent($name); |
return qq|<<a href="/uri-res/N2L?${name}">$name</a>>|; |
| 690 |
return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name">$name</a>|; |
} else { |
| 691 |
} else { |
my $name2 = $name; $name2 =~ tr/\x20/-/; |
| 692 |
my $percent_name = &encode_percent($name); |
if ($database{$name2}) { |
| 693 |
return qq|$name<a href="$thisurl?mycmd=edit;mypage=$percent_name">?</a>|; |
my $percent_name = &encode_percent($name2); |
| 694 |
|
return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name" class="wiki">$name</a>|; |
| 695 |
|
} elsif ($database{'[['.$name2.']]'}) { |
| 696 |
|
my $percent_name = &encode_percent('[['.$name2.']]'); |
| 697 |
|
return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name" class="wiki">$name</a>|; |
| 698 |
|
} else { |
| 699 |
|
my $percent_name = &encode_percent($name2); |
| 700 |
|
return qq|<a href="$thisurl?mycmd=edit;mypage=$percent_name" class="wiki newpage">$name<span class="mark">?</span></a>|; |
| 701 |
|
} |
| 702 |
} |
} |
| 703 |
} |
} |
| 704 |
|
|
| 773 |
} |
} |
| 774 |
|
|
| 775 |
# 編集可能ページか? |
# 編集可能ページか? |
| 776 |
sub is_editable { |
sub is_editable {return 1; |
| 777 |
|
## TODO: ... |
| 778 |
my ($pagename) = @_; |
my ($pagename) = @_; |
| 779 |
foreach (@uneditable) { |
foreach (@uneditable) { |
| 780 |
if ($pagename eq $_) { |
if ($pagename eq $_) { |
| 787 |
return 0; |
return 0; |
| 788 |
} |
} |
| 789 |
|
|
| 790 |
# Validな名前か? |
# Validな名前か? |
| 791 |
sub is_valid_name { |
sub is_valid_name { |
| 792 |
my ($pagename) = @_; |
my ($pagename) = @_; |
| 793 |
if ($pagename =~ /^$WikiName$/) { |
if ($pagename =~ /^$WikiName$/) { |
| 849 |
---- |
---- |
| 850 |
*大見出し2 |
*大見出し2 |
| 851 |
**小見出し2-1 |
**小見出し2-1 |
| 852 |
http://www.hyuki.com/ |
<http://suika.fam.cx/> |
| 853 |
**小見出し2-2 |
**小見出し2-2 |
| 854 |
|
|
| 855 |
[[結城浩]] |
[[結城浩]] |