{{- $next := "" }} {{- if eq .Page.Kind "term" }} {{- /* go to next term page */}} {{- $taxonomy_page := .Site.GetPage .Data.Plural }} {{- $pages := partialCached "partials/_relearn/pagesTaxonomy.gotmpl" $taxonomy_page $taxonomy_page.Path }} {{- $next = partial "inline/next-term" (dict "collection" $pages "item" .) }} {{- else if eq .Page.Kind "taxonomy" }} {{- /* go to first term page */}} {{- $pages := partialCached "partials/_relearn/pagesTaxonomy.gotmpl" . .Path }} {{- with index $pages 0 }} {{- $next = .Page }} {{- end }} {{- else }} {{- $next = partial "inline/next-page" . }} {{- end }} {{- return $next }} {{- define "partials/inline/next-term" }} {{- $collection := .collection }} {{- $item := .item }} {{- $found := false }} {{- $result := "" }} {{- range $collection }} {{- if $found }} {{- $result = .Page.Page }} {{- break }} {{- else if eq $item .Page.Page }} {{- $found = true }} {{- end }} {{- end }} {{- return $result }} {{- end }} {{- define "partials/inline/next-page" }} {{- $nextVisible := "" }} {{- $currentNode := . }} {{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" $currentNode) $currentNode.Path }} {{- range $pages }} {{- $nextVisible = partial "inline/leftmost_descendant" . }} {{- if $nextVisible }} {{- break }} {{- end }} {{- end }} {{- if not $nextVisible }} {{- $nextVisible = partial "inline/next_sibling_or_ancestor" $currentNode }} {{- end }} {{- return $nextVisible }} {{- end }} {{- define "partials/inline/next_sibling_or_ancestor" }} {{- $currentNode := . }} {{- $nextSibling := "" }} {{- with partial "inline/parent" $currentNode }} {{- $parent := . }} {{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" $parent) $parent.Path }} {{- $nextVisible := partial "inline/next_sibling" (dict "siblings" $pages "currentNode" $currentNode) }} {{- range $pages }} {{- if not $nextVisible }} {{- break }} {{- end }} {{- $nextSibling = partial "inline/leftmost_descendant" $nextVisible }} {{- if $nextSibling }} {{- break }} {{- else }} {{- $nextVisible = partial "inline/next_sibling" (dict "siblings" $pages "currentNode" $nextVisible) }} {{- end }} {{- end }} {{- if not $nextSibling }} {{- if $nextVisible }} {{- $nextSibling = partial "inline/leftmost_descendant" $nextVisible }} {{- end }} {{- if not $nextSibling }} {{- $nextSibling = partial "inline/next_sibling_or_ancestor" $parent }} {{- end }} {{- end }} {{- end }} {{- return $nextSibling }} {{- end }} {{- define "partials/inline/next_sibling" }} {{- $siblings := .siblings }} {{- $currentNode := .currentNode }} {{- $nextSibling := "" }} {{- $currentFound := false }} {{- range $siblings }} {{- if eq . $currentNode }} {{- $currentFound = true }} {{- else if $currentFound }} {{- $nextSibling = . }} {{- break }} {{- end }} {{- end }} {{- return $nextSibling }} {{- end }} {{- define "partials/inline/leftmost_descendant" }} {{- $leftmostVisible := "" }} {{- if not (or (.Params.hidden) (eq .Title "")) }} {{- if .RelPermalink }} {{- $leftmostVisible = . }} {{- else }} {{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }} {{- range $pages }} {{- with partial "inline/leftmost_descendant" . }} {{- $leftmostVisible = . }} {{- break }} {{- end }} {{- end }} {{- end }} {{- end }} {{- return $leftmostVisible }} {{- end }} {{- define "partials/inline/parent" }} {{- $nonheadless := "" }} {{- $page := . }} {{- $parent := .Parent }} {{- if not (partial "_relearn/pageIsSpecial.gotmpl" $page) }} {{- with $parent }} {{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }} {{- range $pages }} {{- if eq . $page }} {{- $nonheadless = $parent }} {{- break }} {{- end }} {{- end }} {{- else }} {{- $nonheadless = $parent }} {{- end }} {{- end }} {{- return $nonheadless }} {{- end }}