using System.Text; using JetBrains.Annotations; using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; using Orchard.ContentManagement.Handlers; using Orchard.Core.Common.Records; using Orchard.Data; namespace Orchard.Core.Common.Models { [UsedImplicitly] public class RoutableAspectHandler : ContentHandler { public RoutableAspectHandler(IRepository repository) { Filters.Add(StorageFilter.For(repository)); OnGetEditorViewModel((context, routable) => { var containerPathBuilder = new StringBuilder(); var container = context.ContentItem.As().Container; while (container != null) { if (container.Is()) containerPathBuilder.Insert(0, string.Format("{0}/", container.As().Slug)); container = container.ContentItem.As().Container; } routable.ContainerPath = containerPathBuilder.ToString(); }); } } }