factor out fixlinks
parent
9b57602394
commit
cf4db49567
|
@ -273,6 +273,16 @@ sub sessioncgi ($$) { #{{{
|
||||||
check_canrename($src, $srcfile, $dest, $destfile,
|
check_canrename($src, $srcfile, $dest, $destfile,
|
||||||
$q, $session, $q->param("attachment"));
|
$q, $session, $q->param("attachment"));
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Begin renaming process, which will end with a
|
# Begin renaming process, which will end with a
|
||||||
# wiki refresh.
|
# wiki refresh.
|
||||||
require IkiWiki::Render;
|
require IkiWiki::Render;
|
||||||
|
@ -280,36 +290,18 @@ sub sessioncgi ($$) { #{{{
|
||||||
|
|
||||||
do_rename($srcfile, $destfile, $session);
|
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;
|
my @fixedlinks;
|
||||||
if ($src ne $dest) {
|
if ($src ne $dest) {
|
||||||
foreach my $page (keys %links) {
|
push @fixedlinks, fixlinks($src, $dest, $session);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# End renaming process and refresh wiki.
|
# End renaming process and refresh wiki.
|
||||||
|
@ -408,4 +400,43 @@ sub do_rename ($$$) { #{{{
|
||||||
}
|
}
|
||||||
} # }}}
|
} # }}}
|
||||||
|
|
||||||
|
sub fixlinks ($$$) { #{{{
|
||||||
|
my $src=shift;
|
||||||
|
my $dest=shift;
|
||||||
|
my $session=shift;
|
||||||
|
|
||||||
|
my @fixedlinks;
|
||||||
|
|
||||||
|
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"), $src, $dest),
|
||||||
|
$token,
|
||||||
|
$session->param("name"),
|
||||||
|
$ENV{REMOTE_ADDR}
|
||||||
|
);
|
||||||
|
push @fixedlinks, $page if ! defined $conflict;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return @fixedlinks;
|
||||||
|
} #}}}
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
Loading…
Reference in New Issue