V8: Use current client culture when searching content pickers (#7123)
* Use current client culture when searching content pickers * Use string interpolation
This commit is contained in:
@@ -768,7 +768,8 @@ namespace Umbraco.Web.Editors
|
||||
/// <returns></returns>
|
||||
private IEnumerable<SearchResultEntity> ExamineSearch(string query, UmbracoEntityTypes entityType, string searchFrom = null, bool ignoreUserStartNodes = false)
|
||||
{
|
||||
return _treeSearcher.ExamineSearch(query, entityType, 200, 0, out _, searchFrom, ignoreUserStartNodes);
|
||||
var culture = ClientCulture();
|
||||
return _treeSearcher.ExamineSearch(query, entityType, 200, 0, culture, out _, searchFrom, ignoreUserStartNodes);
|
||||
}
|
||||
|
||||
private IEnumerable<EntityBasic> GetResultForChildren(int id, UmbracoEntityTypes entityType)
|
||||
|
||||
@@ -177,6 +177,12 @@ namespace Umbraco.Web.Models.Mapping
|
||||
|
||||
target.Name = source.Values.ContainsKey("nodeName") ? source.Values["nodeName"] : "[no name]";
|
||||
|
||||
var culture = context.GetCulture();
|
||||
if(culture.IsNullOrWhiteSpace() == false)
|
||||
{
|
||||
target.Name = source.Values.ContainsKey($"nodeName_{culture}") ? source.Values[$"nodeName_{culture}"] : target.Name;
|
||||
}
|
||||
|
||||
if (source.Values.TryGetValue(UmbracoExamineIndex.UmbracoFileFieldName, out var umbracoFile))
|
||||
{
|
||||
if (umbracoFile != null)
|
||||
|
||||
@@ -12,6 +12,7 @@ using Umbraco.Core.Persistence;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Examine;
|
||||
using Umbraco.Web.Models.ContentEditing;
|
||||
using Umbraco.Web.Models.Mapping;
|
||||
using Umbraco.Web.Trees;
|
||||
|
||||
namespace Umbraco.Web.Search
|
||||
@@ -65,6 +66,16 @@ namespace Umbraco.Web.Search
|
||||
UmbracoEntityTypes entityType,
|
||||
int pageSize,
|
||||
long pageIndex, out long totalFound, string searchFrom = null, bool ignoreUserStartNodes = false)
|
||||
{
|
||||
return ExamineSearch(query, entityType, pageSize, pageIndex, culture: null, out totalFound, searchFrom, ignoreUserStartNodes);
|
||||
}
|
||||
|
||||
public IEnumerable<SearchResultEntity> ExamineSearch(
|
||||
string query,
|
||||
UmbracoEntityTypes entityType,
|
||||
int pageSize,
|
||||
long pageIndex, string culture,
|
||||
out long totalFound, string searchFrom = null, bool ignoreUserStartNodes = false)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
||||
@@ -140,7 +151,7 @@ namespace Umbraco.Web.Search
|
||||
case UmbracoEntityTypes.Media:
|
||||
return MediaFromSearchResults(pagedResult);
|
||||
case UmbracoEntityTypes.Document:
|
||||
return ContentFromSearchResults(pagedResult);
|
||||
return ContentFromSearchResults(pagedResult, culture);
|
||||
default:
|
||||
throw new NotSupportedException("The " + typeof(UmbracoTreeSearcher) + " currently does not support searching against object type " + entityType);
|
||||
}
|
||||
@@ -443,13 +454,17 @@ namespace Umbraco.Web.Search
|
||||
/// </summary>
|
||||
/// <param name="results"></param>
|
||||
/// <returns></returns>
|
||||
private IEnumerable<SearchResultEntity> ContentFromSearchResults(IEnumerable<ISearchResult> results)
|
||||
private IEnumerable<SearchResultEntity> ContentFromSearchResults(IEnumerable<ISearchResult> results, string culture = null)
|
||||
{
|
||||
var defaultLang = _languageService.GetDefaultLanguageIsoCode();
|
||||
|
||||
foreach (var result in results)
|
||||
{
|
||||
var entity = _mapper.Map<SearchResultEntity>(result);
|
||||
var entity = _mapper.Map<SearchResultEntity>(result, context => {
|
||||
if(culture != null) {
|
||||
context.SetCulture(culture);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
var intId = entity.Id.TryConvertTo<int>();
|
||||
if (intId.Success)
|
||||
@@ -457,7 +472,7 @@ namespace Umbraco.Web.Search
|
||||
//if it varies by culture, return the default language URL
|
||||
if (result.Values.TryGetValue(UmbracoContentIndex.VariesByCultureFieldName, out var varies) && varies == "y")
|
||||
{
|
||||
entity.AdditionalData["Url"] = _umbracoContext.Url(intId.Result, defaultLang);
|
||||
entity.AdditionalData["Url"] = _umbracoContext.Url(intId.Result, culture ?? defaultLang);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user