hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 8969331f5be352939883074034adac6b7086ddc8
parent 6feb138785eeb9e813428d0df30010d9b5fb1059
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Sat,  6 Jan 2018 18:42:32 +0100

Fix multihost detection for sites without language definition

Static content was wrongly put into the lang-code subfolder.

Fixes #4221

Diffstat:
Mhelpers/language.go | 8++++++--
Mhugolib/config.go | 31+++++++++++++++----------------
2 files changed, 21 insertions(+), 18 deletions(-)
diff --git a/helpers/language.go b/helpers/language.go
@@ -100,9 +100,13 @@ func (l *Language) Params() map[string]interface{} {
 	return l.params
 }
 
-// IsMultihost returns whether the languages has baseURL specificed on the
-// language level.
+// IsMultihost returns whether there are more than one language and at least one of
+// the languages has baseURL specificed on the language level.
 func (l Languages) IsMultihost() bool {
+	if len(l) <= 1 {
+		return false
+	}
+
 	for _, lang := range l {
 		if lang.GetLocal("baseURL") != nil {
 			return true
diff --git a/hugolib/config.go b/hugolib/config.go
@@ -134,27 +134,26 @@ func loadLanguageSettings(cfg config.Provider, oldLangs helpers.Languages) error
 	cfg.Set("languagesSorted", langs)
 	cfg.Set("multilingual", len(langs) > 1)
 
-	// The baseURL may be provided at the language level. If that is true,
-	// then every language must have a baseURL. In this case we always render
-	// to a language sub folder, which is then stripped from all the Permalink URLs etc.
-	var baseURLFromLang bool
-
-	for _, l := range langs {
-		burl := l.GetLocal("baseURL")
-		if baseURLFromLang && burl == nil {
-			return errors.New("baseURL must be set on all or none of the languages")
-		}
+	multihost := langs.IsMultihost()
 
-		if burl != nil {
-			baseURLFromLang = true
-		}
-	}
-
-	if baseURLFromLang {
+	if multihost {
 		cfg.Set("defaultContentLanguageInSubdir", true)
 		cfg.Set("multihost", true)
 	}
 
+	if multihost {
+		// The baseURL may be provided at the language level. If that is true,
+		// then every language must have a baseURL. In this case we always render
+		// to a language sub folder, which is then stripped from all the Permalink URLs etc.
+		for _, l := range langs {
+			burl := l.GetLocal("baseURL")
+			if burl == nil {
+				return errors.New("baseURL must be set on all or none of the languages")
+			}
+		}
+
+	}
+
 	return nil
 }