From e895157397c4602359f8612e4ce9964bcabc8928 Mon Sep 17 00:00:00 2001 From: intrigeri Date: Thu, 1 Jan 2009 18:04:37 +0100 Subject: [PATCH] Pass src, srcfile, dest and destfile to the canrename hook. This is not needed by the use I'm doing of it, but seems more consistent to me. Future users of this hook may need this data to make their mind. Signed-off-by: intrigeri --- IkiWiki/Plugin/po.pm | 9 +++++---- IkiWiki/Plugin/rename.pm | 3 ++- doc/plugins/write.mdwn | 6 +++++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index cb48aaf0d..c0c7557e4 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -432,11 +432,12 @@ sub canremove ($$$) { return undef; } -sub canrename ($$$) { - my ($page, $cgi, $session) = (shift, shift, shift); +sub canrename ($$@) { + my ($cgi, $session) = (shift, shift); + my %params = @_; - if (istranslation($page)) { - my $masterpage = masterpage($page); + if (istranslation($params{src})) { + my $masterpage = masterpage($params{src}); # Tell the difference between: # - a translation being renamed as a consequence of its master page # being renamed, which is allowed diff --git a/IkiWiki/Plugin/rename.pm b/IkiWiki/Plugin/rename.pm index 5c198f457..82639a073 100644 --- a/IkiWiki/Plugin/rename.pm +++ b/IkiWiki/Plugin/rename.pm @@ -91,7 +91,8 @@ sub check_canrename ($$$$$$) { my $canrename; IkiWiki::run_hooks(canrename => sub { return if defined $canrename; - my $ret=shift->($src, $q, $session); + my $ret=shift->($q, $session, src => $src, srcfile => $srcfile, + dest => $dest, destfile => $destfile); if (defined $ret) { if ($ret eq "") { $canrename=1; diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn index a1e14cb94..92e372cfa 100644 --- a/doc/plugins/write.mdwn +++ b/doc/plugins/write.mdwn @@ -335,7 +335,11 @@ bypass it). It works exactly like the `canedit` hook. This hook can be used to implement arbitrary access methods to control when a page can be renamed using the web interface (commits from revision control -bypass it). It works exactly like the `canedit` hook. +bypass it). It works exactly like the `canedit` and `canremove` hook, +but is passed: +* a CGI object +* a session object +* the named parameters `src`, `srcfile`, `dest` and `destfile`. ### editcontent -- 2.44.0