]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Render.pm
add blog post template
[ikiwiki.git] / IkiWiki / Render.pm
index 7d2e8c4ee981750ea99b5a56de4c580a539f0404..4e2caa6cef31435bc026bf70f9b7573d406e46c1 100644 (file)
@@ -159,13 +159,23 @@ sub postprocess_html_inline { #{{{
                $params{show}=10;
        }
        $inlinepages{$parentpage}=$params{pages};
-               
+       
+       my $ret="";
+       
+       if (exists $params{rootpage}) {
+               my $formtemplate=HTML::Template->new(blind_cache => 1,
+                       filename => "$config{templatedir}/blogpost.tmpl");
+               $formtemplate->param(cgiurl => $config{cgiurl});
+               $formtemplate->param(rootpage => $params{rootpage});
+               my $form=$formtemplate->output;
+               $ret.=$form;
+       }
+       
        my $template=HTML::Template->new(blind_cache => 1,
                filename => (($params{archive} eq "no") 
                                ? "$config{templatedir}/inlinepage.tmpl"
                                : "$config{templatedir}/inlinepagetitle.tmpl"));
        
-       my $ret="";
        foreach my $page (blog_list($params{pages}, $params{show})) {
                next if $page eq $parentpage;
                $template->param(pagelink => htmllink($parentpage, $page));
@@ -204,7 +214,7 @@ sub genpage ($$$) { #{{{
                $template->param(historyurl => $u);
        }
 
-       if ($config{rss}) {
+       if ($config{rss} && $inlinepages{$page}) {
                $template->param(rssurl => rsspage($page));
        }
        
@@ -238,7 +248,7 @@ sub absolute_urls ($$) { #{{{
        $content=~s/<a\s+href="(?!http:\/\/)([^"]+)"/<a href="$url$1"/ig;
        $content=~s/<img\s+src="(?!http:\/\/)([^"]+)"/<img src="$url$1"/ig;
        return $content;
-} #}}}zo
+} #}}}
 
 sub genrss ($$$) { #{{{
        my $content=shift;
@@ -264,7 +274,6 @@ sub genrss ($$$) { #{{{
                if (! exists $params{pages}) {
                        return "";
                }
-               $inlinepages{$parentpage}=$params{pages};
                
                $isblog=1;
                foreach my $page (blog_list($params{pages}, $params{show})) {
@@ -282,16 +291,6 @@ sub genrss ($$$) { #{{{
        
        $content = postprocess($page, $content, inline => $gen_blog);
 
-       # Regular page gets a feed that is updated every time the
-       # page is changed, so the mtime is encoded in the guid.
-       push @items, {
-               itemtitle => pagetitle(basename($page)),
-               itemguid => "$url?mtime=$mtime",
-               itemurl => $url,
-               itempubdate => date_822($mtime),
-               itemcontent => absolute_urls($content, $url),
-       } unless $isblog;
-       
        $template->param(
                title => $config{wikiname},
                pageurl => $url,
@@ -357,7 +356,7 @@ sub render ($) { #{{{
                # TODO: should really add this to renderedfiles and call
                # check_overwrite, as above, but currently renderedfiles
                # only supports listing one file per page.
-               if ($config{rss}) {
+               if ($config{rss} && exists $inlinepages{$page}) {
                        writefile("$config{destdir}/".rsspage($page),
                                genrss($content, $page, mtime("$config{srcdir}/$file")));
                }
@@ -474,20 +473,24 @@ FILE:             foreach my $file (@files) {
        # problem is the backlinks could be wrong in the first pass render
        # above
        if (%rendered || @del) {
+               foreach my $f (@files) {
+                       my $p=pagename($f);
+                       if (exists $inlinepages{$p}) {
+                               foreach my $file (keys %rendered, @del) {
+                                       my $page=pagename($file);
+                                       if (globlist_match($page, $inlinepages{$p})) {
+                                               debug("rendering $f, which inlines $page");
+                                               render($f);
+                                               last;
+                                       }
+                               }
+                       }
+               }
+               
                my %linkchanged;
                foreach my $file (keys %rendered, @del) {
                        my $page=pagename($file);
                        
-                       foreach my $f (@files) {
-                               my $p=pagename($f);
-                               if (exists $inlinepages{$p} && 
-                                   globlist_match($page, $inlinepages{$p})) {
-                                       debug("rendering $f, which inlines $page");
-                                       render($f);
-                                       next;
-                               }
-                       }
-                       
                        if (exists $links{$page}) {
                                foreach my $link (map { bestlink($page, $_) } @{$links{$page}}) {
                                        if (length $link &&