Add Page.FirstSection

It was added and then removed by accident some time ago. Let us add it again, as it is useful.
This commit is contained in:
Bjørn Erik Pedersen 2018-07-23 20:19:32 +02:00
parent c6b599a06d
commit 016dd4a69a
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
2 changed files with 25 additions and 0 deletions

View file

@ -58,6 +58,29 @@ func (p *Page) CurrentSection() *Page {
return v.parent
}
// FirstSection returns the section on level 1 below home, e.g. "/docs".
// For the home page, this will return itself.
func (p *Page) FirstSection() *Page {
v := p
if v.origOnCopy != nil {
v = v.origOnCopy
}
if v.parent == nil || v.parent.IsHome() {
return v
}
parent := v.parent
for {
current := parent
parent = parent.parent
if parent == nil || parent.IsHome() {
return current
}
}
}
// InSection returns whether the given page is in the current section.
// Note that this will always return false for pages that are
// not either regular, home or section pages.