diff options
author | Joey Hess <joey@kitenet.net> | 2012-04-08 13:40:01 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-04-08 13:40:01 -0400 |
commit | bcc2809b960d459966e563ed78e7e0793307b8ec (patch) | |
tree | 1beffdaf04da501b1a4e4111f48df99de6047a5e /IkiWiki | |
parent | 089e72caa7dc9976ab009fabd1dab9eaad0cf4ff (diff) | |
download | ikiwiki-bcc2809b960d459966e563ed78e7e0793307b8ec.tar ikiwiki-bcc2809b960d459966e563ed78e7e0793307b8ec.tar.gz |
actually tested rename not started from the edit page
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/rename.pm | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index b8f5858cc..8387a1e32 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -213,34 +213,38 @@ sub postrename ($$$;$$) { my $dest=shift; my $attachment=shift; - # Load saved form state and return to edit page. - my $postrename=CGI->new($session->param("postrename")); - $session->clear("postrename"); - IkiWiki::cgi_savesession($session); + # Load saved form state and return to edit page, using stored old + # cgi state. Or, if the rename was not started on the edit page, + # return to the renamed page. + my $postrename=$session->param("postrename"); if (! defined $postrename) { - redirect($cgi, urlto(defined $dest ? $dest : $src)); + IkiWiki::redirect($cgi, urlto(defined $dest ? $dest : $src)); + exit; } + my $oldcgi=CGI->new($postrename); + $session->clear("postrename"); + IkiWiki::cgi_savesession($session); if (defined $dest) { if (! $attachment) { # They renamed the page they were editing. This requires # fixups to the edit form state. # Tweak the edit form to be editing the new page. - $postrename->param("page", $dest); + $oldcgi->param("page", $dest); } # Update edit form content to fix any links present # on it. - $postrename->param("editcontent", + $oldcgi->param("editcontent", renamepage_hook($dest, $src, $dest, - $postrename->param("editcontent"))); + $oldcgi->param("editcontent"))); # Get a new edit token; old was likely invalidated. - $postrename->param("rcsinfo", + $oldcgi->param("rcsinfo", IkiWiki::rcs_prepedit($pagesources{$dest})); } - IkiWiki::cgi_editpage($postrename, $session); + IkiWiki::cgi_editpage($oldcgi, $session); } sub formbuilder (@) { |