]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - IkiWiki/Plugin/meta.pm
* Fix absolute url munging in rss generation to support https, ftp, etc urls
[git.ikiwiki.info.git] / IkiWiki / Plugin / meta.pm
1 #!/usr/bin/perl
2 # Ikiwiki metadata plugin.
3 package IkiWiki::Plugin::meta;
5 use warnings;
6 use strict;
7 use IkiWiki;
9 my %meta;
10 my %title;
12 sub import { #{{{
13         IkiWiki::hook(type => "preprocess", id => "meta", 
14                 call => \&preprocess);
15         IkiWiki::hook(type => "pagetemplate", id => "meta", 
16                 call => \&pagetemplate);
17 } # }}}
19 sub preprocess (@) { #{{{
20         if (! @_) {
21                 return "";
22         }
23         my %params=@_;
24         my $key=shift;
25         my $value=$params{$key};
26         delete $params{$key};
27         my $page=$params{page};
28         delete $params{page};
30         eval q{use CGI 'escapeHTML'};
32         if ($key eq 'link') {
33                 if (%params) {
34                         $meta{$page}='' unless exists $meta{$page};
35                         $meta{$page}.="<link href=\"".escapeHTML($value)."\" ".
36                                 join(" ", map { escapeHTML("$_=\"$params{$_}\"") } keys %params).
37                                 " />\n";
38                 }
39                 else {
40                         # hidden WikiLink
41                         push @{$IkiWiki::links{$page}}, $value;
42                 }
43         }
44         elsif ($key eq 'title') {
45                 $title{$page}=escapeHTML($value);
46         }
47         else {
48                 $meta{$page}='' unless exists $meta{$page};
49                 $meta{$page}.="<meta name=\"".escapeHTML($key)."\" content=\"".escapeHTML($value)."\" />\n";
50         }
52         return "";
53 } # }}}
55 sub pagetemplate ($$) { #{{{
56         my $page=shift;
57         my $template=shift;
59         $template->param(meta => $meta{$page}) if exists $meta{$page};
60         $template->param(title => $title{$page}) if exists $title{$page};
61 } # }}}
63 1