X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/7befc6deb328c5edf32c0ec0e6c67a69778b67bb..0d7bc7402c9a5e922ee3eb1b093e689756b001ff:/IkiWiki/Plugin/rename.pm diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 553a67396..527ee88bc 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -102,7 +102,7 @@ sub rename_form ($$$) { #{{{ return $f, ["Rename", "Cancel"]; } #}}} -sub rename_start ($$$$) { +sub rename_start ($$$$) { #{{{ my $q=shift; my $session=shift; my $attachment=shift; @@ -127,10 +127,11 @@ sub rename_start ($$$$) { IkiWiki::showform($f, $buttons, $session, $q); exit 0; -} +} #}}} -sub postrename ($;$$) { +sub postrename ($;$$$) { #{{{ my $session=shift; + my $src=shift; my $dest=shift; my $attachment=shift; @@ -139,18 +140,27 @@ sub postrename ($;$$) { $session->clear("postrename"); IkiWiki::cgi_savesession($session); - if (defined $dest && ! $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); - } + 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); + } + + # Update edit form content to fix any links present + # on it. + $postrename->param("editcontent", + renamepage_hook($dest, $src, $dest, + $postrename->param("editcontent"))); - # Get a new edit token; old likely not valid. - $postrename->param("rcsinfo", IkiWiki::rcs_prepedit($pagesources{$dest})); + # Get a new edit token; old was likely invalidated. + $postrename->param("rcsinfo", + IkiWiki::rcs_prepedit($pagesources{$dest})); + } IkiWiki::cgi_editpage($postrename, $session); -} +} #}}} sub formbuilder (@) { #{{{ my %params=@_; @@ -248,6 +258,7 @@ sub sessioncgi ($$) { #{{{ my $bestlink=bestlink($page, $link); if ($bestlink eq $src) { $needfix=1; + last; } } if ($needfix) { @@ -279,12 +290,15 @@ sub sessioncgi ($$) { #{{{ # Scan for any remaining broken links to $src. my @brokenlinks; foreach my $page (keys %links) { + my $broken=0; foreach my $link (@{$links{$page}}) { my $bestlink=bestlink($page, $link); if ($bestlink eq $src) { - push @brokenlinks, $page; + $broken=1; + last; } } + push @brokenlinks, $page if $broken; } # Generate a rename summary, that will be shown at the top @@ -310,7 +324,7 @@ sub sessioncgi ($$) { #{{{ ]); $renamesummary=$template->output; - postrename($session, $dest, $q->param("attachment")); + postrename($session, $src, $dest, $q->param("attachment")); } else { IkiWiki::showform($form, $buttons, $session, $q);