rename: Allow rename to be started not from the edit page; return to the renamed...
authorJoey Hess <joey@kitenet.net>
Thu, 5 Apr 2012 18:48:18 +0000 (14:48 -0400)
committerJoey Hess <joey@kitenet.net>
Thu, 5 Apr 2012 18:48:18 +0000 (14:48 -0400)
IkiWiki/Plugin/rename.pm
debian/changelog

index 8e32d41aecfd58934fc7353612c680162abd2914..b5f37e913c58e166160f60990e91c1522955c733 100644 (file)
@@ -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);
index cf2dbf8a436747adada5c04d0b782e8c3ce391c9..7d92ad151dbf148b436c001f310eb84976e4a1fe 100644 (file)
@@ -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