From 20eacc2c1f74d0ab617dca36378a35920e313a23 Mon Sep 17 00:00:00 2001 From: joey Date: Thu, 27 Jul 2006 23:08:03 +0000 Subject: - Adds a tag plugin that allows more easily tagging pages. The meta plugin can also still be used for that, but the tag plugin also lists a page's tags at the bottom of the page. - Allows preprocessor directives to have parameters with no specified value. - Fixes preprocessor directive parameter parsing so that foo=bar baz now means "foo=bar" and a "baz" with no value. * Run pagetemplate hooks when inlining pages so that inlines pages also list their tags. * Make all plugins with pagetemplate hooks check that variables exist on the template before setting them. --- IkiWiki/Plugin/inline.pm | 8 ++++++++ IkiWiki/Plugin/meta.pm | 6 ++++-- IkiWiki/Plugin/search.pm | 4 +++- IkiWiki/Plugin/tag.pm | 19 +++++++++++++++++-- 4 files changed, 32 insertions(+), 5 deletions(-) (limited to 'IkiWiki') diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 08126c4e6..749e39fb6 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -80,7 +80,15 @@ sub preprocess_inline (@) { #{{{ $template->param(content => get_inline_content($params{page}, $page)) if $params{archive} eq "no"; $template->param(ctime => displaytime($pagectime{$page})); + + if (exists $hooks{pagetemplate}) { + foreach my $id (keys %{$hooks{pagetemplate}}) { + $hooks{pagetemplate}{$id}{call}->($page, $template); + } + } + $ret.=$template->output; + $template->clear_params; } # TODO: should really add this to renderedfiles and call diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm index 41d096e0e..d4b4e5db5 100644 --- a/IkiWiki/Plugin/meta.pm +++ b/IkiWiki/Plugin/meta.pm @@ -56,8 +56,10 @@ sub pagetemplate ($$) { #{{{ my $page=shift; my $template=shift; - $template->param(meta => $meta{$page}) if exists $meta{$page}; - $template->param(title => $title{$page}) if exists $title{$page}; + $template->param(meta => $meta{$page}) + if exists $meta{$page} && $template->query(name => "meta"); + $template->param(title => $title{$page}) + if exists $title{$page} && $template->query(name => "title"); } # }}} 1 diff --git a/IkiWiki/Plugin/search.pm b/IkiWiki/Plugin/search.pm index 94b37ca06..8931e3fd4 100644 --- a/IkiWiki/Plugin/search.pm +++ b/IkiWiki/Plugin/search.pm @@ -32,7 +32,8 @@ sub pagetemplate ($$) { #{{{ my $template=shift; # Add search box to page header. - $template->param(searchform => qq{ + if ($template->query(name => "searchform")) { + $template->param(searchform => qq{
@@ -41,6 +42,7 @@ sub pagetemplate ($$) { #{{{
}); + } } #}}} sub delete (@) { #{{{ diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 841d508bf..a6eddb019 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -6,10 +6,13 @@ use warnings; use strict; use IkiWiki; -my %tag; +my %tags; sub import { #{{{ - IkiWiki::hook(type => "preprocess", id => "tag", call => \&preprocess); + IkiWiki::hook(type => "preprocess", id => "tag", + call => \&preprocess); + IkiWiki::hook(type => "pagetemplate", id => "tag", + call => \&pagetemplate); } # }}} sub preprocess (@) { #{{{ @@ -20,7 +23,9 @@ sub preprocess (@) { #{{{ my $page = $params{page}; delete $params{page}; + $tags{$page} = []; foreach my $tag (keys %params) { + push @{$tags{$page}}, $tag; # hidden WikiLink push @{$IkiWiki::links{$page}}, $tag; } @@ -28,4 +33,14 @@ sub preprocess (@) { #{{{ return ""; } # }}} +sub pagetemplate ($$) { #{{{ + my $page=shift; + my $template=shift; + + $template->param(tags => join(', ', + map { IkiWiki::htmllink($page, $page, $_) } + @{$tags{$page}})) + if exists $tags{$page} && $template->query(name => "tags"); +} # }}} + 1 -- cgit v1.2.3