diff options
author | Joey Hess <joey@kitenet.net> | 2012-04-05 14:48:18 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-04-05 14:48:18 -0400 |
commit | e4cdce4bce0d73bf69aec0d140f1b5e7ab4a219b (patch) | |
tree | f7fe812c7be8ac0e6c04b3ce409bcb403c367018 /IkiWiki | |
parent | c594109f575606b1e6795fc2efb5d97085ea212e (diff) | |
download | ikiwiki-e4cdce4bce0d73bf69aec0d140f1b5e7ab4a219b.tar ikiwiki-e4cdce4bce0d73bf69aec0d140f1b5e7ab4a219b.tar.gz |
rename: Allow rename to be started not from the edit page; return to the renamed page in this case.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/rename.pm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 8e32d41ae..b5f37e913 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -206,7 +206,8 @@ sub rename_start ($$$$) { exit 0; } -sub postrename ($;$$$) { +sub postrename ($$;$$$) { + my $cgi=shift; my $session=shift; my $src=shift; my $dest=shift; @@ -216,6 +217,9 @@ sub postrename ($;$$$) { my $postrename=CGI->new($session->param("postrename")); $session->clear("postrename"); IkiWiki::cgi_savesession($session); + if (! defined $postrename) { + redirect($cgi, urlto(defined $dest ? $dest : $src)); + } if (defined $dest) { if (! $attachment) { @@ -291,16 +295,16 @@ sub sessioncgi ($$) { my $session=shift; my ($form, $buttons)=rename_form($q, $session, Encode::decode_utf8($q->param("page"))); IkiWiki::decode_form_utf8($form); + my $src=$form->field("page"); if ($form->submitted eq 'Cancel') { - postrename($session); + postrename($q, $session, $src); } elsif ($form->submitted eq 'Rename' && $form->validate) { IkiWiki::checksessionexpiry($q, $session, $q->param('sid')); # These untaints are safe because of the checks # performed in check_canrename later. - my $src=$form->field("page"); my $srcfile=IkiWiki::possibly_foolish_untaint($pagesources{$src}) if exists $pagesources{$src}; my $dest=IkiWiki::possibly_foolish_untaint(titlepage($form->field("new_name"))); @@ -324,7 +328,7 @@ sub sessioncgi ($$) { IkiWiki::Plugin::attachment::is_held_attachment($src); if ($held) { rename($held, IkiWiki::Plugin::attachment::attachment_holding_location($dest)); - postrename($session, $src, $dest, $q->param("attachment")) + postrename($q, $session, $src, $dest, $q->param("attachment")) unless defined $srcfile; } @@ -430,7 +434,7 @@ sub sessioncgi ($$) { $renamesummary.=$template->output; } - postrename($session, $src, $dest, $q->param("attachment")); + postrename($q, $session, $src, $dest, $q->param("attachment")); } else { IkiWiki::showform($form, $buttons, $session, $q); |