]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/inline.pm
Add discussionpage configuration setting
[git.ikiwiki.info.git] / IkiWiki / Plugin / inline.pm
index a89e827c1c7ff2ecf2a877c7dd48d11e2105fbcd..704fa711d543947f6bddb2a9f6538bb2798c70b6 100644 (file)
@@ -151,7 +151,7 @@ my %feedlinks;
 sub preprocess_inline (@) {
        my %params=@_;
        
 sub preprocess_inline (@) {
        my %params=@_;
        
-       if (! exists $params{pages}) {
+       if (! exists $params{pages} && ! exists $params{pagenames}) {
                error gettext("missing pages parameter");
        }
        my $raw=yesno($params{raw});
                error gettext("missing pages parameter");
        }
        my $raw=yesno($params{raw});
@@ -184,28 +184,44 @@ sub preprocess_inline (@) {
        }
 
        my @list;
        }
 
        my @list;
-       foreach my $page (keys %pagesources) {
-               next if $page eq $params{page};
-               if (pagespec_match($page, $params{pages}, location => $params{page})) {
-                       push @list, $page;
+
+       if (exists $params{pagenames}) {
+               foreach my $p (qw(sort pages)) {
+                       if (exists $params{$p}) {
+                               error sprintf(gettext("the %s and %s parameters cannot be used together"),
+                                       "pagenames", $p);
+                       }
                }
                }
-       }
 
 
-       if (exists $params{sort} && $params{sort} eq 'title') {
-               @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
-       }
-       elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
-               require Sort::Naturally;
-               @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
-       }
-       elsif (exists $params{sort} && $params{sort} eq 'mtime') {
-               @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
-       }
-       elsif (! exists $params{sort} || $params{sort} eq 'age') {
-               @list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
+               @list = map { bestlink($params{page}, $_) }
+                       split ' ', $params{pagenames};
+
+               $params{pages} = join(" or ", @list);
        }
        else {
        }
        else {
-               error sprintf(gettext("unknown sort type %s"), $params{sort});
+               @list = pagespec_match_list(
+                       [ grep { $_ ne $params{page} } keys %pagesources ],
+                       $params{pages}, location => $params{page});
+
+               if (exists $params{sort} && $params{sort} eq 'title') {
+                       @list=sort { pagetitle(basename($a)) cmp pagetitle(basename($b)) } @list;
+               }
+               elsif (exists $params{sort} && $params{sort} eq 'title_natural') {
+                       eval q{use Sort::Naturally};
+                       if ($@) {
+                               error(gettext("Sort::Naturally needed for title_natural sort"));
+                       }
+                       @list=sort { Sort::Naturally::ncmp(pagetitle(basename($a)), pagetitle(basename($b))) } @list;
+               }
+               elsif (exists $params{sort} && $params{sort} eq 'mtime') {
+                       @list=sort { $pagemtime{$b} <=> $pagemtime{$a} } @list;
+               }
+               elsif (! exists $params{sort} || $params{sort} eq 'age') {
+                       @list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
+               }
+               else {
+                       error sprintf(gettext("unknown sort type %s"), $params{sort});
+               }
        }
 
        if (yesno($params{reverse})) {
        }
 
        if (yesno($params{reverse})) {
@@ -278,8 +294,8 @@ sub preprocess_inline (@) {
                }
        }
 
                }
        }
 
-       my $rssurl=basename($feedbase."rss".$feednum) if $feeds && $rss;
-       my $atomurl=basename($feedbase."atom".$feednum) if $feeds && $atom;
+       my $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $rss;
+       my $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $atom;
 
        my $ret="";
 
 
        my $ret="";
 
@@ -343,7 +359,7 @@ sub preprocess_inline (@) {
                                        my $content=get_inline_content($page, $params{destpage});
                                        $template->param(content => $content);
                                }
                                        my $content=get_inline_content($page, $params{destpage});
                                        $template->param(content => $content);
                                }
-                               $template->param(pageurl => urlto(bestlink($params{page}, $page), $params{destpage}));
+                               $template->param(pageurl => urlto($page, $params{destpage}));
                                $template->param(inlinepage => $page);
                                $template->param(title => pagetitle(basename($page)));
                                $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat}));
                                $template->param(inlinepage => $page);
                                $template->param(title => pagetitle(basename($page)));
                                $template->param(ctime => displaytime($pagectime{$page}, $params{timeformat}));
@@ -355,15 +371,14 @@ sub preprocess_inline (@) {
                                        my $file = $pagesources{$page};
                                        my $type = pagetype($file);
                                        if ($config{discussion}) {
                                        my $file = $pagesources{$page};
                                        my $type = pagetype($file);
                                        if ($config{discussion}) {
-                                               my $discussionlink=gettext("discussion");
-                                               if ($page !~ /.*\/\Q$discussionlink\E$/ &&
+                                               if ($page !~ /.*\/\Q$config{discussionpage}\E$/ &&
                                                    (length $config{cgiurl} ||
                                                    (length $config{cgiurl} ||
-                                                    exists $links{$page."/".$discussionlink})) {
+                                                    exists $links{$page."/".$config{discussionpage}})) {
                                                        $template->param(have_actions => 1);
                                                        $template->param(discussionlink =>
                                                                htmllink($page,
                                                                        $params{destpage},
                                                        $template->param(have_actions => 1);
                                                        $template->param(discussionlink =>
                                                                htmllink($page,
                                                                        $params{destpage},
-                                                                       gettext("Discussion"),
+                                                                       $config{discussionpage},
                                                                        noimageinline => 1,
                                                                        forcesubpage => 1));
                                                }
                                                                        noimageinline => 1,
                                                                        forcesubpage => 1));
                                                }