]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Render.pm
respond
[git.ikiwiki.info.git] / IkiWiki / Render.pm
index 5cb67ea07ec34a4f1eb7b6a3176179fa2d5f182a..578142d2e8eddb5b41dd08ce13a1e65b54ddf1c6 100644 (file)
@@ -8,26 +8,31 @@ use IkiWiki;
 use Encode;
 
 my %backlinks;
-my $backlinks_calculated=0;
+our %brokenlinks;
+my $links_calculated=0;
 
-sub calculate_backlinks () {
-       return if $backlinks_calculated;
-       %backlinks=();
+sub calculate_links () {
+       return if $links_calculated;
+       %backlinks=%brokenlinks=();
        foreach my $page (keys %links) {
                foreach my $link (@{$links{$page}}) {
                        my $bestlink=bestlink($page, $link);
-                       if (length $bestlink && $bestlink ne $page) {
-                               $backlinks{$bestlink}{$page}=1;
+                       if (length $bestlink) {
+                               $backlinks{$bestlink}{$page}=1
+                                       if $bestlink ne $page;
+                       }
+                       else {
+                               push @{$brokenlinks{$link}}, $page;
                        }
                }
        }
-       $backlinks_calculated=1;
+       $links_calculated=1;
 }
 
 sub backlink_pages ($) {
        my $page=shift;
 
-       calculate_backlinks();
+       calculate_links();
 
        return keys %{$backlinks{$page}};
 }
@@ -83,11 +88,10 @@ sub genpage ($$) {
                $actions++;
        }
        if ($config{discussion}) {
-               my $discussionlink=lc(gettext("Discussion"));
-               if ($page !~ /.*\/\Q$discussionlink\E$/ &&
+               if ($page !~ /.*\/\Q$config{discussionpage}\E$/ &&
                   (length $config{cgiurl} ||
-                   exists $links{$page."/".$discussionlink})) {
-                       $template->param(discussionlink => htmllink($page, $page, gettext("Discussion"), noimageinline => 1, forcesubpage => 1));
+                   exists $links{$page."/".$config{discussionpage}})) {
+                       $template->param(discussionlink => htmllink($page, $page, $config{discussionpage}, noimageinline => 1, forcesubpage => 1));
                        $actions++;
                }
        }
@@ -153,7 +157,7 @@ sub scan ($) {
                if ($config{discussion}) {
                        # Discussion links are a special case since they're
                        # not in the text of the page, but on its template.
-                       $links{$page}=[ $page."/".lc(gettext("Discussion")) ];
+                       $links{$page}=[ $page."/".lc($config{discussionpage}) ];
                }
                else {
                        $links{$page}=[];
@@ -379,12 +383,13 @@ sub refresh () {
                        $links{$page}=[];
                        $renderedfiles{$page}=[];
                        $pagemtime{$page}=0;
-                       prune($config{destdir}."/".$_)
-                               foreach @{$oldrenderedfiles{$page}};
+                       foreach my $old (@{$oldrenderedfiles{$page}}) {
+                               prune($config{destdir}."/".$old);
+                       }
                        delete $pagesources{$page};
-                       foreach (keys %destsources) {
-                               if ($destsources{$_} eq $page) {
-                                       delete $destsources{$_};
+                       foreach my $source (keys %destsources) {
+                               if ($destsources{$source} eq $page) {
+                                       delete $destsources{$source};
                                }
                        }
                }
@@ -416,7 +421,7 @@ sub refresh () {
                debug(sprintf(gettext("scanning %s"), $file));
                scan($file);
        }
-       calculate_backlinks();
+       calculate_links();
        foreach my $file (@needsbuild) {
                debug(sprintf(gettext("building %s"), $file));
                render($file);