shithub: hugo

Download patch

ref: 186db7cd7ad56051d5a064ee5120e6ec73f575a0
parent: cda3b36fe2c1fd708fe5c9b9388c3880004bd1c6
author: Prashant Karmakar <[email protected]>
date: Tue Nov 1 14:48:24 EDT 2016

Fix page names that contain dot

changes:
    - in hugolib/page.go, `func permalink` and `func TargetPath`
      Fixed the attempt to *replace* the extension of something
      that was *already* a basename.
    - in source/file.go, `func NewFile`
      added check for allowed languages before translating filename

Fixes #2555

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -586,7 +586,7 @@
 			permalink = helpers.URLPrep(viper.GetBool("uglyURLs"), path.Join(dir, p.Slug+"."+p.Extension()))
 		} else {
 			t := p.Source.TranslationBaseName()
-			permalink = helpers.URLPrep(viper.GetBool("uglyURLs"), path.Join(dir, helpers.ReplaceExtension(strings.TrimSpace(t), p.Extension())))
+			permalink = helpers.URLPrep(viper.GetBool("uglyURLs"), path.Join(dir, (strings.TrimSpace(t)+"."+p.Extension())))
 		}
 	}
 
@@ -1163,7 +1163,7 @@
 		outfile = strings.TrimSpace(p.Slug) + "." + p.Extension()
 	} else {
 		// Fall back to filename
-		outfile = helpers.ReplaceExtension(p.Source.TranslationBaseName(), p.Extension())
+		outfile = (p.Source.TranslationBaseName() + "." + p.Extension())
 	}
 
 	return p.addLangFilepathPrefix(filepath.Join(strings.ToLower(
--- a/source/file.go
+++ b/source/file.go
@@ -126,11 +126,14 @@
 	f.ext = strings.TrimPrefix(filepath.Ext(f.LogicalName()), ".")
 	f.baseName = helpers.Filename(f.LogicalName())
 
-	f.lang = strings.TrimPrefix(filepath.Ext(f.baseName), ".")
-	if f.lang == "" {
+	lang := strings.TrimPrefix(filepath.Ext(f.baseName), ".")
+	if _, ok := viper.GetStringMap("languages")[lang]; lang == "" || !ok {
 		f.lang = viper.GetString("defaultContentLanguage")
+		f.translationBaseName = f.baseName
+	} else {
+		f.lang = lang
+		f.translationBaseName = helpers.Filename(f.baseName)
 	}
-	f.translationBaseName = helpers.Filename(f.baseName)
 
 	f.section = helpers.GuessSection(f.Dir())
 	f.uniqueID = helpers.Md5String(f.LogicalName())