]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
content adapter: Add support for menus in AddPage
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 29 May 2024 11:23:36 +0000 (13:23 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 30 May 2024 09:29:21 +0000 (11:29 +0200)
Fixes #12507

hugolib/page__menus.go
hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go
magefile.go
navigation/pagemenus.go
resources/page/pagemeta/page_frontmatter.go

index 5bed2bc033df8438cb6b51e1f93872becd62c155..1666036ce589e2eeb1a820d33621c7ad1609800a 100644 (file)
@@ -62,8 +62,22 @@ func (p *pageMenus) init() {
                        p.p,
                )
 
+               params := p.p.Params()
+
+               var menus any
+               var ok bool
+
+               if p.p.m.pageConfig.Menus != nil {
+                       menus = p.p.m.pageConfig.Menus
+               } else {
+                       menus, ok = params["menus"]
+                       if !ok {
+                               menus = params["menu"]
+                       }
+               }
+
                var err error
-               p.pm, err = navigation.PageMenusFromPage(p.p)
+               p.pm, err = navigation.PageMenusFromPage(menus, p.p)
                if err != nil {
                        p.p.s.Log.Errorln(p.p.wrapError(err))
                }
index c7e3d96c7b8722d0078130fd9e221fc4967dd1d9..3a37c233b965bfb1baf1874b13dd87305e78189d 100644 (file)
@@ -610,3 +610,31 @@ foo
        b.AssertFileContent("public/a/index.html", "|xfoo|")
        b.AssertFileContent("public/b/index.html", "|foo|") // fails
 }
+
+func TestPagesFromGoTmplMenus(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+disableKinds = ['rss','section','sitemap','taxonomy','term']
+
+[menus]
+[[menus.main]]
+name = "Main"
+[[menus.footer]]
+name = "Footer"
+-- content/_content.gotmpl --
+{{ .AddPage (dict "path" "p1" "title" "p1" "menus" "main" ) }}
+{{ .AddPage (dict "path" "p2" "title" "p2" "menus" (slice "main" "footer")) }}
+-- layouts/index.html --
+Main: {{ range index site.Menus.main }}{{ .Name }}|{{ end }}|
+Footer: {{ range index site.Menus.footer }}{{ .Name }}|{{ end }}|
+
+`
+       b := hugolib.Test(t, files)
+
+       b.AssertFileContent("public/index.html",
+               "Main: Main|p1|p2||",
+               "Footer: Footer|p2||",
+       )
+}
index 677c59d2c1c46bb41e825b0a2250ae5bf6fc9f5f..ce2cd41ea84fd010640e49f3a0add79fb7143780 100644 (file)
@@ -167,19 +167,19 @@ func testGoFlags() string {
 // Note that we don't run with the extended tag. Currently not supported in 32 bit.
 func Test386() error {
        env := map[string]string{"GOARCH": "386", "GOFLAGS": testGoFlags()}
-       return runCmd(env, goexe, "test", "./...")
+       return runCmd(env, goexe, "test", "-p", "2", "./...")
 }
 
 // Run tests
 func Test() error {
        env := map[string]string{"GOFLAGS": testGoFlags()}
-       return runCmd(env, goexe, "test", "./...", "-tags", buildTags())
+       return runCmd(env, goexe, "test", "-p", "2", "./...", "-tags", buildTags())
 }
 
 // Run tests with race detector
 func TestRace() error {
        env := map[string]string{"GOFLAGS": testGoFlags()}
-       return runCmd(env, goexe, "test", "-race", "./...", "-tags", buildTags())
+       return runCmd(env, goexe, "test", "-p", "2", "-race", "./...", "-tags", buildTags())
 }
 
 // Run gofmt linter
index 3ff49cf81438f3d836d6514339a76f50ea2dc3cb..0919d93bb35c451caaf5e690aa4ef40f846d14c7 100644 (file)
@@ -41,20 +41,11 @@ type MenuQueryProvider interface {
        IsMenuCurrent(menuID string, inme *MenuEntry) bool
 }
 
-func PageMenusFromPage(p Page) (PageMenus, error) {
-       params := p.Params()
-
-       ms, ok := params["menus"]
-       if !ok {
-               ms, ok = params["menu"]
-       }
-
-       pm := PageMenus{}
-
-       if !ok {
+func PageMenusFromPage(ms any, p Page) (PageMenus, error) {
+       if ms == nil {
                return nil, nil
        }
-
+       pm := PageMenus{}
        me := MenuEntry{}
        SetPageValues(&me, p)
 
index 10ba2a991af176d1558124307fac8bab58133012..c901ab57b5f68d62e36dccc39662c572efca72bf 100644 (file)
@@ -101,6 +101,7 @@ type PageConfig struct {
        Cascade []map[string]any
        Sitemap config.SitemapConfig
        Build   BuildConfig
+       Menus   []string
 
        // User defined params.
        Params maps.Params