summaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-01-08 20:41:25 -0500
committerJoey Hess <joey@kodama.kitenet.net>2008-01-08 20:41:25 -0500
commit86781fc43ec263967350dd6f12af9f1d05914500 (patch)
treecbeac99c8d974c4c1eccbe52244a2f21921f07a7 /IkiWiki/Plugin
parent4c1a4402f92204abee5a9425e74864825799f5d2 (diff)
* aggregate: Include copyright statements from rss feed as meta copyright
directives. * aggregate: Yet another state saving fix (sigh). * aggregate: Add hack to support feeds with invalidly escaped html entities.
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r--IkiWiki/Plugin/aggregate.pm13
1 files changed, 11 insertions, 2 deletions
diff --git a/IkiWiki/Plugin/aggregate.pm b/IkiWiki/Plugin/aggregate.pm
index 21c83e34a..a2c10ce5c 100644
--- a/IkiWiki/Plugin/aggregate.pm
+++ b/IkiWiki/Plugin/aggregate.pm
@@ -129,6 +129,7 @@ sub delete (@) { #{{{
my $state_loaded=0;
sub loadstate () { #{{{
return if $state_loaded;
+ $state_loaded=1;
if (-e "$config{wikistatedir}/aggregate") {
open(IN, "$config{wikistatedir}/aggregate") ||
die "$config{wikistatedir}/aggregate: $!";
@@ -159,8 +160,6 @@ sub loadstate () { #{{{
}
close IN;
-
- $state_loaded=1;
}
} #}}}
@@ -303,6 +302,13 @@ sub aggregate () { #{{{
$f=eval{XML::Feed->parse(\$content)};
}
if ($@) {
+ # Another possibility is badly escaped entities.
+ $feed->{message}.=" ".sprintf(gettext("(feed entities escaped)"));
+ $content=~s/\&(?!amp)(\w+);/&amp;$1;/g;
+ $content=Encode::decode_utf8($content);
+ $f=eval{XML::Feed->parse(\$content)};
+ }
+ if ($@) {
$feed->{message}=gettext("feed crashed XML::Feed!")." ($@)";
$feed->{error}=1;
debug($feed->{message});
@@ -318,6 +324,7 @@ sub aggregate () { #{{{
foreach my $entry ($f->entries) {
add_page(
feed => $feed,
+ copyright => $f->copyright,
title => defined $entry->title ? decode_entities($entry->title) : "untitled",
link => $entry->link,
content => defined $entry->content->body ? $entry->content->body : "",
@@ -397,6 +404,8 @@ sub add_page (@) { #{{{
$template->param(content => htmlescape(htmlabs($params{content}, $feed->{feedurl})));
$template->param(name => $feed->{name});
$template->param(url => $feed->{url});
+ $template->param(copyright => $params{copyright})
+ if defined $params{copyright} && length $params{copyright};
$template->param(permalink => urlabs($params{link}, $feed->{feedurl}))
if defined $params{link};
if (ref $feed->{tags}) {