]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
match only pages in calendar
[ikiwiki.git] / IkiWiki.pm
index e2a3d216f4b09a1872792374b3d87cdba8fc58dd..203da3ba2d647740e5a3a80193873b39ebd41773 100644 (file)
@@ -592,10 +592,11 @@ sub loadplugins () {
        return 1;
 }
 
-sub loadplugin ($) {
+sub loadplugin ($;$) {
        my $plugin=shift;
+       my $force=shift;
 
-       return if grep { $_ eq $plugin} @{$config{disable_plugins}};
+       return if ! $force && grep { $_ eq $plugin} @{$config{disable_plugins}};
 
        foreach my $dir (defined $config{libdir} ? possibly_foolish_untaint($config{libdir}) : undef,
                         "$installdir/lib/ikiwiki") {
@@ -1739,11 +1740,20 @@ sub template ($;@) {
 sub misctemplate ($$;@) {
        my $title=shift;
        my $content=shift;
+       my %params=@_;
        
        my $template=template("page.tmpl");
 
+       my $page="";
+       if (exists $params{page}) {
+               $page=delete $params{page};
+       }
        run_hooks(pagetemplate => sub {
-               shift->(page => "", destpage => "", template => $template);
+               shift->(
+                       page => $page,
+                       destpage => $page,
+                       template => $template,
+               );
        });
        templateactions($template, "");
 
@@ -1754,7 +1764,7 @@ sub misctemplate ($$;@) {
                content => $content,
                baseurl => baseurl(),
                html5 => $config{html5},
-               @_,
+               %params,
        );
        
        return $template->output;
@@ -2397,18 +2407,20 @@ sub match_link ($$;@) {
                unless $links && @{$links};
        my $bestlink = IkiWiki::bestlink($from, $link);
        foreach my $p (@{$links}) {
+               next unless (! defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p});
+
                if (length $bestlink) {
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && $bestlink eq IkiWiki::bestlink($page, $p)) {
+                       if ($bestlink eq IkiWiki::bestlink($page, $p)) {
                                return IkiWiki::SuccessReason->new("$page links to $link$qualifier", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                }
                else {
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p}) && match_glob($p, $link, %params)) {
+                       if (match_glob($p, $link, %params)) {
                                return IkiWiki::SuccessReason->new("$page links to page $p$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                        my ($p_rel)=$p=~/^\/?(.*)/;
                        $link=~s/^\///;
-                       if ((!defined $linktype || exists $IkiWiki::typedlinks{$page}{$linktype}{$p_rel}) && match_glob($p_rel, $link, %params)) {
+                       if (match_glob($p_rel, $link, %params)) {
                                return IkiWiki::SuccessReason->new("$page links to page $p_rel$qualifier, matching $link", $page => $IkiWiki::DEPEND_LINKS, "" => 1)
                        }
                }