トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/331

ページの作成や編集にはユーザ登録が必要です。

通常のリンクでページ内アンカーに飛べるようになるパッチ

  • 投稿者: 閉じ込めの壷
  • カテゴリ: 新規
  • 優先度: 普通
  • 状態: 提案
  • 日時: 2006年12月29日 17時13分22秒

 内容

BugTrack-plugin/195を利用しているときに思ったのですがせっかく設置したアンカーはKeywordsでは使えないのです。

KeywordsにはブラケットによるリンクしかKeywordsに指定できず、このキーワードはこのページのこのアンカーにジャンプしてほしいということはできませんでした。

そこで2重ブラケット内のリンクにアンカーも指定できるようになるパッチを開発しました。(以下に使用例を示します)

[[テスト|テストページ#hoge]]

こうするとテストページのアンカー名「hoge」にジャンプします。BugTrack-plugin/195と一緒にお使いください。

 インストール方法

パッチですので、下記に示す指示に従ってソースを修正して頂くことになります。lib/Wiki/HTMLParser.pmの444行目辺り(wiki_anchor関数内)をanchorlink.txtのように修正して下さい。

 コメント

  • [テストページ]というページにBugTrack-plugin/195でアンカーを設置したとしたとき、このパッチBugTrack-plugin/331を利用せずに[Keyword]でアンカー指定つきURLを登録するには、[Keyword]ページに
*[テスト|./wiki.cgi?page=%A5%C6%A5%B9%A5%C8%A5%DA%A1%BC%A5%B8#hoge]

 と書くという方法があります。これで、上記 使用例 とほぼ同様の動作をしますが、Wikiページへのリンクを「外部URL」として認識さているこの方法では、Wiki環境設定項目の「外部URLの処理」によって、リンク先を開く際の挙動が変化します。 - pm (2006年12月31日 23時36分31秒)

  • 少々、動作がおかしかったりしたので修正しました。 Wiki::HTMLParser::wiki_anchor() を丸ごと置き換えてください。 - Custom (2007年05月30日 20時29分41秒)
# 以下の不具合を修正
# ・my $anchor = undef; を追加
# ・アンカー文字列などの取得を簡略化
# ・ページ名の無指定(現在表示中ページのアンカーリンク)に対応
sub wiki_anchor {
	my $self   = shift;
	my $page   = shift;
	my $name   = shift;
	my $anchor = undef;

	if(!defined($name) || $name eq ''){
		$name = $page;
	}

	($page, $anchor) = split(/#/, $page, 2) if($page =~ m/#/);
	if(defined($anchor) && $page eq '') {
		return "<a href=\"#$anchor\" class=\"wikipage\">" . &Util::escapeHTML($name) . '</a>';
	} elsif($self->{wiki}->page_exists($page)) {
		return '<a href="' . $self->{'wiki'}->config('script_name') . '?page=' . &Util::url_encode($page) .
			(defined($anchor) ? "#$anchor" : '') . '" class="wikipage">' .
			&Util::escapeHTML($name) . '</a>';
	} else {
		return '<span class="nopage">' . &Util::escapeHTML($name) . '</span>' .
			'<a href="' . $self->{'wiki'}->config('script_name') . '?page=' . &Util::url_encode($page) . '">?</a>';
	}
}
お名前: コメント:
anchorlink.txt anchorlink_rev1.txt

最終更新時間:2013年04月25日 17時35分04秒