From: Joey Hess Date: Tue, 23 Sep 2008 21:42:38 +0000 (-0400) Subject: Merge branch 'master' into tova X-Git-Tag: 2.65~9 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/544da9b0daf15b1d634d8f9b449ea94024ab551a?ds=sidebyside;hp=--cc Merge branch 'master' into tova --- 544da9b0daf15b1d634d8f9b449ea94024ab551a diff --cc IkiWiki/Plugin/rename.pm index 3936a4a60,f441ac025..f0dfb2413 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@@ -271,40 -270,56 +277,40 @@@ sub sessioncgi ($$) { #{{ } check_canrename($src, $srcfile, $dest, $destfile, - $q, $session, $q->param("attachment")); + $q, $session); - # Ensures that the dest directory exists and is ok. - IkiWiki::prep_writefile($destfile, $config{srcdir}); + # See if subpages need to be renamed. + my @subpages; + if ($q->param("subpages") && $src ne $dest) { + foreach my $p (keys %pagesources) { + if ($pagesources{$p}=~m/^\Q$src\E\/$/) { + push @subpages, $p; + } + } + } - # Do rename, update other pages, and refresh site. - IkiWiki::disable_commit_hook() if $config{rcs}; + # Begin renaming process, which will end with a + # wiki refresh. require IkiWiki::Render; - if ($config{rcs}) { - IkiWiki::rcs_rename($srcfile, $destfile); - IkiWiki::rcs_commit_staged( - sprintf(gettext("rename %s to %s"), $srcfile, $destfile), - $session->param("name"), $ENV{REMOTE_ADDR}); - } - else { - if (! rename("$config{srcdir}/$srcfile", "$config{srcdir}/$destfile")) { - error("rename: $!"); - } + IkiWiki::disable_commit_hook() if $config{rcs}; + + do_rename($srcfile, $destfile, $session); + + foreach my $subpage (@subpages) { + my $subsrc=$pagesources{$subpage}; + my $subdest=$subsrc; + $subdest=~s/^\Q$src\E\//$dest/; + eval { + do_rename($subsrc, $subdest, $session) + }; } + my @fixedlinks; if ($src ne $dest) { - foreach my $page (keys %links) { - my $needfix=0; - foreach my $link (@{$links{$page}}) { - my $bestlink=bestlink($page, $link); - if ($bestlink eq $src) { - $needfix=1; - last; - } - } - if ($needfix) { - my $file=$pagesources{$page}; - my $oldcontent=readfile($config{srcdir}."/".$file); - my $content=renamepage_hook($page, $src, $dest, $oldcontent); - if ($oldcontent ne $content) { - my $token=IkiWiki::rcs_prepedit($file); - eval { writefile($file, $config{srcdir}, $content) }; - next if $@; - my $conflict=IkiWiki::rcs_commit( - $file, - sprintf(gettext("update for rename of %s to %s"), $srcfile, $destfile), - $token, - $session->param("name"), - $ENV{REMOTE_ADDR} - ); - push @fixedlinks, $page if ! defined $conflict; - } - } - } + push @fixedlinks, fixlinks($src, $dest, $session); } + + # End renaming process and refresh wiki. if ($config{rcs}) { IkiWiki::enable_commit_hook(); IkiWiki::rcs_update();