},
default_plugins => {
type => "internal",
- default => [qw{mdwn link inline htmlscrubber passwordauth
+ default => [qw{mdwn link inline meta htmlscrubber passwordauth
openid signinedit lockedit conditional
recentchanges parentlinks editpage}],
description => "plugins to enable by default",
safe => 0,
rebuild => 0,
},
+ wikistatedir => {
+ type => "internal",
+ default => undef,
+ description => "path to the .ikiwiki directory holding ikiwiki state",
+ safe => 0,
+ rebuild => 0,
+ },
setupfile => {
type => "internal",
default => undef,
}
$config{wikistatedir}="$config{srcdir}/.ikiwiki"
- unless exists $config{wikistatedir};
+ unless exists $config{wikistatedir} && defined $config{wikistatedir};
if (defined $config{umask}) {
umask(possibly_foolish_untaint($config{umask}));
sub targetpage ($$) { #{{{
my $page=shift;
my $ext=shift;
-
- 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') {
+
+ if (! $config{usedirs} || $page eq 'index') {
return $page.".".$ext;
}
else {
sub bestlink ($$) { #{{{
my $page=shift;
my $link=shift;
- my $res=undef;
my $cwd=$page;
if ($link=~s/^\/+//) {
$l.=$link;
if (exists $links{$l}) {
- $res=$l;
+ return $l;
}
elsif (exists $pagecase{lc $l}) {
- $res=$pagecase{lc $l};
+ return $pagecase{lc $l};
}
- } while ($cwd=~s{/?[^/]+$}{} && ! defined $res);
+ } while $cwd=~s{/?[^/]+$}{};
- if (! defined $res && length $config{userdir}) {
+ if (length $config{userdir}) {
my $l = "$config{userdir}/".lc($link);
if (exists $links{$l}) {
- $res=$l;
+ return $l;
}
elsif (exists $pagecase{lc $l}) {
- $res=$pagecase{lc $l};
+ return $pagecase{lc $l};
}
}
- 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 "";
- }
+ #print STDERR "warning: page $page, broken link: $link\n";
+ return "";
} #}}}
sub isinlinableimage ($) { #{{{
$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 !~ /^\//) {
else {
return IkiWiki::SuccessReason->new("$page links to page $p matching $link")
if match_glob($p, $link, %params);
+ $p=~s/^\///;
+ $link=~s/^\///;
+ return IkiWiki::SuccessReason->new("$page links to page $p matching $link")
+ if match_glob($p, $link, %params);
}
}
return IkiWiki::FailReason->new("$page does not link to $link");