trail: call prerender from build_affected
[ikiwiki.git] / IkiWiki / Plugin / trail.pm
index 7d2338f9b9c7bd0dee446b1f0d7b60b80417fb90..86c94642aca4232d9f379d325b929a2877e43163 100644 (file)
@@ -318,7 +318,7 @@ sub prerender {
                        $prev = $members->[$i - 1] if $i > 0;
                        my $next = $members->[$i + 1];
 
-                       add_depends($member, $trail);
+                       add_depends($member, $trail, deptype("presence"));
 
                        $member_to_trails{$member}{$trail} = [$prev, $next];
                }
@@ -359,6 +359,12 @@ sub prerender {
 sub build_affected {
        my %affected;
 
+       # In principle we might not have done this yet, although in practice
+       # at least the trail itself has probably changed, and its template
+       # almost certainly contains TRAILS or TRAILLOOP, triggering our
+       # prerender as a side-effect.
+       prerender();
+
        foreach my $member (keys %rebuild_trail_members) {
                $affected{$member} = sprintf(gettext("building %s, its previous or next page has changed"), $member);
        }
@@ -406,13 +412,13 @@ sub pagetemplate (@) {
                        my ($prevurl, $nexturl, $prevtitle, $nexttitle);
 
                        if (defined $prev) {
-                               add_depends($params{destpage}, $prev);
+                               add_depends($params{destpage}, $prev, deptype("presence"));
                                $prevurl = urlto($prev, $page);
                                $prevtitle = title_of($prev);
                        }
 
                        if (defined $next) {
-                               add_depends($params{destpage}, $next);
+                               add_depends($params{destpage}, $next, deptype("presence"));
                                $nexturl = urlto($next, $page);
                                $nexttitle = title_of($next);
                        }