X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/c01485ae1ad751ac87eb3cfa392f6d276d5b1157..cf374e97cf571c847a21efce9c26b01315a054a1:/IkiWiki/Plugin/rename.pm diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 2200235f6..37f643eef 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -3,7 +3,7 @@ package IkiWiki::Plugin::rename; use warnings; use strict; -use IkiWiki 2.00; +use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "rename", call => \&getsetup); @@ -87,6 +87,26 @@ sub check_canrename ($$$$$$) { IkiWiki::Plugin::attachment::check_canattach($session, $dest, $srcfile); } } + + my $canrename; + IkiWiki::run_hooks(canrename => sub { + return if defined $canrename; + my $ret=shift->($q, $session, src => $src, srcfile => $srcfile, + dest => $dest, destfile => $destfile); + if (defined $ret) { + if ($ret eq "") { + $canrename=1; + } + elsif (ref $ret eq 'CODE') { + $ret->(); + $canrename=0; + } + elsif (defined $ret) { + error($ret); + $canrename=0; + } + } + }); } sub rename_form ($$$) { @@ -291,6 +311,8 @@ sub sessioncgi ($$) { required => 1, }; + IkiWiki::run_hooks(rename => sub { shift->(\@torename, $q, $session); }); + # See if any subpages need to be renamed. if ($q->param("subpages") && $src ne $dest) { foreach my $p (keys %pagesources) { @@ -338,16 +360,10 @@ sub sessioncgi ($$) { sprintf(gettext("rename %s to %s"), $srcfile, $destfile), $session->param("name"), $ENV{REMOTE_ADDR}) if $config{rcs}; + # Then link fixups. foreach my $rename (@torename) { next if $rename->{src} eq $rename->{dest}; next if $rename->{error}; - IkiWiki::run_hooks(rename => sub { - shift->( - oldpage => $src, - newpage => $dest, - ); - }); - # Then link fixups. foreach my $p (fixlinks($rename, $session)) { # map old page names to new foreach my $r (@torename) { @@ -396,22 +412,8 @@ sub sessioncgi ($$) { $template->param(error => $rename->{error}); if ($rename->{src} ne $rename->{dest}) { $template->param(brokenlinks_checked => 1); - $template->param(brokenlinks => [ - map { - { - page => htmllink($rename->{dest}, $rename->{dest}, $_, - noimageinline => 1) - } - } @{$rename->{brokenlinks}} - ]); - $template->param(fixedlinks => [ - map { - { - page => htmllink($rename->{dest}, $rename->{dest}, $_, - noimageinline => 1) - } - } @{$rename->{fixedlinks}} - ]); + $template->param(brokenlinks => linklist($rename->{dest}, $rename->{brokenlinks})); + $template->param(fixedlinks => linklist($rename->{dest}, $rename->{fixedlinks})); } $renamesummary.=$template->output; } @@ -425,6 +427,23 @@ sub sessioncgi ($$) { exit 0; } } + +sub linklist { + # generates a list of links in a form suitable for FormBuilder + my $dest=shift; + my $list=shift; + # converts a list of pages into a list of links + # in a form suitable for FormBuilder. + + [map { + { + page => htmllink($dest, $dest, $_, + noimageinline => 1, + linktext => pagetitle($_), + ) + } + } @{$list}] +} sub renamelink_hook ($$$$) { my ($page, $src, $dest, $content)=@_;