• R/O
  • HTTP
  • SSH
  • HTTPS

fswiki: コミット

FreeStyleWiki


コミットメタ情報

リビジョン85d0ec679f41b3f9a307c4778133482c386b153e (tree)
日時2018-03-26 14:41:29
作者kgsoft <kgsoft@user...>
コミッターkgsoft

ログメッセージ

アウトラインプラグインのページ指定対応

変更サマリ

差分

--- a/plugin/info/Outline.pm
+++ b/plugin/info/Outline.pm
@@ -4,6 +4,13 @@
44 # <pre>
55 # {{outline}}
66 # </pre>
7+# <p>
8+# デフォルトでは表示中のページのアウトラインを表示しますが、
9+# 指定したページのアウトラインを表示する事も出来ます。
10+# </p>
11+# <pre>
12+# {{outline ページ名}}
13+# </pre>
714 #
815 ############################################################
916 package plugin::info::Outline;
@@ -25,16 +32,20 @@ sub new {
2532 sub paragraph {
2633 my $self = shift;
2734 my $wiki = shift;
35+ my $page = shift;
2836 my $cgi = $wiki->get_CGI;
2937 my $p_cnt = 0;
3038
31- my $pagename = $cgi->param("page");
39+ my $pagename = $page;
40+ if (!defined($pagename)) {
41+ $pagename = $cgi->param("page");
42+ }
3243 # ページの参照権限があるかどうか調べる
3344 unless($wiki->can_show($pagename)){
3445 return undef;
3546 }
3647 my $parser = plugin::info::OutlineParser->new($wiki);
37- return $parser->outline($wiki->get_page($pagename));
48+ return $parser->outline($wiki->get_page($pagename), $pagename);
3849 }
3950
4051 1;
--- a/plugin/info/OutlineParser.pm
+++ b/plugin/info/OutlineParser.pm
@@ -7,6 +7,7 @@ package plugin::info::OutlineParser;
77 use strict;
88 use vars qw(@ISA);
99 use Wiki::HTMLParser;
10+use CGI2;
1011
1112 @ISA = qw(Wiki::HTMLParser);
1213
@@ -15,10 +16,16 @@ use Wiki::HTMLParser;
1516 #==============================================================================
1617 sub new {
1718 my $class = shift;
18- my $self = Wiki::HTMLParser->new(shift);
19+ my $wiki = shift;
20+ my $self = Wiki::HTMLParser->new($wiki);
21+
1922 $self->{outline_html} = "";
2023 $self->{outline_level} = 0;
2124 $self->{outline_cnt} = 0;
25+
26+ # 他ページのoutline処理用
27+ $self->{url} = "";
28+
2229 return bless $self,$class;
2330 }
2431
@@ -57,7 +64,7 @@ sub l_headline {
5764 }
5865
5966 $self->{'outline_close_'.$level} = 1;
60- $self->{outline_html} .= "<li><a href=\"#p".$self->{outline_cnt}."\">$text</a>";
67+ $self->{outline_html} .= "<li><a href=\"".$self->{url}."#p".$self->{outline_cnt}."\">$text</a>";
6168 $self->{outline_cnt}++;
6269 }
6370
@@ -67,6 +74,14 @@ sub l_headline {
6774 sub outline {
6875 my $self = shift;
6976 my $source = shift;
77+ my $page = shift;
78+
79+ # 他ページのアウトライン処理の場合はURL部を生成する
80+ my $cgi = CGI2->new();
81+ if ($page ne $cgi->param("page")) {
82+ $self->{url} = $self->{wiki}->create_url({page=>$page});
83+ }
84+
7085 $self->parse($source);
7186
7287 while($self->{outline_level} != 0){
旧リポジトリブラウザで表示