X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/be02a80b7a19f3c33a8ea42c0750d94e0a91206f..bf3077b605a2cc749d4266fe630ba4bd19c9bb46:/IkiWiki/Plugin/meta.pm?ds=sidebyside
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index 1a9f94a12..f5b9bb521 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -121,6 +121,17 @@ sub preprocess (@) {
add_link($page, $value);
return "";
}
+ elsif ($key eq 'enclosure') {
+ my $link=bestlink($page, $value);
+ if (! length $link) {
+ error gettext("enclosure not found")
+ }
+ add_depends($page, $link, deptype("presence"));
+
+ $value=urlto($link, $page, 1);
+ $pagestate{$page}{meta}{enclosure}=$value;
+ # fallthrough
+ }
elsif ($key eq 'author') {
$pagestate{$page}{meta}{author}=$value;
if (exists $params{sortas}) {
@@ -179,6 +190,17 @@ sub preprocess (@) {
'" title="'.encode_entities($title).
"\" type=\"text/css\" />", $page, $destpage);
}
+ elsif ($key eq 'script') {
+ my $defer=exists $params{defer} ? ' defer="defer"' : '';
+ my $async=exists $params{async} ? ' async="async"' : '';
+ my $js=bestlink($page, $value.".js");
+ if (! length $js) {
+ error gettext("script not found");
+ }
+ push @{$metaheaders{$page}}, scrub('',
+ $page, $destpage);
+ }
elsif ($key eq 'openid') {
my $delegate=0; # both by default
if (exists $params{delegate}) {
@@ -206,6 +228,13 @@ sub preprocess (@) {
'content="'.encode_entities($url).'" />';
}
}
+ elsif ($key eq 'foaf') {
+ if (safeurl($value)) {
+ push @{$metaheaders{$page}}, '';
+ }
+ }
elsif ($key eq 'redir') {
return "" if $page ne $destpage;
my $safe=0;
@@ -257,17 +286,23 @@ sub preprocess (@) {
push @{$metaheaders{$page}}, '';
}
- elsif ($key eq 'description') {
- push @{$metaheaders{$page}}, '';
}
elsif ($key eq 'name') {
- push @{$metaheaders{$page}}, scrub('', $page, $destpage);
}
+ elsif ($key eq 'keywords') {
+ # Make sure the keyword string is safe: only allow alphanumeric
+ # characters, space and comma and strip the rest.
+ $value =~ s/[^[:alnum:], ]+//g;
+ push @{$metaheaders{$page}}, '';
+ }
else {
push @{$metaheaders{$page}}, scrub('query(name => "title")) {
+ eval q{use HTML::Entities};
$template->param(title => HTML::Entities::encode_numeric($pagestate{$page}{meta}{title}));
$template->param(title_overridden => 1);
}
- foreach my $field (qw{author authorurl permalink}) {
- $template->param($field => $pagestate{$page}{meta}{$field})
+ if (exists $pagestate{$page}{meta}{enclosure}) {
+ $template->param(enclosure => HTML::Entities::encode_entities(IkiWiki::urlabs($pagestate{$page}{meta}{enclosure}, $config{url})));
+ }
+
+ foreach my $field (qw{authorurl}) {
+ eval q{use HTML::Entities};
+ $template->param($field => HTML::Entities::encode_entities($pagestate{$page}{meta}{$field}))
if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field);
}
foreach my $field (qw{permalink}) {
- $template->param($field => IkiWiki::urlabs($pagestate{$page}{meta}{$field}, $config{url}))
- if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field);
+ if (exists $pagestate{$page}{meta}{$field} && $template->query(name => $field)) {
+ eval q{use HTML::Entities};
+ $template->param($field => HTML::Entities::encode_entities(IkiWiki::urlabs($pagestate{$page}{meta}{$field}, $config{url})));
+ }
}
- foreach my $field (qw{description}) {
+ foreach my $field (qw{description author}) {
+ eval q{use HTML::Entities};
$template->param($field => HTML::Entities::encode_numeric($pagestate{$page}{meta}{$field}))
if exists $pagestate{$page}{meta}{$field} && $template->query(name => $field);
}