ref: aebfe156fb2f27057e61b2e50c7576e6b06dab58
parent: 907d9e92682ed56a57a2206ae9bd9a985b3e1870
author: ivan-meridianbanc-com <ivan@meridianbanc.com>
date: Wed Dec 2 08:47:01 EST 2020
Fix RelURL and AbsURL when path starts with language
--- a/helpers/url.go
+++ b/helpers/url.go
@@ -181,10 +181,14 @@
if prefix != "" {hasPrefix := false
// avoid adding language prefix if already present
+ in2 := in
if strings.HasPrefix(in, "/") {- hasPrefix = strings.HasPrefix(in[1:], prefix)
+ in2 = in[1:]
+ }
+ if in2 == prefix {+ hasPrefix = true
} else {- hasPrefix = strings.HasPrefix(in, prefix)
+ hasPrefix = strings.HasPrefix(in2, prefix+"/")
}
if !hasPrefix {@@ -230,10 +234,14 @@
if prefix != "" {hasPrefix := false
// avoid adding language prefix if already present
+ in2 := in
if strings.HasPrefix(in, "/") {- hasPrefix = strings.HasPrefix(in[1:], prefix)
+ in2 = in[1:]
+ }
+ if in2 == prefix {+ hasPrefix = true
} else {- hasPrefix = strings.HasPrefix(in, prefix)
+ hasPrefix = strings.HasPrefix(in2, prefix+"/")
}
if !hasPrefix {--- a/helpers/url_test.go
+++ b/helpers/url_test.go
@@ -84,6 +84,21 @@
{"http//foo", "http://base/path", "http://base/path/MULTIhttp/foo"},}
+ if multilingual && addLanguage && defaultInSubDir {+ newTests := []struct {+ input string
+ baseURL string
+ expected string
+ }{+ {lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},+ {"/" + lang + "test", "http://base/", "http://base/" + lang + "/" + lang + "test"},+ }
+
+ for _, test := range newTests {+ tests = append(tests, test)
+ }
+ }
+
for _, test := range tests { v.Set("baseURL", test.baseURL) v.Set("contentDir", "content")@@ -162,6 +177,22 @@
{"", "http://base/ace", false, "/aceMULTI"}, {"http://abs", "http://base/", false, "http://abs"}, {"//schemaless", "http://base/", false, "//schemaless"},+ }
+
+ if multilingual && addLanguage && defaultInSubDir {+ newTests := []struct {+ input string
+ baseURL string
+ canonify bool
+ expected string
+ }{+ {lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},+ {"/" + lang + "test", "http://base/", false, "/" + lang + "/" + lang + "test"},+ }
+
+ for _, test := range newTests {+ tests = append(tests, test)
+ }
}
for i, test := range tests {--
⑨