diff options
author | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-27 23:08:03 +0000 |
---|---|---|
committer | joey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071> | 2006-07-27 23:08:03 +0000 |
commit | 20eacc2c1f74d0ab617dca36378a35920e313a23 (patch) | |
tree | d0bcea3c5a65bc77d209a6341fc0f8b2ffa470c3 /IkiWiki/Plugin/tag.pm | |
parent | 5017ffd8a512c09d3c34764709791812acfc5515 (diff) |
- 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.
Diffstat (limited to 'IkiWiki/Plugin/tag.pm')
-rw-r--r-- | IkiWiki/Plugin/tag.pm | 19 |
1 files changed, 17 insertions, 2 deletions
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 |