/[pub]/suikawiki/script/wiki.cgi
Suika

Diff of /suikawiki/script/wiki.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by wakaba, Mon Feb 4 14:36:18 2002 UTC revision 1.10 by wakaba, Sun Mar 24 01:09:03 2002 UTC
# Line 108  my @uneditable = ( $whatsnew ); Line 108  my @uneditable = ( $whatsnew );
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";
# Line 233  sub editpage { Line 233  sub editpage {
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>
# Line 563  sub inline { Line 564  sub inline {
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://...           (?:&lt;(?:mailto|http|https|ftp|urn):[\x21-\x7E]*)&gt;
569                          |         #| (?:$WikiName)                         # LocalLinkLikeThis
570                      ($WikiName)                         # LocalLinkLikeThis         | (?:$BracketName)                      # [[日本語リンク]]
571                          |         )
                     ($BracketName)                      # [[日本語リンク]]  
                 )  
572              !              !
573                  &make_link($1)                  &make_link($1)
574              !gex;              !gex;
# Line 579  sub inline { Line 578  sub inline {
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  # ページの内容を与える  # ページの内容を与える
# Line 616  sub set_page { Line 615  sub set_page {
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>
# Line 646  EOD Line 645  EOD
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
# Line 655  EOD Line 654  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">\$Id$ </div>
665  </body></html>  </body></html>
666  EOD  EOD
667  }  }
# Line 669  EOD Line 669  EOD
669  # URLやページの名前からリンクを作る  # URLやページの名前からリンクを作る
670  sub make_link {  sub make_link {
671      my $name = shift;      my $name = shift;
672      if ($name =~ /^(http|https|ftp).*?(\.gif|\.png|\.jpeg|\.jpg)?$/) {      $name =~ s/^&lt;(.*)&gt;$/$1/;
673        $name =~ s/^\[\[(.*)\]\]$/$1/;
674        if ($name =~ /^(http|https|ftp).*?(\.png|\.jpeg|\.jpg)?$/) {
675          if ($2) {          if ($2) {
676              return qq|<a href="$name"><img border="0" src="$name" /></a>|;              return qq|<a href="$name"><img border="0" src="$name" /></a>|;
677          } else {          } else {
678              return qq|<a href="$name">$name</a>|;              return qq|&lt;<a href="$name">$name</a>&gt;|;
679          }          }
680      } elsif ($name =~ /^mailto:(.*)/) {      } elsif ($name =~ /^mailto:(.*)/) {
681          my $address = $1;          my $address = $1;
682          return qq|<a href="$name">$address</a>|;          return qq|&lt;<a href="$name">$address</a>&gt;|;
683      } elsif ($database{$name}) {      } elsif ($name =~ m#^urn:[0-9A-Za-z_:;/.-]+#) {
684          my $percent_name = &encode_percent($name);          return qq|&lt;<a href="/uri-res/N2L?${name}">$name</a>&gt;|;
685          return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name">$name</a>|;      } else {
686      } else {        my $name2 = $name; $name2 =~ tr/\x20/-/;
687          my $percent_name = &encode_percent($name);        if ($database{$name2}) {
688          return qq|$name<a href="$thisurl?mycmd=edit;mypage=$percent_name">?</a>|;          my $percent_name = &encode_percent($name2);
689            return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name" class="wiki">$name</a>|;
690          } elsif ($database{'[['.$name2.']]'}) {
691            my $percent_name = &encode_percent('[['.$name2.']]');
692            return qq|<a href="$thisurl?mycmd=read;mypage=$percent_name" class="wiki">$name</a>|;
693          } else {
694            my $percent_name = &encode_percent($name2);
695            return qq|<a href="$thisurl?mycmd=edit;mypage=$percent_name" class="wiki newpage">$name<span class="mark">?</span></a>|;
696          }
697      }      }
698  }  }
699    
# Line 758  sub back_push { Line 768  sub back_push {
768  }  }
769    
770  # 編集可能ページか?  # 編集可能ページか?
771  sub is_editable {  sub is_editable {return 1;
772    ## TODO: ...
773      my ($pagename) = @_;      my ($pagename) = @_;
774      foreach (@uneditable) {      foreach (@uneditable) {
775          if ($pagename eq $_) {          if ($pagename eq $_) {
# Line 771  sub is_editable { Line 782  sub is_editable {
782      return 0;      return 0;
783  }  }
784    
785  # Validな名前か?  # Validな名前か?
786  sub is_valid_name {  sub is_valid_name {
787      my ($pagename) = @_;      my ($pagename) = @_;
788      if ($pagename =~ /^$WikiName$/) {      if ($pagename =~ /^$WikiName$/) {
# Line 833  sub print_sample { Line 844  sub print_sample {
844  ----  ----
845  *大見出し2  *大見出し2
846  **小見出し2-1  **小見出し2-1
847  http://www.hyuki.com/  &lt;http://suika.fam.cx/&gt;
848  **小見出し2-2  **小見出し2-2
849    
850  [[結城浩]]  [[結城浩]]

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.10

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24