fix title metadata on blogs, reorg needed to do it, simplified tag some
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 31 Jul 2006 00:34:18 +0000 (00:34 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 31 Jul 2006 00:34:18 +0000 (00:34 +0000)
IkiWiki/Plugin/inline.pm
IkiWiki/Plugin/tag.pm
debian/changelog
doc/templates.mdwn
templates/rssitem.tmpl [new file with mode: 0644]
templates/rsspage.tmpl

index b06470bfef299dd0accf075ef6103e05893b4b21..110410abc71ce58e7a294f6820603d5a7de91cd8 100644 (file)
@@ -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 {
index 2aa70d4068a81e769dd0a1491d4f9dc50873b8bc..3de09a7672641ec471eb147038fd6a9672a3e0e3 100644 (file)
@@ -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}}]);
                }
        }
 } # }}}
index a0989cb7451e3f61aea30d44df213ebacbd34e5d..b42371969d8329aa2eae36c8fc3963766ec021f4 100644 (file)
@@ -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
 
index e500638f4382999a65120c989c7c384a95a112af..55e6ec6c817b9e97962ff67509d1e9f14d24e5a7 100644 (file)
@@ -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 (file)
index 0000000..4216005
--- /dev/null
@@ -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>
index 55b1222ac51141de950f6022bacc44609cde65b0..e7676ebbd11253ceb3ad9aa55d7cf46c6ee0350d 100644 (file)
@@ -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>