From 2f22ee85e547dfe408fc0ec520aed6a6e137e136 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 3 May 2010 12:15:40 -0400 Subject: [PATCH] Add ACTIONS variable to page.tmpl, which allows plugins to add arbitrary links to the action bar without modifying the template further. (COMMENTSLINK and DISCUSSIONLINK could be folded into this, but are kept separate for now to avoid breaking modified templates.) --- IkiWiki/Plugin/skeleton.pm.example | 9 +++++++++ IkiWiki/Render.pm | 9 ++++++++- debian/changelog | 4 ++++ doc/plugins/write.mdwn | 9 +++++++++ templates/page.tmpl | 9 +++++++-- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/IkiWiki/Plugin/skeleton.pm.example b/IkiWiki/Plugin/skeleton.pm.example index ddf2996d6..a404e24af 100644 --- a/IkiWiki/Plugin/skeleton.pm.example +++ b/IkiWiki/Plugin/skeleton.pm.example @@ -24,6 +24,7 @@ sub import { hook(type => "format", id => "skeleton", call => \&format); hook(type => "pagetemplate", id => "skeleton", call => \&pagetemplate); hook(type => "templatefile", id => "skeleton", call => \&templatefile); + hook(type => "pageactions", id => "skeleton", call => \&pageactions); hook(type => "delete", id => "skeleton", call => \&delete); hook(type => "change", id => "skeleton", call => \&change); hook(type => "cgi", id => "skeleton", call => \&cgi); @@ -146,6 +147,14 @@ sub templatefile (@) { debug("skeleton plugin running as a templatefile hook"); } +sub pageactions (@) { + my %params=@_; + my $page=$params{page}; + + debug("skeleton plugin running as a pageactions hook"); + return (); +} + sub delete (@) { my @files=@_; diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm index cf6943e7d..a824ba539 100644 --- a/IkiWiki/Render.pm +++ b/IkiWiki/Render.pm @@ -112,7 +112,14 @@ sub genpage ($$) { } } - if ($actions) { + my @actions; + run_hooks(pageactions => sub { + push @actions, map { { action => $_ } } + grep { defined } shift->(page => $page); + }); + $template->param(actions => \@actions); + + if ($actions || @actions) { $template->param(have_actions => 1); } diff --git a/debian/changelog b/debian/changelog index 789fda1ce..e03375bd3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,10 @@ ikiwiki (3.20100502) UNRELEASED; urgency=low * In html5 mode, use all the nice new semantic tags. Care was taken to not change the id/class named used in the CSS, so only CSS that refers to tag types needed to be changed. + * Add ACTIONS variable to page.tmpl, which allows plugins to add arbitrary + links to the action bar without modifying the template further. + (COMMENTSLINK and DISCUSSIONLINK could be folded into this, but + are kept separate for now to avoid breaking modified templates.) -- Joey Hess Sun, 02 May 2010 13:22:50 -0400 diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index 5e7042c3b..3b1d770eb 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -319,6 +319,15 @@ should return the name of the template file to use (relative to the template directory), or undef if it doesn't want to change the default ("page.tmpl"). +### pageactions + + hook(type => "pageactions", id => "foo", call => \&pageactions); + +This hook allows plugins to add arbitrary actions to the action bar on a +page (next to Edit, RecentChanges, etc). The hook is passed a "page" +parameter, and can return a list of html fragments to add to the action +bar. + ### sanitize hook(type => "sanitize", id => "foo", call => \&sanitize); diff --git a/templates/page.tmpl b/templates/page.tmpl index 195ce7886..8a9911fae 100644 --- a/templates/page.tmpl +++ b/templates/page.tmpl @@ -66,11 +66,16 @@
  • Preferences
  • + + +
  • +
    +
    -

  • +
  • -

  • +
  • -- 2.26.2