aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-04-05 14:48:18 -0400
committerJoey Hess <joey@kitenet.net>2012-04-05 14:48:18 -0400
commite4cdce4bce0d73bf69aec0d140f1b5e7ab4a219b (patch)
treef7fe812c7be8ac0e6c04b3ce409bcb403c367018
parentc594109f575606b1e6795fc2efb5d97085ea212e (diff)
downloadikiwiki-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.
-rw-r--r--IkiWiki/Plugin/rename.pm14
-rw-r--r--debian/changelog2
2 files changed, 11 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);
diff --git a/debian/changelog b/debian/changelog
index cf2dbf8a4..7d92ad151 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -14,6 +14,8 @@ ikiwiki (3.20120204) UNRELEASED; urgency=low
* passwordauth: Fix url in password recovery email to be absolute.
* httpauth: When it's the only auth method, avoid a pointless and
confusing signin form, and go right to the httpauthurl.
+ * rename: Allow rename to be started not from the edit page; return to
+ the renamed page in this case.
-- Joey Hess <joeyh@debian.org> Wed, 21 Mar 2012 14:33:14 -0400