summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/tag.pm
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-27 23:08:03 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-27 23:08:03 +0000
commit20eacc2c1f74d0ab617dca36378a35920e313a23 (patch)
treed0bcea3c5a65bc77d209a6341fc0f8b2ffa470c3 /IkiWiki/Plugin/tag.pm
parent5017ffd8a512c09d3c34764709791812acfc5515 (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.pm19
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