]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki.pm
web commit from 213.41.241.71: poll vote (It's fast enough)
[git.ikiwiki.info.git] / IkiWiki.pm
index 015df1f74a644c49374279c9a22f701f3ba30d63..0af4a4fe9303f292977294a8de5ec88d5ddf7d24 100644 (file)
@@ -54,6 +54,7 @@ sub defaultconfig () { #{{{
        syslog => 0,
        wikiname => "wiki",
        default_pageext => "mdwn",
+       htmlext => "html",
        cgi => 0,
        post_commit => 0,
        rcs => '',
@@ -85,6 +86,7 @@ sub defaultconfig () { #{{{
        adminemail => undef,
        plugin => [qw{mdwn inline htmlscrubber passwordauth openid signinedit
                      lockedit conditional}],
+       libdir => undef,
        timeformat => '%c',
        locale => undef,
        sslcookie => 0,
@@ -126,7 +128,7 @@ sub checkconfig () { #{{{
                unless exists $config{wikistatedir};
        
        if ($config{rcs}) {
-               eval qq{require IkiWiki::Rcs::$config{rcs}};
+               eval qq{use IkiWiki::Rcs::$config{rcs}};
                if ($@) {
                        error("Failed to load RCS module IkiWiki::Rcs::$config{rcs}: $@");
                }
@@ -139,8 +141,12 @@ sub checkconfig () { #{{{
 } #}}}
 
 sub loadplugins () { #{{{
+       if (defined $config{libdir}) {
+               unshift @INC, $config{libdir};
+       }
+
        loadplugin($_) foreach @{$config{plugin}};
-       
+
        run_hooks(getopt => sub { shift->() });
        if (grep /^-/, @ARGV) {
                print STDERR "Unknown option: $_\n"
@@ -206,7 +212,7 @@ sub log_message ($$) { #{{{
 
 sub possibly_foolish_untaint ($) { #{{{
        my $tainted=shift;
-       my ($untainted)=$tainted=~/(.*)/;
+       my ($untainted)=$tainted=~/(.*)/s;
        return $untainted;
 } #}}}
 
@@ -256,7 +262,7 @@ sub targetpage ($$) { #{{{
 sub htmlpage ($) { #{{{
        my $page=shift;
        
-       return targetpage($page, "html");
+       return targetpage($page, $config{htmlext});
 } #}}}
 
 sub srcfile ($) { #{{{
@@ -466,7 +472,7 @@ sub displaytime ($) { #{{{
 sub beautify_url ($) { #{{{
        my $url=shift;
 
-       $url =~ s!/index.html$!/!;
+       $url =~ s!/index.$config{htmlext}$!/!;
        $url =~ s!^$!./!; # Browsers don't like empty links...
 
        return $url;
@@ -540,7 +546,12 @@ sub htmllink ($$$;@) { #{{{
                $bestlink.="#".$opts{anchor};
        }
 
-       return "<a href=\"$bestlink\">$linktext</a>";
+       my @attrs;
+       if (defined $opts{rel}) {
+               push @attrs, ' rel="'.$opts{rel}.'"';
+       }
+
+       return "<a href=\"$bestlink\"@attrs>$linktext</a>";
 } #}}}
 
 sub htmlize ($$$) { #{{{
@@ -606,7 +617,7 @@ sub preprocess ($$$;$$) { #{{{
                my $command=shift;
                my $params=shift;
                if (length $escape) {
-                       return "[[$command $params]]";
+                       return "\\[[$command $params]]";
                }
                elsif (exists $hooks{preprocess}{$command}) {
                        return "" if $scan && ! $hooks{preprocess}{$command}{scan};
@@ -842,7 +853,6 @@ sub template_params (@) { #{{{
                return "";
        }
 
-       require HTML::Template;
        my @ret=(
                filter => sub {
                        my $text_ref = shift;
@@ -857,6 +867,7 @@ sub template_params (@) { #{{{
 } #}}}
 
 sub template ($;@) { #{{{
+       require HTML::Template;
        HTML::Template->new(template_params(@_));
 } #}}}