]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki/Render.pm
Rebuild pages that change their type.
[ikiwiki.git] / IkiWiki / Render.pm
index 990fcaaa111d3d48985eff126fbdd30bd0d17003..90058199c128ebd68f7fa41c2e0f4d71c36e6d32 100644 (file)
@@ -47,23 +47,6 @@ sub backlinks ($) { #{{{
        return @links;
 } #}}}
 
-sub parentlinks ($) { #{{{
-       my $page=shift;
-       
-       my @ret;
-       my $pagelink="";
-       my $path="";
-       my $title=$config{wikiname};
-       
-       foreach my $dir (split("/", $page)) {
-               next if $dir eq 'index';
-               push @ret, { url => urlto($path, $page), page => $title };
-               $path.="/".$dir;
-               $title=pagetitle($dir);
-       }
-       return @ret;
-} #}}}
-
 sub genpage ($$) { #{{{
        my $page=shift;
        my $content=shift;
@@ -121,7 +104,6 @@ sub genpage ($$) { #{{{
                        ? $config{wikiname} 
                        : pagetitle(basename($page)),
                wikiname => $config{wikiname},
-               parentlinks => [parentlinks($page)],
                content => $content,
                backlinks => $backlinks,
                more_backlinks => $more_backlinks,
@@ -135,6 +117,10 @@ sub genpage ($$) { #{{{
        });
        
        $content=$template->output;
+       
+       run_hooks(postscan => sub {
+               shift->(page => $page, content => $content);
+       });
 
        run_hooks(format => sub {
                $content=shift->(
@@ -259,11 +245,11 @@ sub prune ($) { #{{{
 } #}}}
 
 sub refresh () { #{{{
-       # security check, avoid following symlinks in the srcdir path
+       # security check, avoid following symlinks in the srcdir path by default
        my $test=$config{srcdir};
        while (length $test) {
-               if (-l $test) {
-                       error("symlink found in srcdir path ($test)");
+               if (-l $test && ! $config{allow_symlinks_before_srcdir}) {
+                       error("symlink found in srcdir path ($test) -- set allow_symlinks_before_srcdir to allow this");
                }
                unless ($test=~s/\/+$//) {
                        $test=dirname($test);
@@ -333,6 +319,10 @@ sub refresh () { #{{{
        # check for added or removed pages
        foreach my $file (@files) {
                my $page=pagename($file);
+               if (exists $pagesources{$page} && $pagesources{$page} ne $file) {
+                       # the page has changed its type
+                       $forcerebuild{$page}=1;
+               }
                $pagesources{$page}=$file;
                if (! $pagemtime{$page}) {
                        if (isinternal($page)) {