X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/f707d62481052a3cba1396a681f206d9e66f67ef..f9b87a9f8b498f3a41614b159dcb278024be70dd:/IkiWiki/Plugin/meta.pm
diff --git a/IkiWiki/Plugin/meta.pm b/IkiWiki/Plugin/meta.pm
index 55c214f67..3991797c0 100644
--- a/IkiWiki/Plugin/meta.pm
+++ b/IkiWiki/Plugin/meta.pm
@@ -9,11 +9,20 @@ use IkiWiki 2.00;
my %metaheaders;
sub import { #{{{
+ hook(type => "getsetup", id => "meta", call => \&getsetup);
hook(type => "needsbuild", id => "meta", call => \&needsbuild);
hook(type => "preprocess", id => "meta", call => \&preprocess, scan => 1);
hook(type => "pagetemplate", id => "meta", call => \&pagetemplate);
} # }}}
+sub getsetup () { #{{{
+ return
+ plugin => {
+ safe => 1,
+ rebuild => undef,
+ },
+} #}}}
+
sub needsbuild (@) { #{{{
my $needsbuild=shift;
foreach my $page (keys %pagestate) {
@@ -29,9 +38,10 @@ sub needsbuild (@) { #{{{
}
}
-sub scrub ($) { #{{{
+sub scrub ($$) { #{{{
if (IkiWiki::Plugin::htmlscrubber->can("sanitize")) {
- return IkiWiki::Plugin::htmlscrubber::sanitize(content => shift);
+ return IkiWiki::Plugin::htmlscrubber::sanitize(
+ content => shift, destpage => shift);
}
else {
return shift;
@@ -85,13 +95,7 @@ sub preprocess (@) { #{{{
# fallthrough
}
elsif ($key eq 'guid') {
- my $abs = $value;
-
- if ($abs =~ m/^[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}$/) {
- $abs = lc "urn:uuid:$abs";
- }
-
- $pagestate{$page}{meta}{guid}=HTML::Entities::encode_numeric($abs);
+ $pagestate{$page}{meta}{guid}=HTML::Entities::encode_numeric($value);
# fallthrough
}
elsif ($key eq 'license') {
@@ -134,7 +138,7 @@ sub preprocess (@) { #{{{
elsif ($key eq 'permalink') {
if (safeurl($value)) {
$pagestate{$page}{meta}{permalink}=$value;
- push @{$metaheaders{$page}}, scrub('');
+ push @{$metaheaders{$page}}, scrub('', $destpage);
}
}
elsif ($key eq 'stylesheet') {
@@ -144,7 +148,7 @@ sub preprocess (@) { #{{{
# editable page as a stylesheet
my $stylesheet=bestlink($page, $value.".css");
if (! length $stylesheet) {
- return "[[meta ".gettext("stylesheet not found")."]]";
+ error gettext("stylesheet not found")
}
push @{$metaheaders{$page}}, '";
if (! $safe) {
- $redir=scrub($redir);
+ $redir=scrub($redir, $destpage);
}
push @{$metaheaders{$page}}, $redir;
}
@@ -213,7 +217,7 @@ sub preprocess (@) { #{{{
join(" ", map {
encode_entities($_)."=\"".encode_entities(decode_entities($params{$_}))."\""
} keys %params).
- " />\n");
+ " />\n", $destpage);
}
}
elsif ($key eq 'robots') {
@@ -222,7 +226,7 @@ sub preprocess (@) { #{{{
}
else {
push @{$metaheaders{$page}}, scrub('');
+ '" content="'.encode_entities($value).'" />', $destpage);
}
return "";
@@ -270,7 +274,7 @@ sub match { #{{{
$val=$pagestate{$page}{meta}{$field};
}
elsif ($field eq 'title') {
- $val = IkiWiki::pagetitle($page);
+ $val = pagetitle($page);
}
if (defined $val) {