diff options
-rw-r--r-- | IkiWiki/Plugin/aggregate.pm | 13 | ||||
-rw-r--r-- | debian/changelog | 4 | ||||
-rw-r--r-- | templates/aggregatepost.tmpl | 3 |
3 files changed, 18 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+);/&$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}) { diff --git a/debian/changelog b/debian/changelog index 1b83595e7..bc010e695 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,10 @@ ikiwiki (2.19) UNRELEASED; urgency=low * Add a prereq on Data::Dumper 2.11 or better, needed to dump q// objects. * htmlscrubber: Further work around #365971 by adding tags for 'br/', 'hr/' and 'p/'. + * 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. -- Joey Hess <joeyh@debian.org> Mon, 07 Jan 2008 15:35:16 -0500 diff --git a/templates/aggregatepost.tmpl b/templates/aggregatepost.tmpl index 5b0f2f49e..739a5762d 100644 --- a/templates/aggregatepost.tmpl +++ b/templates/aggregatepost.tmpl @@ -8,5 +8,8 @@ <TMPL_IF NAME="PERMALINK"> [[meta permalink="<TMPL_VAR NAME="PERMALINK" ESCAPE=HTML>"]] </TMPL_IF> +<TMPL_IF NAME="COPYRIGHT"> +[[meta copyright="<TMPL_VAR NAME="COPYRIGHT" ESCAPE=HTML>"]] +</TMPL_IF> [[meta author="<TMPL_VAR NAME="NAME" ESCAPE=HTML>"]] [[meta authorurl="<TMPL_VAR NAME="URL" ESCAPE=HTML>"]] |