public TimetablePartHandler(IRepository<TimetablePartRecord> repository, IWorkContextAccessor workContextAccessor, IEnumerable<IHomePageProvider> homePageProviders, ITimetableSlugConstraint TimetableSlugConstraint) { _workContextAccessor = workContextAccessor; _TimetableSlugConstraint = TimetableSlugConstraint; _routableHomePageProvider = homePageProviders.SingleOrDefault(p => p.GetProviderName() == RoutableHomePageProvider.Name); Filters.Add(StorageFilter.For(repository)); Action<PublishContentContext, RoutePart> publishedHandler = (context, route) => { if (route.Is<TimetablePart>()) { if (route.ContentItem.Id != 0 && route.PromoteToHomePage) _TimetableSlugConstraint.AddSlug(""); } else if (route.ContentItem.Id != 0 && route.PromoteToHomePage) { _TimetableSlugConstraint.RemoveSlug(""); } }; OnPublished<RoutePart>(publishedHandler); OnUnpublished<RoutePart>(publishedHandler); OnGetDisplayShape<TimetablePart>((context, Timetable) => { context.Shape.Description = Timetable.Description; context.Shape.AppointmentCount = Timetable.AppointmentCount; }); }