using Microsoft.Extensions.FileProviders; using Umbraco.Cms.Core.Composing; namespace Umbraco.Cms.Core.Snippets { /// /// The partial view snippet collection builder. /// public class PartialViewSnippetCollectionBuilder : LazyCollectionBuilderBase { protected override PartialViewSnippetCollectionBuilder This => this; protected override IEnumerable CreateItems(IServiceProvider factory) { var embeddedSnippets = new List(base.CreateItems(factory)); // Ignore these var filterNames = new List { "Gallery", "ListChildPagesFromChangeableSource", "ListChildPagesOrderedByProperty", "ListImagesFromMediaFolder" }; var snippetProvider = new EmbeddedFileProvider(typeof(IAssemblyProvider).Assembly, "Umbraco.Cms.Core.EmbeddedResources.Snippets"); var embeddedFiles = snippetProvider.GetDirectoryContents(string.Empty) .Where(x => !x.IsDirectory && x.Name.EndsWith(".cshtml")); foreach (var file in embeddedFiles) { if (!filterNames.Contains(Path.GetFileNameWithoutExtension(file.Name))) { using var stream = new StreamReader(file.CreateReadStream()); embeddedSnippets.Add(new Snippet(file.Name, stream.ReadToEnd().Trim())); } } return embeddedSnippets; } } }