From: kgsoft Date: Mon, 26 Mar 2018 05:49:04 +0000 (+0000) Subject: BugTrack-plugin/331 : アンカー記述への対応(ページとして存在する場合はページリンク優先) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;ds=sidebyside;h=9f5cfee9315a28ef7f1139a7b37ba6aca7ac1db6;p=fswiki%2Ffswiki.git BugTrack-plugin/331 : アンカー記述への対応(ページとして存在する場合はページリンク優先) --- diff --git a/lib/Wiki/HTMLParser.pm b/lib/Wiki/HTMLParser.pm index 999f589..d991476 100644 --- a/lib/Wiki/HTMLParser.pm +++ b/lib/Wiki/HTMLParser.pm @@ -473,15 +473,36 @@ sub wiki_anchor { my $page = shift; my $name = shift; + my $anchor = undef; + my $ppage = $page; + if(!defined($name) || $name eq ""){ $name = $page; } - if($self->{wiki}->page_exists($page)){ - return "{wiki}->create_page_url($page)."\" class=\"wikipage\">". + + if($self->{wiki}->page_exists($page)) { + #¥¢¥ó¥«¡¼¤ò´Þ¤à¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ï¥ê¥ó¥¯¤òÍ¥Àè + return "{wiki}->create_page_url($page).(defined($anchor)?"#".$anchor:"")."\" class=\"wikipage\">". &Util::escapeHTML($name).""; } else { - return "".&Util::escapeHTML($name)."". - "{wiki}->create_page_url($page)."\">?"; + #ºÇ¸å¤Î"#"°Ê¹ß¤ò¥¢¥ó¥«¡¼¤È¤¹¤ë + if($page =~ m/#([^#]+)$/) { + $page = $`; + $anchor = $1; + } + if(defined($anchor) && $page eq '') { + #Ʊ°ì¥Ú¡¼¥¸¤Î¥¢¥ó¥«¡¼¥ê¥ó¥¯ + return "". + &Util::escapeHTML($name).""; + } elsif($self->{wiki}->page_exists($page)) { + #»ØÄê¥Ú¡¼¥¸¤Î¥¢¥ó¥«¡¼¥ê¥ó¥¯ + return "{wiki}->create_page_url($page).(defined($anchor)?"#".$anchor:"")."\" class=\"wikipage\">". + &Util::escapeHTML($name).""; + } else { + #¿·µ¬¥Ú¡¼¥¸ºîÀ®ÍÑ¥ê¥ó¥¯ + return "".&Util::escapeHTML($name)."". + "{wiki}->create_page_url($ppage)."\">?"; + } } }