]> sipb.mit.edu Git - ikiwiki.git/commitdiff
* aggregate: Include copyright statements from rss feed as meta copyright
authorJoey Hess <joey@kodama.kitenet.net>
Wed, 9 Jan 2008 01:41:25 +0000 (20:41 -0500)
committerJoey Hess <joey@kodama.kitenet.net>
Wed, 9 Jan 2008 01:41:25 +0000 (20:41 -0500)
  directives.
* aggregate: Yet another state saving fix (sigh).
* aggregate: Add hack to support feeds with invalidly escaped html entities.

IkiWiki/Plugin/aggregate.pm
debian/changelog
templates/aggregatepost.tmpl

index 21c83e34a6f3fa6ddee43fc127e582ab037e7abb..a2c10ce5c337395ca53ef58c396cb0d8009f3ad6 100644 (file)
@@ -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;
        }
 } #}}}
 
@@ -302,6 +301,13 @@ sub aggregate () { #{{{
                        $content=Encode::decode_utf8($content);
                        $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;
@@ -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}) {
index 1b83595e77c122f120581f55fe63fca5c73e3679..bc010e6955c31c213102bb56e5bc5ebd18202cdc 100644 (file)
@@ -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
 
index 5b0f2f49e21d11559ec2f8539cb7852a61c683c2..739a5762d24ef1c5eec37df577cace474f4f6103 100644 (file)
@@ -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>"]]