use Exporter q{import};
our @EXPORT = qw(hook debug error template htmlpage add_depends pagespec_match
bestlink htmllink readfile writefile pagetype srcfile pagename
- displaytime will_render
+ displaytime will_render gettext
%config %links %renderedfiles %pagesources);
our $VERSION = 1.01; # plugin interface version
wikiname => "wiki",
default_pageext => "mdwn",
cgi => 0,
- rcs => 'svn',
+ rcs => '',
notify => 0,
url => '',
cgiurl => '',
}
if ($config{cgi} && ! length $config{url}) {
- error("Must specify url to wiki with --url when using --cgi\n");
+ error(gettext("Must specify url to wiki with --url when using --cgi"));
}
$config{wikistatedir}="$config{srcdir}/.ikiwiki"
sub loadplugin ($) { #{{{
my $plugin=shift;
+ return if grep { $_ eq $plugin} @{$config{disable_plugins}};
+
my $mod="IkiWiki::Plugin::".possibly_foolish_untaint($plugin);
eval qq{use $mod};
if ($@) {
sub error ($) { #{{{
if ($config{cgi}) {
print "Content-type: text/html\n\n";
- print misctemplate("Error", "<p>Error: @_</p>");
+ print misctemplate(gettext("Error"),
+ "<p>".gettext("Error").": @_</p>");
}
log_message(error => @_);
exit(1);
my $link=shift;
my $cwd=$page;
-
- # relative links
- while ($link=~s!(^|/)\.\./!!g) {
- $cwd=~s!/?[^/]+$!!;
+ if ($link=~s/^\/+//) {
+ # absolute links
+ $cwd="";
}
do {
}
} while $cwd=~s!/?[^/]+$!!;
+ if (length $config{userdir} && exists $links{"$config{userdir}/".lc($link)}) {
+ return "$config{userdir}/".lc($link);
+ }
+
#print STDERR "warning: page $page, broken link: $link\n";
return "";
} #}}}
$file=~/\.(png|gif|jpg|jpeg)$/i;
} #}}}
-sub pagetitle ($) { #{{{
+sub pagetitle ($;$) { #{{{
my $page=shift;
- $page=~s/__(\d+)__/&#$1;/g;
+ my $unescaped=shift;
+
+ if ($unescaped) {
+ $page=~s/__(\d+)__/chr($1)/eg;
+ }
+ else {
+ $page=~s/__(\d+)__/&#$1;/g;
+ }
$page=~y/_/ /;
+
return $page;
} #}}}
$bestlink=htmlpage($bestlink);
}
if (! grep { $_ eq $bestlink } map { @{$_} } values %renderedfiles) {
+ return $linktext unless length $config{cgiurl};
return "<span><a href=\"".
cgiurl(do => "create", page => lc($link), from => $page).
"\">?</a>$linktext</span>"
if ($preprocessing{$page}++ > 3) {
# Avoid loops of preprocessed pages preprocessing
# other pages that preprocess them, etc.
- return "[[$command preprocessing loop detected on $page at depth $preprocessing{$page}]]";
+ #translators: The first parameter is a
+ #translators: preprocessor directive name,
+ #translators: the second a page name, the
+ #translators: third a number.
+ return "[[".sprintf(gettext("%s preprocessing loop detected on %s at depth %i"),
+ $command, $page, $preprocessing{$page}).
+ "]]";
}
my $ret=$hooks{preprocess}{$command}{call}->(
@params,
$file =~ m/$regexp/;
} #}}}
+sub gettext { #{{{
+ # Only use gettext in the rare cases it's needed.
+ # This overrides future calls of this function.
+ if (exists $ENV{LANG} || exists $ENV{LC_ALL} || exists $ENV{LC_MESSAGES}) {
+ eval q{use Locale::gettext};
+ textdomain('ikiwiki');
+ return Locale::gettext::gettext(shift);
+ }
+ else {
+ return shift;
+ }
+} #}}}
+
sub pagespec_match ($$) { #{{{
my $page=shift;
my $spec=shift;