aboutsummaryrefslogtreecommitdiffstats
path: root/internal/web/layout.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/web/layout.go')
-rw-r--r--internal/web/layout.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/internal/web/layout.go b/internal/web/layout.go
index 0d51068..6f5c84f 100644
--- a/internal/web/layout.go
+++ b/internal/web/layout.go
@@ -124,6 +124,9 @@ type Layout struct {
// A column is laid out when it has something to show — or always, when
// the theme keeps the columns' space.
HasLeft, HasRight bool
+ // A header search box sits in the menu row when there is one, so the two
+ // header modules need to know about each other.
+ HeaderMenu, HeaderSearch bool
}
// buildLayout groups modules by area, dropping areas the theme has switched off.
@@ -136,6 +139,8 @@ func buildLayout(t Theme, mods []store.Module) Layout {
switch m.Area {
case "header":
l.Header = append(l.Header, m)
+ l.HeaderMenu = l.HeaderMenu || m.Kind == "menu"
+ l.HeaderSearch = l.HeaderSearch || m.Kind == "search"
case "left":
l.Left = append(l.Left, m)
case "right":
@@ -181,6 +186,17 @@ func (l Layout) NeedsTags() bool {
return false
}
+// HasSearch says whether a visible module offers a search box (the search
+// page shows its own only when none does).
+func (l Layout) HasSearch() bool {
+ for _, m := range l.all() {
+ if m.Kind == "search" {
+ return true
+ }
+ }
+ return false
+}
+
// MaxRecent is the longest "recent posts" list any visible module wants (0 = none).
func (l Layout) MaxRecent() int {
n := 0