Revert "hugolib: Restore taxonomy term path separation"
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 29 Dec 2018 09:00:17 +0000 (10:00 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sat, 29 Dec 2018 09:00:17 +0000 (10:00 +0100)
See #5571

This reverts commit 9ce0a1fb7011bd75eb0e2262e35354c49ce98ac5.

hugolib/hugo_sites.go
hugolib/hugo_sites_build_test.go
hugolib/page.go
hugolib/site.go
hugolib/taxonomy_test.go
hugolib/testhelpers_test.go

index a211956df2bb93df987c5a87bbbe45023ccf5b31..e44390e4bf0438b7a5e55d8a3c256a699e8ce00b 100644 (file)
@@ -16,7 +16,6 @@ package hugolib
 import (
        "errors"
        "io"
-       "path"
        "path/filepath"
        "sort"
        "strings"
@@ -521,15 +520,6 @@ func (h *HugoSites) assignMissingTranslations() error {
 func (h *HugoSites) createMissingPages() error {
        var newPages Pages
 
-       singularPlural := func(p *Page) (string, string) {
-               slen := len(p.sections)
-               singular := p.sections[slen-1]
-               singular = p.s.PathSpec.MakePathSanitized(singular)
-               plural := path.Join((p.sections[:slen-1])...)
-
-               return singular, plural
-       }
-
        for _, s := range h.Sites {
                if s.isEnabled(KindHome) {
                        // home pages
@@ -554,7 +544,6 @@ func (h *HugoSites) createMissingPages() error {
                if len(taxonomies) > 0 {
                        taxonomyPages := s.findPagesByKind(KindTaxonomy)
                        taxonomyTermsPages := s.findPagesByKind(KindTaxonomyTerm)
-
                        for _, plural := range taxonomies {
                                if s.isEnabled(KindTaxonomyTerm) {
                                        foundTaxonomyTermsPage := false
@@ -581,10 +570,11 @@ func (h *HugoSites) createMissingPages() error {
                                                        key = s.PathSpec.MakeSegment(key)
                                                }
                                                for _, p := range taxonomyPages {
-
-                                                       singularKey, pluralKey := singularPlural(p)
-
-                                                       if pluralKey == plural && singularKey == key {
+                                                       // Some people may have /authors/MaxMustermann etc. as paths.
+                                                       // p.sections contains the raw values from the file system.
+                                                       // See https://github.com/gohugoio/hugo/issues/4238
+                                                       singularKey := s.PathSpec.MakePathSanitized(p.sections[1])
+                                                       if p.sections[0] == plural && singularKey == key {
                                                                foundTaxonomyPage = true
                                                                break
                                                        }
index f772ce1926d9a53d711483af620b538f98dd41a0..91ae8434d9bec8cf8f77bab661ce11fce1fbe69e 100644 (file)
@@ -100,8 +100,8 @@ func doTestMultiSitesMainLangInRoot(t *testing.T, defaultInSubDir bool) {
        // Check list pages
        b.AssertFileContent(pathMod("public/fr/sect/index.html"), "List", "Bonjour")
        b.AssertFileContent("public/en/sect/index.html", "List", "Hello")
-       b.AssertFileContent(pathMod("public/fr/plaques/frtag1/index.html"), "Taxonomy List", "Bonjour")
-       b.AssertFileContent("public/en/tags/tag1/index.html", "Taxonomy List", "Hello")
+       b.AssertFileContent(pathMod("public/fr/plaques/frtag1/index.html"), "List", "Bonjour")
+       b.AssertFileContent("public/en/tags/tag1/index.html", "List", "Hello")
 
        // Check sitemaps
        // Sitemaps behaves different: In a multilanguage setup there will always be a index file and
index e5da74641c870bbb44d73fbffab5fcc5bae1b506..15ed631c176c5064d1f97da692671e5cd2328ae7 100644 (file)
@@ -1774,8 +1774,8 @@ func (p *Page) prepareData(s *Site) error {
                case KindHome:
                        pages = s.RegularPages
                case KindTaxonomy:
-                       plural := path.Join(p.sections[:len(p.sections)-1]...)
-                       term := p.sections[len(p.sections)-1]
+                       plural := p.sections[0]
+                       term := p.sections[1]
 
                        if s.Info.preserveTaxonomyNames {
                                if v, ok := s.taxonomiesOrigKey[fmt.Sprintf("%s-%s", plural, term)]; ok {
@@ -1792,7 +1792,7 @@ func (p *Page) prepareData(s *Site) error {
                        p.data["Term"] = term
                        pages = taxonomy.Pages()
                case KindTaxonomyTerm:
-                       plural := path.Join(p.sections...)
+                       plural := p.sections[0]
                        singular := s.taxonomiesPluralSingular[plural]
 
                        p.data["Singular"] = singular
index c6d203d8a5c39f0eb08a85e10ed2d782525bb802..1b3a317a1dc486b047b1bc0ada4bfceacf76b263 100644 (file)
@@ -22,7 +22,6 @@ import (
        "mime"
        "net/url"
        "os"
-       "path"
        "path/filepath"
        "sort"
        "strconv"
@@ -1587,28 +1586,11 @@ func (s *Site) resetBuildState() {
        }
 }
 
-func (s *Site) singularPluralAll(sections []string) (string, string, string) {
-       slen := len(sections)
-       singular := sections[slen-1]
-       plural := path.Join((sections[:slen-1])...)
-       all := path.Join(sections...)
-
-       return singular, plural, all
-}
-
 func (s *Site) kindFromSections(sections []string) string {
        if len(sections) == 0 {
                return KindSection
        }
 
-       _, plural, all := s.singularPluralAll(sections)
-
-       if _, ok := s.Taxonomies[all]; ok {
-               return KindTaxonomyTerm
-       } else if _, ok := s.Taxonomies[plural]; ok {
-               return KindTaxonomy
-       }
-
        if _, isTaxonomy := s.Taxonomies[sections[0]]; isTaxonomy {
                if len(sections) == 1 {
                        return KindTaxonomyTerm
@@ -1864,10 +1846,8 @@ func (s *Site) newHomePage() *Page {
 }
 
 func (s *Site) newTaxonomyPage(plural, key string) *Page {
-       sections := strings.Split(plural, "/")
-       sections = append(sections, key)
 
-       p := s.newNodePage(KindTaxonomy, sections...)
+       p := s.newNodePage(KindTaxonomy, plural, key)
 
        if s.Info.preserveTaxonomyNames {
                p.title = key
@@ -1891,7 +1871,7 @@ func (s *Site) newSectionPage(name string) *Page {
 }
 
 func (s *Site) newTaxonomyTermsPage(plural string) *Page {
-       p := s.newNodePage(KindTaxonomyTerm, strings.Split(plural, "/")...)
+       p := s.newNodePage(KindTaxonomyTerm, plural)
        p.title = s.titleFunc(plural)
        return p
 }
index 6304e4f2dfe29fc7df9be110ca9ba5342bb1043d..ec55dc42866fe9a8f4e21f5b4a7e0702adc2ca67 100644 (file)
@@ -243,44 +243,3 @@ subcats:
        th.assertFileContent(pathFunc("public/empties/index.html"), "Terms List", "Empties")
 
 }
-
-// https://github.com/gohugoio/hugo/issues/5513
-func TestTaxonomyPathSeparation(t *testing.T) {
-       t.Parallel()
-
-       config := `
-baseURL = "https://example.com"
-
-[taxonomies]
-"news/tag" = "news/tags"
-"news/category" = "news/categories"
-`
-
-       pageContent := `
-+++
-title = "foo"
-"news/categories" = ["a", "b", "c"]
-+++
-
-Content.
-
-
-`
-
-       b := newTestSitesBuilder(t)
-       b.WithConfigFile("toml", config)
-       b.WithContent("page.md", pageContent)
-       b.WithContent("news/categories/b/_index.md", `
----
-title: "This is B"
----
-
-`)
-
-       b.CreateSites().Build(BuildCfg{})
-
-       b.AssertFileContent("public/news/categories/index.html", "Taxonomy Term Page 1|News/Categories|Hello|https://example.com/news/categories/|")
-       b.AssertFileContent("public/news/categories/a/index.html", "Taxonomy List Page 1|A|Hello|https://example.com/news/categories/a/|")
-       b.AssertFileContent("public/news/categories/b/index.html", "Taxonomy List Page 1|This is B|Hello|https://example.com/news/categories/b/|")
-
-}
index 78f4cba63c3b82bf6fa0058c0a849dac54c933ff..a60ca29059641ffa9e9ba2dbc91128108608daa1 100644 (file)
@@ -420,15 +420,12 @@ date: "2018-02-28"
                        "content/sect/doc1.nn.md", contentTemplate,
                }
 
-               listTemplateCommon = "{{ $p := .Paginator }}{{ $p.PageNumber }}|{{ .Title }}|{{ i18n \"hello\" }}|{{ .Permalink }}|Pager: {{ template \"_internal/pagination.html\" . }}"
-
                defaultTemplates = []string{
                        "_default/single.html", "Single: {{ .Title }}|{{ i18n \"hello\" }}|{{.Lang}}|{{ .Content }}",
-                       "_default/list.html", "List Page " + listTemplateCommon,
+                       "_default/list.html", "{{ $p := .Paginator }}List Page {{ $p.PageNumber }}: {{ .Title }}|{{ i18n \"hello\" }}|{{ .Permalink }}|Pager: {{ template \"_internal/pagination.html\" . }}",
                        "index.html", "{{ $p := .Paginator }}Default Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{  .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink  }}",
                        "index.fr.html", "{{ $p := .Paginator }}French Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{  .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink  }}",
-                       "_default/terms.html", "Taxonomy Term Page " + listTemplateCommon,
-                       "_default/taxonomy.html", "Taxonomy List Page " + listTemplateCommon,
+
                        // Shortcodes
                        "shortcodes/shortcode.html", "Shortcode: {{ i18n \"hello\" }}",
                        // A shortcode in multiple languages