* Rename Umbraco.Core namespace to Umbraco.Cms.Core * Move extension methods in core project to Umbraco.Extensions * Move extension methods in core project to Umbraco.Extensions * Rename Umbraco.Examine namespace to Umbraco.Cms.Examine * Move examine extensions to Umbraco.Extensions namespace * Reflect changed namespaces in Builder and fix unit tests * Adjust namespace in Umbraco.ModelsBuilder.Embedded * Adjust namespace in Umbraco.Persistence.SqlCe * Adjust namespace in Umbraco.PublishedCache.NuCache * Align namespaces in Umbraco.Web.BackOffice * Align namespaces in Umbraco.Web.Common * Ensure that SqlCeSupport is still enabled after changing the namespace * Align namespaces in Umbraco.Web.Website * Align namespaces in Umbraco.Web.UI.NetCore * Align namespaces in Umbraco.Tests.Common * Align namespaces in Umbraco.Tests.UnitTests * Align namespaces in Umbraco.Tests.Integration * Fix errors caused by changed namespaces * Fix integration tests * Undo the Umbraco.Examine.Lucene namespace change This breaks integration tests on linux, since the namespace wont exists there because it's only used on windows. * Fix merge * Fix Merge
51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Umbraco.Cms.Core.Composing;
|
|
using Umbraco.Cms.Core.Services;
|
|
using Umbraco.Extensions;
|
|
|
|
namespace Umbraco.Cms.Core.Trees
|
|
{
|
|
public class SearchableTreeCollection : BuilderCollectionBase<ISearchableTree>
|
|
{
|
|
private readonly Dictionary<string, SearchableApplicationTree> _dictionary;
|
|
|
|
public SearchableTreeCollection(IEnumerable<ISearchableTree> items, ITreeService treeService)
|
|
: base(items)
|
|
{
|
|
_dictionary = CreateDictionary(treeService);
|
|
}
|
|
|
|
private Dictionary<string, SearchableApplicationTree> CreateDictionary(ITreeService treeService)
|
|
{
|
|
var appTrees = treeService.GetAll()
|
|
.OrderBy(x => x.SortOrder)
|
|
.ToArray();
|
|
var dictionary = new Dictionary<string, SearchableApplicationTree>(StringComparer.OrdinalIgnoreCase);
|
|
var searchableTrees = this.ToArray();
|
|
foreach (var appTree in appTrees)
|
|
{
|
|
var found = searchableTrees.FirstOrDefault(x => x.TreeAlias.InvariantEquals(appTree.TreeAlias));
|
|
if (found != null)
|
|
{
|
|
var searchableTreeAttribute = found.GetType().GetCustomAttribute<SearchableTreeAttribute>(false);
|
|
dictionary[found.TreeAlias] = new SearchableApplicationTree(
|
|
appTree.SectionAlias,
|
|
appTree.TreeAlias,
|
|
searchableTreeAttribute?.SortOrder ?? SearchableTreeAttribute.DefaultSortOrder,
|
|
searchableTreeAttribute?.ServiceName ?? string.Empty,
|
|
searchableTreeAttribute?.MethodName ?? string.Empty,
|
|
found
|
|
);
|
|
}
|
|
}
|
|
return dictionary;
|
|
}
|
|
|
|
public IReadOnlyDictionary<string, SearchableApplicationTree> SearchableApplicationTrees => _dictionary;
|
|
|
|
public SearchableApplicationTree this[string key] => _dictionary[key];
|
|
}
|
|
}
|