X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/be02a80b7a19f3c33a8ea42c0750d94e0a91206f..c037714b77535c849c8d8ef4807af2b59737a5c5:/IkiWiki/Plugin/meta.pm
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index 1a9f94a12..7ea70b5d1 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -107,12 +107,12 @@ sub preprocess (@) {
# fallthrough
}
elsif ($key eq 'license') {
- push @{$metaheaders{$page}}, '';
+ push @{$metaheaders{$page}}, '';
$pagestate{$page}{meta}{license}=$value;
return "";
}
elsif ($key eq 'copyright') {
- push @{$metaheaders{$page}}, '';
+ push @{$metaheaders{$page}}, '';
$pagestate{$page}{meta}{copyright}=$value;
return "";
}
@@ -179,6 +179,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 +217,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 +275,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})
+ 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);
}