diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-07-23 19:20:11 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-07-23 19:20:11 -0400 |
commit | 985a34b09e8b856e700b9ecccd707cb54e9fc659 (patch) | |
tree | 091e44b0537b61b45218d8d7819ca8e93864d3f4 /IkiWiki | |
parent | 7befc6deb328c5edf32c0ec0e6c67a69778b67bb (diff) | |
download | ikiwiki-985a34b09e8b856e700b9ecccd707cb54e9fc659.tar ikiwiki-985a34b09e8b856e700b9ecccd707cb54e9fc659.tar.gz |
fixup editpage links on rename
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Plugin/rename.pm | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 553a67396..5fda526a8 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -129,8 +129,9 @@ sub rename_start ($$$$) { exit 0; } -sub postrename ($;$$) { +sub postrename ($;$$$) { my $session=shift; + my $src=shift; my $dest=shift; my $attachment=shift; @@ -139,15 +140,24 @@ 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); } @@ -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); |