• R/O
  • SSH
  • HTTPS

fswiki: Commit


Commit MetaInfo

Revision186 (tree)
Time2018-03-26 14:49:04
Authorkgsoft

Log Message

BugTrack-plugin/331 : アンカー記述への対応(ページとして存在する場合はページリンク優先)

Change Summary

Incremental Difference

--- fswiki/trunk/fswiki/lib/Wiki/HTMLParser.pm (revision 185)
+++ fswiki/trunk/fswiki/lib/Wiki/HTMLParser.pm (revision 186)
@@ -473,15 +473,36 @@
473473 my $page = shift;
474474 my $name = shift;
475475
476+ my $anchor = undef;
477+ my $ppage = $page;
478+
476479 if(!defined($name) || $name eq ""){
477480 $name = $page;
478481 }
479- if($self->{wiki}->page_exists($page)){
480- return "<a href=\"".$self->{wiki}->create_page_url($page)."\" class=\"wikipage\">".
482+
483+ if($self->{wiki}->page_exists($page)) {
484+ #アンカーを含むページが存在する場合はリンクを優先
485+ return "<a href=\"".$self->{wiki}->create_page_url($page).(defined($anchor)?"#".$anchor:"")."\" class=\"wikipage\">".
481486 &Util::escapeHTML($name)."</a>";
482487 } else {
483- return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
484- "<a href=\"".$self->{wiki}->create_page_url($page)."\">?</a>";
488+ #最後の"#"以降をアンカーとする
489+ if($page =~ m/#([^#]+)$/) {
490+ $page = $`;
491+ $anchor = $1;
492+ }
493+ if(defined($anchor) && $page eq '') {
494+ #同一ページのアンカーリンク
495+ return "<a href=\"#$anchor\" class=\"wikipage\">".
496+ &Util::escapeHTML($name)."</a>";
497+ } elsif($self->{wiki}->page_exists($page)) {
498+ #指定ページのアンカーリンク
499+ return "<a href=\"".$self->{wiki}->create_page_url($page).(defined($anchor)?"#".$anchor:"")."\" class=\"wikipage\">".
500+ &Util::escapeHTML($name)."</a>";
501+ } else {
502+ #新規ページ作成用リンク
503+ return "<span class=\"nopage\">".&Util::escapeHTML($name)."</span>".
504+ "<a href=\"".$self->{wiki}->create_page_url($ppage)."\">?</a>";
505+ }
485506 }
486507 }
487508
Show on old repository browser