]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Plugin/inline.pm
inline: Support emptyfeeds=no option to skip generating empty feeds.
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index 1b1ca2ce22a8f2562a5977fda88cb7c41b2ea57f..5e4df95f4dc851653d28f64124678953c4905340 100644 (file)
@@ -161,6 +161,7 @@ sub preprocess_inline (@) { #{{{
        my $atom=(($config{atom} || $config{allowatom}) && exists $params{atom}) ? yesno($params{atom}) : $config{atom};
        my $quick=exists $params{quick} ? yesno($params{quick}) : 0;
        my $feeds=exists $params{feeds} ? yesno($params{feeds}) : !$quick;
+       my $emptyfeeds=exists $params{emptyfeeds} ? yesno($params{emptyfeeds}) : 1;
        my $feedonly=yesno($params{feedonly});
        if (! exists $params{show} && ! $archive) {
                $params{show}=10;
@@ -201,7 +202,7 @@ sub preprocess_inline (@) { #{{{
                @list=sort { $pagectime{$b} <=> $pagectime{$a} } @list;
        }
        else {
-               return sprintf(gettext("unknown sort type %s"), $params{sort});
+               error sprintf(gettext("unknown sort type %s"), $params{sort});
        }
 
        if (yesno($params{reverse})) {
@@ -232,6 +233,10 @@ sub preprocess_inline (@) { #{{{
        # that if they are removed or otherwise changed, the inline will be
        # sure to be updated.
        add_depends($params{page}, join(" or ", $#list >= $#feedlist ? @list : @feedlist));
+       
+       if ($feeds && exists $params{feedpages}) {
+               @feedlist=grep { pagespec_match($_, $params{feedpages}, location => $params{page}) } @feedlist;
+       }
 
        my $feednum="";
 
@@ -285,8 +290,13 @@ sub preprocess_inline (@) { #{{{
                                gettext("Add a new post titled:"));
                }
                $ret.=$formtemplate->output;
+               
+               # The post form includes the feed buttons, so
+               # emptyfeeds cannot be hidden.
+               $emptyfeeds=1;
        }
-       elsif ($feeds && !$params{preview}) {
+       elsif ($feeds && !$params{preview} &&
+              ! (! $emptyfeeds && ! @feedlist)) {
                # Add feed buttons.
                my $linktemplate=template("feedlink.tmpl", blind_cache => 1);
                $linktemplate->param(rssurl => $rssurl) if $rss;
@@ -298,7 +308,7 @@ sub preprocess_inline (@) { #{{{
                require HTML::Template;
                my @params=IkiWiki::template_params($params{template}.".tmpl", blind_cache => 1);
                if (! @params) {
-                       return sprintf(gettext("nonexistant template %s"), $params{template});
+                       error sprintf(gettext("nonexistant template %s"), $params{template});
                }
                my $template=HTML::Template->new(@params) unless $raw;
        
@@ -363,11 +373,7 @@ sub preprocess_inline (@) { #{{{
                }
        }
        
-       if ($feeds) {
-               if (exists $params{feedpages}) {
-                       @feedlist=grep { pagespec_match($_, $params{feedpages}, location => $params{page}) } @feedlist;
-               }
-       
+       if ($feeds && ! (! $emptyfeeds && ! @feedlist)) {
                if ($rss) {
                        my $rssp=rsspage($params{destpage}).$feednum;
                        will_render($params{destpage}, $rssp);