BugTrack-plugin/331 : アンカー記述への対応(ページとして存在する場合はページリンク優先)
@@ -473,15 +473,36 @@ | ||
473 | 473 | my $page = shift; |
474 | 474 | my $name = shift; |
475 | 475 | |
476 | + my $anchor = undef; | |
477 | + my $ppage = $page; | |
478 | + | |
476 | 479 | if(!defined($name) || $name eq ""){ |
477 | 480 | $name = $page; |
478 | 481 | } |
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\">". | |
481 | 486 | &Util::escapeHTML($name)."</a>"; |
482 | 487 | } 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 | + } | |
485 | 506 | } |
486 | 507 | } |
487 | 508 |