]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
fixes
[ikiwiki.git] / IkiWiki.pm
index 3812961dc74ac73718ce95052320a99b99610311..dbf50feb46d31cc1a97f14456527d7cd1ea6a2cd 100644 (file)
@@ -15,7 +15,7 @@ use vars qw{%config %links %oldlinks %pagemtime %pagectime %pagecase
        %pagestate %wikistate %renderedfiles %oldrenderedfiles
        %pagesources %destsources %depends %depends_simple %hooks
        %forcerebuild %loaded_plugins %typedlinks %oldtypedlinks
-       %autofiles %del_hash};
+       %autofiles};
 
 use Exporter q{import};
 our @EXPORT = qw(hook debug error template htmlpage deptype
@@ -356,7 +356,7 @@ sub getsetup () {
        },
        wiki_file_prune_regexps => {
                type => "internal",
-               default => [qr/(^|\/)\.\.(\/|$)/, qr/^\./, qr/\/\./,
+               default => [qr/(^|\/)\.\.(\/|$)/, qr/^\//, qr/^\./, qr/\/\./,
                        qr/\.x?html?$/, qr/\.ikiwiki-new$/,
                        qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//,
                        qr/(^|\/)_MTN\//, qr/(^|\/)_darcs\//,
@@ -1087,14 +1087,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>"
                }
        }
        
@@ -1844,15 +1846,8 @@ sub deptype (@) {
 }
 
 my $file_prune_regexp;
-sub file_pruned ($;$) {
+sub file_pruned ($) {
        my $file=shift;
-       if (@_) {
-               require File::Spec;
-               $file=File::Spec->canonpath($file);
-               my $base=File::Spec->canonpath(shift);
-               return if $file eq $base;
-               $file =~ s#^\Q$base\E/+##;
-       }
 
        if (defined $config{include} && length $config{include}) {
                return 0 if $file =~ m/$config{include}/;
@@ -1956,6 +1951,15 @@ sub add_link ($$;$) {
        }
 }
 
+sub add_autofile ($$$) {
+       my $file=shift;
+       my $plugin=shift;
+       my $generator=shift;
+       
+       $autofiles{$file}{plugin}=$plugin;
+       $autofiles{$file}{generator}=$generator;
+}
+
 sub sortspec_translate ($$) {
        my $spec = shift;
        my $reverse = shift;
@@ -2021,30 +2025,6 @@ sub sortspec_translate ($$) {
        return eval 'sub { '.$code.' }';
 }
 
-sub add_autofile ($$) {
-       my $autofile=shift;
-       my $plugin=shift;
-
-       if (srcfile($autofile, 1)) {
-               return 0;
-       }
-
-       my ($file, $page) = verify_src_file("$config{srcdir}/$autofile", $config{srcdir});
-
-       if ((!defined $file) ||
-       (exists $pagestate{$page}{$plugin}{autofile_deleted})) {
-               return 0;
-       }
-
-       if (exists $del_hash{$file}) {
-               $pagestate{$page}{$plugin}{autofile_deleted}=1;
-               return 0;
-       }
-
-       $autofiles{$file}=$plugin;
-       return 1;
-}
-
 sub pagespec_translate ($) {
        my $spec=shift;
 
@@ -2275,7 +2255,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;