Files
Orchard/src/Orchard.Web/Core/Common/Models/RoutableAspectHandler.cs
Nathan Heskew 98b483f827 Moving Orchard.Core/Common handlers into Models
--HG--
branch : dev
rename : src/Orchard.Web/Core/Common/Providers/BodyAspectHandler.cs => src/Orchard.Web/Core/Common/Models/BodyAspectHandler.cs
rename : src/Orchard.Web/Core/Common/Providers/CommonAspectHandler.cs => src/Orchard.Web/Core/Common/Models/CommonAspectHandler.cs
2010-03-03 00:40:32 -08:00

29 lines
1.1 KiB
C#

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<RoutableRecord> repository) {
Filters.Add(StorageFilter.For(repository));
OnGetEditorViewModel<RoutableAspect>((context, routable) => {
var containerPathBuilder = new StringBuilder();
var container = context.ContentItem.As<ICommonAspect>().Container;
while (container != null) {
if (container.Is<RoutableAspect>())
containerPathBuilder.Insert(0, string.Format("{0}/", container.As<RoutableAspect>().Slug));
container = container.ContentItem.As<ICommonAspect>().Container;
}
routable.ContainerPath = containerPathBuilder.ToString();
});
}
}
}