]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
remove add_templates option
[ikiwiki.git] / IkiWiki.pm
index adae5d8c10519cad951c49c0347d866856a41a91..c2c2337b4a80fddc778feee9cf0cd990f5477210 100644 (file)
@@ -157,13 +157,6 @@ sub getsetup () {
                safe => 0, # path
                rebuild => 1,
        },
-       templatedirs => {
-               type => "internal",
-               default => [],
-               description => "additional directories containing template files",
-               safe => 0,
-               rebuild => 0,
-       },
        underlaydir => {
                type => "string",
                default => "$installdir/share/ikiwiki/basewiki",
@@ -1087,14 +1080,16 @@ sub htmllink ($$$;@) {
                $bestlink=htmlpage($bestlink);
 
                if (! $destsources{$bestlink}) {
-                       return $linktext unless length $config{cgiurl};
-                       return "<span class=\"createlink\"><a href=\"".
-                               cgiurl(
-                                       do => "create",
-                                       page => lc($link),
-                                       from => $lpage
-                               ).
-                               "\" rel=\"nofollow\">?</a>$linktext</span>"
+                       my $cgilink = "";
+                       if (length $config{cgiurl}) {
+                               $cgilink = "<a href=\"".
+                                       cgiurl(
+                                               do => "create",
+                                               page => lc($link),
+                                               from => $lpage
+                                       )."\" rel=\"nofollow\">?</a>";
+                       }
+                       return "<span class=\"createlink\">$cgilink$linktext</span>"
                }
        }
        
@@ -1659,7 +1654,7 @@ sub saveindex () {
 sub template_file ($) {
        my $template=shift;
 
-       foreach my $dir ($config{templatedir}, @{$config{templatedirs}},
+       foreach my $dir ($config{templatedir},
                         "$installdir/share/ikiwiki/templates") {
                return "$dir/$template" if -e "$dir/$template";
        }
@@ -1817,10 +1812,12 @@ sub add_depends ($$;$) {
        foreach my $p (keys %pagesources) {
                my $r=$sub->($p, location => $page);
                my $i=$r->influences;
+               my $static=$r->influences_static;
                foreach my $k (keys %$i) {
+                       next unless $r || $static || $k eq $page;
                        $depends_simple{$page}{lc $k} |= $i->{$k};
                }
-               last if $r->influences_static;
+               last if $static;
        }
 
        $depends{$page}{$pagespec} |= $deptype;
@@ -2144,6 +2141,9 @@ sub pagespec_match_list ($$;@) {
                my $r=$sub->($p, %params, location => $page);
                error(sprintf(gettext("cannot match pages: %s"), $r))
                        if $r->isa("IkiWiki::ErrorReason");
+               unless ($r || $r->influences_static) {
+                       $r->remove_influence($p);
+               }
                $accum |= $r;
                if ($r) {
                        push @matches, $p;
@@ -2229,7 +2229,7 @@ sub merge_influences {
        my $anded=shift;
 
        if (! $anded || (($this || %{$this->[1]}) &&
-                       ($other || %{$other->[1]}))) {
+                        ($other || %{$other->[1]}))) {
                foreach my $influence (keys %{$other->[1]}) {
                        $this->[1]{$influence} |= $other->[1]{$influence};
                }
@@ -2240,6 +2240,13 @@ sub merge_influences {
        }
 }
 
+sub remove_influence {
+       my $this=shift;
+       my $torm=shift;
+
+       delete $this->[1]{$torm};
+}
+
 package IkiWiki::ErrorReason;
 
 our @ISA = 'IkiWiki::FailReason';
@@ -2253,7 +2260,7 @@ sub derel ($$) {
        if ($path =~ m!^\./!) {
                $from=~s#/?[^/]+$## if defined $from;
                $path=~s#^\./##;
-               $path="$from/$path" if length $from;
+               $path="$from/$path" if defined $from && length $from;
        }
 
        return $path;