inline: allow assigning an id to postform/feedlink
[ikiwiki.git] / IkiWiki / Plugin / inline.pm
index e8e71e552848ccc422af5c3b0a0685c075ad9483..ffdf397f1f337af6cfcb6435f8aaf35fcc63faf7 100644 (file)
@@ -128,7 +128,7 @@ sub sessioncgi ($$) {
                        $add=1 unless length $add;
                        $add++;
                }
-               $q->param('page', $page.$add);
+               $q->param('page', "/$from/$page$add");
                # now go create the page
                $q->param('do', 'create');
                # make sure the editpage plugin is loaded
@@ -290,8 +290,17 @@ sub preprocess_inline (@) {
                }
        }
 
-       my $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $rss;
-       my $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage}))) if $feeds && $atom;
+       my ($rssurl, $atomurl, $rssdesc, $atomdesc);
+       if ($feeds) {
+               if ($rss) {
+                       $rssurl=abs2rel($feedbase."rss".$feednum, dirname(htmlpage($params{destpage})));
+                       $rssdesc = sprintf(gettext("%s (RSS feed)"), $desc);
+               }
+               if ($atom) {
+                       $atomurl=abs2rel($feedbase."atom".$feednum, dirname(htmlpage($params{destpage})));
+                       $atomdesc = sprintf(gettext("%s (Atom feed)"), $desc);
+               }
+       }
 
        my $ret="";
 
@@ -302,8 +311,16 @@ sub preprocess_inline (@) {
                my $formtemplate=template_depends("blogpost.tmpl", $params{page}, blind_cache => 1);
                $formtemplate->param(cgiurl => IkiWiki::cgiurl());
                $formtemplate->param(rootpage => rootpage(%params));
-               $formtemplate->param(rssurl => $rssurl) if $feeds && $rss;
-               $formtemplate->param(atomurl => $atomurl) if $feeds && $atom;
+               if ($feeds) {
+                       if ($rss) {
+                               $formtemplate->param(rssurl => $rssurl);
+                               $formtemplate->param(rssdesc => $rssdesc);
+                       }
+                       if ($atom) {
+                               $formtemplate->param(atomurl => $atomurl);
+                               $formtemplate->param(atomdesc => $atomdesc);
+                       }
+               }
                if (exists $params{postformtext}) {
                        $formtemplate->param(postformtext =>
                                $params{postformtext});
@@ -312,6 +329,10 @@ sub preprocess_inline (@) {
                        $formtemplate->param(postformtext =>
                                gettext("Add a new post titled:"));
                }
+               if (exists $params{id}) {
+                       $formtemplate->param(postformid =>
+                               $params{id});
+               }
                $ret.=$formtemplate->output;
                
                # The post form includes the feed buttons, so
@@ -321,8 +342,17 @@ sub preprocess_inline (@) {
        elsif ($feeds && !$params{preview} && ($emptyfeeds || @feedlist)) {
                # Add feed buttons.
                my $linktemplate=template_depends("feedlink.tmpl", $params{page}, blind_cache => 1);
-               $linktemplate->param(rssurl => $rssurl) if $rss;
-               $linktemplate->param(atomurl => $atomurl) if $atom;
+               if ($rss) {
+                       $linktemplate->param(rssurl => $rssurl);
+                       $linktemplate->param(rssdesc => $rssdesc);
+               }
+               if ($atom) {
+                       $linktemplate->param(atomurl => $atomurl);
+                       $linktemplate->param(atomdesc => $atomdesc);
+               }
+               if (exists $params{id}) {
+                       $linktemplate->param(id => $params{id});
+               }
                $ret.=$linktemplate->output;
        }
        
@@ -417,9 +447,9 @@ sub preprocess_inline (@) {
                        if (! $params{preview}) {
                                writefile($rssp, $config{destdir},
                                        genfeed("rss",
-                                               $config{url}."/".$rssp, $desc, $params{guid}, $params{destpage}, @feedlist));
+                                               $config{url}."/".$rssp, $desc, $params{guid}, $params{page}, @feedlist));
                                $toping{$params{destpage}}=1 unless $config{rebuild};
-                               $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/rss+xml" title="$desc (RSS)" href="$rssurl" />};
+                               $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/rss+xml" title="$rssdesc" href="$rssurl" />};
                        }
                }
                if ($atom) {
@@ -427,9 +457,9 @@ sub preprocess_inline (@) {
                        will_render($params{destpage}, $atomp);
                        if (! $params{preview}) {
                                writefile($atomp, $config{destdir},
-                                       genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{destpage}, @feedlist));
+                                       genfeed("atom", $config{url}."/".$atomp, $desc, $params{guid}, $params{page}, @feedlist));
                                $toping{$params{destpage}}=1 unless $config{rebuild};
-                               $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/atom+xml" title="$desc (Atom)" href="$atomurl" />};
+                               $feedlinks{$params{destpage}}.=qq{<link rel="alternate" type="application/atom+xml" title="$atomdesc" href="$atomurl" />};
                        }
                }
        }