link: Fix renaming wikilinks that contain embedded urls.

master
Joey Hess 2012-04-18 15:15:11 -04:00
parent da988473e1
commit 169550a926
3 changed files with 14 additions and 6 deletions

View File

@ -144,9 +144,9 @@ sub renamepage (@) {
my $old=$params{oldpage};
my $new=$params{newpage};
$params{content} =~ s{(?<!\\)$link_regexp}{
if (! is_externallink($page, $2, $3)) {
my $linktext=$2;
$params{content} =~ s{(?<!\\)($link_regexp)}{
if (! is_externallink($page, $3, $4)) {
my $linktext=$3;
my $link=$linktext;
if (bestlink($page, linkpage($linktext)) eq $old) {
$link=pagetitle($new, 1);
@ -161,9 +161,12 @@ sub renamepage (@) {
$link="/$link";
}
}
defined $1
? ( "[[$1|$link".($3 ? "#$3" : "")."]]" )
: ( "[[$link". ($3 ? "#$3" : "")."]]" )
defined $2
? ( "[[$2|$link".($4 ? "#$4" : "")."]]" )
: ( "[[$link". ($4 ? "#$4" : "")."]]" )
}
else {
$1
}
}eg;

1
debian/changelog vendored
View File

@ -21,6 +21,7 @@ ikiwiki (3.20120204) UNRELEASED; urgency=low
pagenames, not relative wikilink type names. This is necessary to fix
a bug, and makes pagenames more consistent with the pagespec used
in the pages parameter. (smcv)
* link: Fix renaming wikilinks that contain embedded urls.
-- Joey Hess <joeyh@debian.org> Wed, 21 Mar 2012 14:33:14 -0400

View File

@ -4,3 +4,7 @@ When renaming a page here, ikiwiki destroyed unrelated links from unrelated page
The renamed page was `configuration/bat-hosts` to `configuration/batman/bat-hosts` and the deleted links were ``\[[AUR | https://aur.archlinux.org/]]` and `\[[CHANGELOG|http://svn.dd-wrt.com:8000/browser/src/router/batman-adv/CHANGELOG]]`. --[[anarcat]]
> <del>Nevermind that, that commit was unrelated to the rename and probably an operator error.</del> - No, actually, I just reproduced this again - see [another example](http://mesh.openisp.ca/recentchanges/#diff-d67dc2f0fdc149b13122fd6cba887a01c693e949).
>> Looks like these all involve the wacky wikilink form that includes an
>> external url in the link. Fixed rename code to know about those.
>> [[done]] --[[Joey]]