Fixed issue with double reversed url segments (#17477)
* Fixed issue with double reversed url segments * Reverse urls in backoffice * Remove last segment if rtl and hideTopLevel --------- Co-authored-by: nikolajlauridsen <nikolajlauridsen@protonmail.ch>
This commit is contained in:
@@ -488,8 +488,9 @@ public class DocumentUrlService : IDocumentUrlService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_globalSettings.ForceCombineUrlPathLeftToRight
|
var leftToRight = _globalSettings.ForceCombineUrlPathLeftToRight
|
||||||
|| CultureInfo.GetCultureInfo(cultureOrDefault).TextInfo.IsRightToLeft is false)
|
|| CultureInfo.GetCultureInfo(cultureOrDefault).TextInfo.IsRightToLeft is false;
|
||||||
|
if (leftToRight)
|
||||||
{
|
{
|
||||||
urlSegments.Reverse();
|
urlSegments.Reverse();
|
||||||
}
|
}
|
||||||
@@ -501,7 +502,7 @@ public class DocumentUrlService : IDocumentUrlService
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isRootFirstItem = GetTopMostRootKey(isDraft, cultureOrDefault) == ancestorsOrSelfKeysArray.Last();
|
var isRootFirstItem = GetTopMostRootKey(isDraft, cultureOrDefault) == ancestorsOrSelfKeysArray.Last();
|
||||||
return GetFullUrl(isRootFirstItem, urlSegments, null);
|
return GetFullUrl(isRootFirstItem, urlSegments, null, leftToRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasAny()
|
public bool HasAny()
|
||||||
@@ -583,8 +584,16 @@ public class DocumentUrlService : IDocumentUrlService
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isRootFirstItem = GetTopMostRootKey(false, culture) == ancestorsOrSelfKeysArray.Last();
|
var isRootFirstItem = GetTopMostRootKey(false, culture) == ancestorsOrSelfKeysArray.Last();
|
||||||
|
|
||||||
|
var leftToRight = _globalSettings.ForceCombineUrlPathLeftToRight
|
||||||
|
|| CultureInfo.GetCultureInfo(culture).TextInfo.IsRightToLeft is false;
|
||||||
|
if (leftToRight)
|
||||||
|
{
|
||||||
|
urlSegments.Reverse();
|
||||||
|
}
|
||||||
|
|
||||||
result.Add(new UrlInfo(
|
result.Add(new UrlInfo(
|
||||||
text: GetFullUrl(isRootFirstItem, urlSegments, foundDomain),
|
text: GetFullUrl(isRootFirstItem, urlSegments, foundDomain, leftToRight),
|
||||||
isUrl: hasUrlInCulture,
|
isUrl: hasUrlInCulture,
|
||||||
culture: culture
|
culture: culture
|
||||||
));
|
));
|
||||||
@@ -594,17 +603,27 @@ public class DocumentUrlService : IDocumentUrlService
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetFullUrl(bool isRootFirstItem, List<string> reversedUrlSegments, Domain? foundDomain)
|
private string GetFullUrl(bool isRootFirstItem, List<string> segments, Domain? foundDomain, bool leftToRight)
|
||||||
{
|
{
|
||||||
var urlSegments = new List<string>(reversedUrlSegments);
|
var urlSegments = new List<string>(segments);
|
||||||
urlSegments.Reverse();
|
|
||||||
|
|
||||||
if (foundDomain is not null)
|
if (foundDomain is not null)
|
||||||
{
|
{
|
||||||
return foundDomain.Name.EnsureEndsWith("/") + string.Join('/', urlSegments);
|
return foundDomain.Name.EnsureEndsWith("/") + string.Join('/', urlSegments);
|
||||||
}
|
}
|
||||||
|
|
||||||
return '/' + string.Join('/', urlSegments.Skip(_globalSettings.HideTopLevelNodeFromPath && isRootFirstItem ? 1 : 0));
|
var hideTopLevel = _globalSettings.HideTopLevelNodeFromPath && isRootFirstItem;
|
||||||
|
if (leftToRight)
|
||||||
|
{
|
||||||
|
return '/' + string.Join('/', urlSegments.Skip(hideTopLevel ? 1 : 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hideTopLevel)
|
||||||
|
{
|
||||||
|
urlSegments.RemoveAt(urlSegments.Count - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return '/' + string.Join('/', urlSegments);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CreateOrUpdateUrlSegmentsWithDescendantsAsync(Guid key)
|
public async Task CreateOrUpdateUrlSegmentsWithDescendantsAsync(Guid key)
|
||||||
|
|||||||
Reference in New Issue
Block a user