summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki.pm11
-rw-r--r--IkiWiki/Plugin/recentchanges.pm18
-rw-r--r--templates/page.tmpl3
3 files changed, 26 insertions, 6 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 33e4e1d1f..46c29abe3 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -1748,7 +1748,6 @@ sub misctemplate ($$;@) {
$template->param(
dynamic => 1,
- have_actions => 0, # force off
title => $title,
wikiname => $config{wikiname},
content => $content,
@@ -1756,6 +1755,16 @@ sub misctemplate ($$;@) {
html5 => $config{html5},
@_,
);
+
+ my @actions;
+ run_hooks(pageactions => sub {
+ push @actions, map { { action => $_ } }
+ grep { defined } shift->(page => "");
+ });
+ $template->param(actions => \@actions);
+ if (@actions) {
+ $template->param(have_actions => 1);
+ }
return $template->output;
}
diff --git a/IkiWiki/Plugin/recentchanges.pm b/IkiWiki/Plugin/recentchanges.pm
index 5c7b71aaa..65044080f 100644
--- a/IkiWiki/Plugin/recentchanges.pm
+++ b/IkiWiki/Plugin/recentchanges.pm
@@ -11,6 +11,7 @@ sub import {
hook(type => "getsetup", id => "recentchanges", call => \&getsetup);
hook(type => "checkconfig", id => "recentchanges", call => \&checkconfig);
hook(type => "refresh", id => "recentchanges", call => \&refresh);
+ hook(type => "pageactions", id => "recentchanges", call => \&pageactions);
hook(type => "pagetemplate", id => "recentchanges", call => \&pagetemplate);
hook(type => "htmlize", id => "_change", call => \&htmlize);
# Load goto to fix up links from recentchanges
@@ -61,14 +62,27 @@ sub refresh ($) {
}
# Enable the recentchanges link on wiki pages.
+sub pageactions (@) {
+ my %params=@_;
+ my $page=$params{page};
+
+ if (defined $config{recentchangespage} && $config{rcs} &&
+ $page ne $config{recentchangespage}) {
+ return htmllink($page, $page, $config{recentchangespage},
+ gettext("RecentChanges"));
+ }
+}
+
+# Backwards compatability for templates still using
+# RECENTCHANGESURL.
sub pagetemplate (@) {
my %params=@_;
my $template=$params{template};
my $page=$params{page};
if (defined $config{recentchangespage} && $config{rcs} &&
- $page ne $config{recentchangespage} &&
- $template->query(name => "recentchangesurl")) {
+ $template->query(name => "recentchangesurl") &&
+ $page ne $config{recentchangespage}) {
$template->param(recentchangesurl => urlto($config{recentchangespage}, $page));
$template->param(have_actions => 1);
}
diff --git a/templates/page.tmpl b/templates/page.tmpl
index 3bb7197f0..049d31ad5 100644
--- a/templates/page.tmpl
+++ b/templates/page.tmpl
@@ -61,9 +61,6 @@
<TMPL_IF EDITURL>
<li><a href="<TMPL_VAR EDITURL>" rel="nofollow">Edit</a></li>
</TMPL_IF>
-<TMPL_IF RECENTCHANGESURL>
-<li><a href="<TMPL_VAR RECENTCHANGESURL>">RecentChanges</a></li>
-</TMPL_IF>
<TMPL_IF HISTORYURL>
<li><a href="<TMPL_VAR HISTORYURL>">History</a></li>
</TMPL_IF>