Files
Umbraco-CMS/src/Umbraco.Infrastructure/Search/UmbracoTreeSearcherFields.cs
Bjarke Berg c3ebbe23fd Merge remote-tracking branch 'origin/v8/dev' into v9/feature/merge_v8_03-11-2021
# Conflicts:
#	src/Umbraco.Core/Configuration/GlobalSettings.cs
#	src/Umbraco.Core/Configuration/IGlobalSettings.cs
#	src/Umbraco.Core/Constants-AppSettings.cs
#	src/Umbraco.Tests/Umbraco.Tests.csproj
#	src/Umbraco.Web.BackOffice/Controllers/BackOfficeServerVariables.cs
#	src/Umbraco.Web.UI/umbraco/config/lang/en.xml
#	src/Umbraco.Web.UI/umbraco/config/lang/en_us.xml
#	src/Umbraco.Web.UI/web.Template.config
#	src/Umbraco.Web/Editors/ContentTypeController.cs
#	src/Umbraco.Web/HealthCheck/Checks/Security/BaseHttpHeaderCheck.cs
#	tests/Umbraco.Tests.UnitTests/Umbraco.Core/Configurations/LanguageXmlTests.cs
2021-11-03 08:44:12 +01:00

62 lines
3.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Infrastructure.Examine;
namespace Umbraco.Cms.Infrastructure.Search
{
public class UmbracoTreeSearcherFields : IUmbracoTreeSearcherFields
{
private IReadOnlyList<string> _backOfficeFields = new List<string> {"id", UmbracoExamineFieldNames.ItemIdFieldName, UmbracoExamineFieldNames.NodeKeyFieldName};
private readonly ISet<string> _backOfficeFieldsToLoad = new HashSet<string> { "id", UmbracoExamineFieldNames.ItemIdFieldName, UmbracoExamineFieldNames.NodeKeyFieldName, "nodeName", UmbracoExamineFieldNames.IconFieldName, UmbracoExamineFieldNames.CategoryFieldName, "parentID", UmbracoExamineFieldNames.ItemTypeFieldName };
private IReadOnlyList<string> _backOfficeMediaFields = new List<string> { UmbracoExamineFieldNames.UmbracoFileFieldName };
private readonly ISet<string> _backOfficeMediaFieldsToLoad = new HashSet<string> { UmbracoExamineFieldNames.UmbracoFileFieldName };
private IReadOnlyList<string> _backOfficeMembersFields = new List<string> { "email", "loginName" };
private readonly ISet<string> _backOfficeMembersFieldsToLoad = new HashSet<string> { "email", "loginName" };
private readonly ISet<string> _backOfficeDocumentFieldsToLoad = new HashSet<string> { UmbracoExamineFieldNames.VariesByCultureFieldName };
private readonly ILocalizationService _localizationService;
public UmbracoTreeSearcherFields(ILocalizationService localizationService)
{
_localizationService = localizationService;
}
/// <inheritdoc />
public virtual IEnumerable<string> GetBackOfficeFields() => _backOfficeFields;
/// <inheritdoc />
public virtual IEnumerable<string> GetBackOfficeMembersFields() => _backOfficeMembersFields;
/// <inheritdoc />
public virtual IEnumerable<string> GetBackOfficeMediaFields() => _backOfficeMediaFields;
/// <inheritdoc />
public virtual IEnumerable<string> GetBackOfficeDocumentFields() => Enumerable.Empty<string>();
/// <inheritdoc />
public virtual ISet<string> GetBackOfficeFieldsToLoad() => _backOfficeFieldsToLoad;
/// <inheritdoc />
public virtual ISet<string> GetBackOfficeMembersFieldsToLoad() => _backOfficeMembersFieldsToLoad;
/// <inheritdoc />
public virtual ISet<string> GetBackOfficeMediaFieldsToLoad() => _backOfficeMediaFieldsToLoad;
/// <inheritdoc />
public virtual ISet<string> GetBackOfficeDocumentFieldsToLoad()
{
var fields = _backOfficeDocumentFieldsToLoad;
// We need to load all nodeName_* fields but we won't know those up front so need to get
// all langs (this is cached)
foreach(var field in _localizationService.GetAllLanguages().Select(x => "nodeName_" + x.IsoCode.ToLowerInvariant()))
{
fields.Add(field);
}
return fields;
}
}
}