helpers: Improve the language prefix logic

See #2444
This commit is contained in:
Bjørn Erik Pedersen 2016-09-13 23:44:16 +02:00
parent f53145b274
commit 74ffb45fbe

View file

@ -169,20 +169,22 @@ func AbsURL(in string, addLanguage bool) string {
if addLanguage {
prefix := getLanguagePrefix()
hasPrefix := false
// avoid adding language prefix if already present
if strings.HasPrefix(in, "/") {
hasPrefix = strings.HasPrefix(in[1:], prefix)
} else {
hasPrefix = strings.HasPrefix(in, prefix)
}
if prefix != "" {
hasPrefix := false
// avoid adding language prefix if already present
if strings.HasPrefix(in, "/") {
hasPrefix = strings.HasPrefix(in[1:], prefix)
} else {
hasPrefix = strings.HasPrefix(in, prefix)
}
if prefix != "" && !hasPrefix {
addSlash := in == "" || strings.HasSuffix(in, "/")
in = path.Join(prefix, in)
if !hasPrefix {
addSlash := in == "" || strings.HasSuffix(in, "/")
in = path.Join(prefix, in)
if addSlash {
in += "/"
if addSlash {
in += "/"
}
}
}
}
@ -231,21 +233,23 @@ func RelURL(in string, addLanguage bool) string {
if addLanguage {
prefix := getLanguagePrefix()
hasPrefix := false
// avoid adding language prefix if already present
if strings.HasPrefix(in, "/") {
hasPrefix = strings.HasPrefix(in[1:], prefix)
} else {
hasPrefix = strings.HasPrefix(in, prefix)
}
if prefix != "" {
hasPrefix := false
// avoid adding language prefix if already present
if strings.HasPrefix(in, "/") {
hasPrefix = strings.HasPrefix(in[1:], prefix)
} else {
hasPrefix = strings.HasPrefix(in, prefix)
}
if prefix != "" && !hasPrefix {
hadSlash := strings.HasSuffix(u, "/")
if !hasPrefix {
hadSlash := strings.HasSuffix(u, "/")
u = path.Join(prefix, u)
u = path.Join(prefix, u)
if hadSlash {
u += "/"
if hadSlash {
u += "/"
}
}
}
}