diff options
-rw-r--r-- | IkiWiki/Plugin/skeleton.pm.example | 9 | ||||
-rw-r--r-- | IkiWiki/Render.pm | 9 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rw-r--r-- | doc/plugins/write.mdwn | 9 | ||||
-rw-r--r-- | 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 <joeyh@debian.org> 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 @@ <TMPL_IF NAME="PREFSURL"> <li><a href="<TMPL_VAR PREFSURL>">Preferences</a></li> </TMPL_IF> +<TMPL_IF NAME="ACTIONS"> +<TMPL_LOOP NAME="ACTIONS"> +<li><TMPL_VAR ACTION></li> +</TMPL_LOOP> +</TMPL_IF> <TMPL_IF NAME="COMMENTSLINK"> -<li><TMPL_VAR COMMENTSLINK><br /></li> +<li><TMPL_VAR COMMENTSLINK></li> <TMPL_ELSE> <TMPL_IF NAME="DISCUSSIONLINK"> -<li><TMPL_VAR DISCUSSIONLINK><br /></li> +<li><TMPL_VAR DISCUSSIONLINK></li> </TMPL_IF> </TMPL_IF> </ul> |