diff options
-rw-r--r-- | IkiWiki/Plugin/inline.pm | 31 | ||||
-rw-r--r-- | IkiWiki/Plugin/tag.pm | 17 | ||||
-rw-r--r-- | debian/changelog | 3 | ||||
-rw-r--r-- | doc/templates.mdwn | 1 | ||||
-rw-r--r-- | templates/rssitem.tmpl | 12 | ||||
-rw-r--r-- | templates/rsspage.tmpl | 25 |
6 files changed, 43 insertions, 46 deletions
diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index b06470bfe..110410abc 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -88,7 +88,7 @@ sub preprocess_inline (@) { #{{{ my $link=htmlpage(bestlink($params{page}, $page)); $link=abs2rel($link, dirname($params{page})); $template->param(pageurl => $link); - $template->param(title => $page); + $template->param(title => pagetitle(basename($page))); $template->param(content => get_inline_content($page, $params{page})) if $params{archive} eq "no"; $template->param(ctime => displaytime($pagectime{$page})); @@ -161,25 +161,32 @@ sub genrss ($@) { #{{{ my $url="$config{url}/".htmlpage($page); - my $template=template("rsspage.tmpl", blind_cache => 1, + my $itemtemplate=template("rssitem.tmpl", blind_cache => 1, die_on_bad_params => 0); - - my @items; + my $content=""; foreach my $p (@pages) { - push @items, { - itemtitle => pagetitle(basename($p)), - itemurl => "$config{url}/$renderedfiles{$p}", - itempubdate => date_822($pagectime{$p}), - itemcontent => absolute_urls(get_inline_content($p, $page), $url), - page => $p, # used by category adding code in tag plugin - } if exists $renderedfiles{$p}; + next unless exists $renderedfiles{$p}; + + $itemtemplate->param( + title => pagetitle(basename($p)), + url => "$config{url}/$renderedfiles{$p}", + pubdate => date_822($pagectime{$p}), + content => absolute_urls(get_inline_content($p, $page), $url), + ); + run_hooks(pagetemplate => sub { + shift->(page => $p, destpage => $page, + template => $itemtemplate); + }); + $content.=$itemtemplate->output; + $itemtemplate->clear_params; } + my $template=template("rsspage.tmpl", blind_cache => 1); $template->param( title => $config{wikiname}, wikiname => $config{wikiname}, pageurl => $url, - items => \@items, + content => $content, ); run_hooks(pagetemplate => sub { diff --git a/IkiWiki/Plugin/tag.pm b/IkiWiki/Plugin/tag.pm index 2aa70d406..3de09a767 100644 --- a/IkiWiki/Plugin/tag.pm +++ b/IkiWiki/Plugin/tag.pm @@ -65,19 +65,10 @@ sub pagetemplate (@) { #{{{ }, @{$tags{$page}} ]) if exists $tags{$page} && @{$tags{$page}} && $template->query(name => "tags"); - if ($template->query(name => "items")) { - # It's an rss template. Modify each item in the feed, - # adding any categories based on the page for that item. - foreach my $item (@{$template->param("items")}) { - my $p=$item->{page}; - if (exists $tags{$p} && @{$tags{$p}}) { - $item->{categories}=[]; - foreach my $tag (@{$tags{$p}}) { - push @{$item->{categories}}, { - category => $tag, - }; - } - } + if ($template->query(name => "pubdate")) { + # It's an rss template. Add any categories. + if (exists $tags{$page} && @{$tags{$page}}) { + $template->param(categories => [map { category => $_ }, @{$tags{$page}}]); } } } # }}} diff --git a/debian/changelog b/debian/changelog index a0989cb74..b42371969 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,8 +20,7 @@ ikiwiki (1.13) UNRELEASED; urgency=low * Avoid outputting duplicate meta info. * Include title metadata on aggregated posts for capitalised and un-munged titles. - * Title metadata of inlined pages now shows up in blogs, although not yet - in their rss feeds. + * Title metadata of inlined pages now shows up in blogs and rss feeds. -- Joey Hess <joeyh@debian.org> Sun, 30 Jul 2006 19:22:11 -0400 diff --git a/doc/templates.mdwn b/doc/templates.mdwn index e500638f4..55e6ec6c8 100644 --- a/doc/templates.mdwn +++ b/doc/templates.mdwn @@ -17,6 +17,7 @@ It ships with some basic templates which can be customised: * `passwordmail.tmpl` - Not a html template, this is used to generate the mail with the user's password in it. * `rsspage.tmpl` - Used for generating rss feeds for [[blog]]s. +* `rssitem.tmpl` - Used for generating individual items on rss feeds. * `inlinepage.tmpl` - Used for adding a page inline in a blog page. * `inlinepagetitle.tmpl` - Used for listing a page inline in a blog diff --git a/templates/rssitem.tmpl b/templates/rssitem.tmpl new file mode 100644 index 000000000..421600591 --- /dev/null +++ b/templates/rssitem.tmpl @@ -0,0 +1,12 @@ +<item> + <title><TMPL_VAR TITLE ESCAPE=HTML></title> + <guid><TMPL_VAR URL></guid> + <link><TMPL_VAR URL></link> + <TMPL_IF NAME="CATEGORIES"> + <TMPL_LOOP NAME="CATEGORIES"> + <category><TMPL_VAR NAME=CATEGORY></category> + </TMPL_LOOP> + </TMPL_IF> + <pubDate><TMPL_VAR PUBDATE></pubDate> + <description><![CDATA[<TMPL_VAR CONTENT>]]></description> +</item> diff --git a/templates/rsspage.tmpl b/templates/rsspage.tmpl index 55b1222ac..e7676ebbd 100644 --- a/templates/rsspage.tmpl +++ b/templates/rsspage.tmpl @@ -1,22 +1,9 @@ <?xml version="1.0"?> <rss version="2.0"> - <channel> - <title><TMPL_VAR TITLE ESCAPE=HTML></title> - <link><TMPL_VAR PAGEURL></link> - <description><TMPL_VAR WIKINAME ESCAPE=HTML></description> - <TMPL_LOOP NAME="ITEMS"> - <item> - <title><TMPL_VAR ITEMTITLE ESCAPE=HTML></title> - <guid><TMPL_VAR ITEMURL></guid> - <link><TMPL_VAR ITEMURL></link> - <TMPL_IF NAME="CATEGORIES"> - <TMPL_LOOP NAME="CATEGORIES"> - <category><TMPL_VAR NAME=CATEGORY></category> - </TMPL_LOOP> - </TMPL_IF> - <pubDate><TMPL_VAR ITEMPUBDATE></pubDate> - <description><![CDATA[<TMPL_VAR ITEMCONTENT>]]></description> - </item> - </TMPL_LOOP> - </channel> +<channel> +<title><TMPL_VAR TITLE ESCAPE=HTML></title> +<link><TMPL_VAR PAGEURL></link> +<description><TMPL_VAR WIKINAME ESCAPE=HTML></description> +<TMPL_VAR CONTENT> +</channel> </rss> |