enable action bar on misctemplates
authorJoey Hess <joey@kitenet.net>
Sat, 15 May 2010 00:04:02 +0000 (20:04 -0400)
committerJoey Hess <joey@kitenet.net>
Sat, 15 May 2010 00:04:02 +0000 (20:04 -0400)
So RecentChanges shows on the action bar there,
convert recentchanges to use new pageactions hook,
with compatability code to avoid breaking old templates.

IkiWiki.pm
IkiWiki/Plugin/recentchanges.pm
templates/page.tmpl

index 33e4e1d1f3f40326228f1d11167c0726e4e13531..46c29abe38a045b813a8a32a632c3f97c729faa8 100644 (file)
@@ -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;
 }
index 5c7b71aaa64bd02e310b6c5428224ce68ba0679a..65044080fe78d835d1d4b57e627ec0a9c8052661 100644 (file)
@@ -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);
        }
index 3bb7197f0e8e84f9fd22ce76dab9488478bdb899..049d31ad5e244299c56d5ef59303ac30b3c17aab 100644 (file)
@@ -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>