X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/62962a470d48dd14ebcd39f1de37504abd2f77b5..fafa98ea96c0e28818ffcf47b7202c4130615c68:/IkiWiki.pm diff --git a/IkiWiki.pm b/IkiWiki.pm index 245eaafba..90fedca4f 100644 --- a/IkiWiki.pm +++ b/IkiWiki.pm @@ -411,7 +411,7 @@ sub getsetup () { #{{{ rebuild => 0, }, allow_symlinks_before_srcdir => { - type => "string", + type => "boolean", default => 0, description => "allow symlinks in the path leading to the srcdir (potentially insecure)", safe => 0, @@ -655,8 +655,19 @@ sub newpagefile ($$) { #{{{ sub targetpage ($$) { #{{{ my $page=shift; my $ext=shift; - - if (! $config{usedirs} || $page eq 'index') { + + my $targetpage=''; + run_hooks(targetpage => sub { + $targetpage=shift->( + page => $page, + ext => $ext, + ); + }); + + if (defined $targetpage && (length($targetpage) > 0)) { + return $targetpage; + } + elsif (! $config{usedirs} || $page eq 'index') { return $page.".".$ext; } else { @@ -804,6 +815,7 @@ sub will_render ($$;$) { #{{{ sub bestlink ($$) { #{{{ my $page=shift; my $link=shift; + my $res=undef; my $cwd=$page; if ($link=~s/^\/+//) { @@ -818,25 +830,35 @@ sub bestlink ($$) { #{{{ $l.=$link; if (exists $links{$l}) { - return $l; + $res=$l; } elsif (exists $pagecase{lc $l}) { - return $pagecase{lc $l}; + $res=$pagecase{lc $l}; } - } while $cwd=~s{/?[^/]+$}{}; + } while ($cwd=~s{/?[^/]+$}{} && ! defined $res); - if (length $config{userdir}) { + if (! defined $res && length $config{userdir}) { my $l = "$config{userdir}/".lc($link); if (exists $links{$l}) { - return $l; + $res=$l; } elsif (exists $pagecase{lc $l}) { - return $pagecase{lc $l}; + $res=$pagecase{lc $l}; } } - #print STDERR "warning: page $page, broken link: $link\n"; - return ""; + if (defined $res) { + run_hooks(tweakbestlink => sub { + $res=shift->( + page => $page, + link => $res); + }); + return $res; + } + else { + #print STDERR "warning: page $page, broken link: $link\n"; + return ""; + } } #}}} sub isinlinableimage ($) { #{{{ @@ -931,6 +953,10 @@ sub beautify_urlpath ($) { #{{{ $url =~ s!/index.$config{htmlext}$!/!; } + run_hooks(tweakurlpath => sub { + $url=shift->(url => $url); + }); + # Ensure url is not an empty link, and # if it's relative, make that explicit to avoid colon confusion. if ($url !~ /^\//) { @@ -1582,8 +1608,8 @@ sub rcs_getctime ($) { #{{{ $hooks{rcs}{rcs_getctime}{call}->(@_); } #}}} -sub rcs_test_receive ($) { #{{{ - $hooks{rcs}{rcs_test_receive}{call}->(@_); +sub rcs_receive () { #{{{ + $hooks{rcs}{rcs_receive}{call}->(); } #}}} sub globlist_to_pagespec ($) { #{{{