protected override DriverResult Display(ContentWidgetsPart part, string displayType, dynamic shapeHelper) { var settings = part.Settings.GetModel <ContentWidgetsTypePartSettings>(); var excludedWidgetIds = IdSerializer.DeserializeIds(part.ExcludedWidgetIdsDefinition); var displayedWidgetIds = from id in IdSerializer.DeserializeIds(settings.AttachedWidgetIdsDefinition) where !excludedWidgetIds.Contains(id) select id; var results = new List <DriverResult>(); var widgets = _contentManager.GetMany <IContent>(displayedWidgetIds, VersionOptions.Published, new QueryHints().ExpandParts <WidgetPart>()); foreach (var widget in widgets) { // This is needed so the lambda gets a frech copy. var currentWidget = widget; results.Add( ContentShape("Parts_ContentWidgetsPart_Widget_" + currentWidget.ContentItem.Id, () => _contentManager.BuildDisplay(currentWidget)) ); } return(Combined(results.ToArray())); }
public override IEnumerable <TemplateViewModel> TypePartEditor(ContentTypePartDefinition definition) { if (definition.PartDefinition.Name != "ContentWidgetsPart") { yield break; } var settings = definition.Settings.GetModel <ContentWidgetsTypePartSettings>(); var attachedWidgetIds = IdSerializer.DeserializeIds(settings.AttachedWidgetIdsDefinition); var viewModel = new ContentWidgetsViewModel(); viewModel.Widgets = (from widget in _widgetService.GetWidgets() select new ContentWidget { Id = widget.Id, Title = widget.Title, IsAttached = attachedWidgetIds.Contains(widget.Id) }).ToList(); yield return(DefinitionTemplate(viewModel, "ContentWidgetsTypePartSettings", Prefix)); }
// GET protected override DriverResult Editor(ContentWidgetsPart part, dynamic shapeHelper) { return(ContentShape("Parts_ContentWidgetsPart_Edit", () => { var excludedWidgetIds = IdSerializer.DeserializeIds(part.ExcludedWidgetIdsDefinition); var viewModel = new ContentWidgetsViewModel(); viewModel.Widgets = (from widget in _contentManager.GetMany <WidgetPart>( IdSerializer.DeserializeIds(part.Settings.GetModel <ContentWidgetsTypePartSettings>().AttachedWidgetIdsDefinition), VersionOptions.Published, new QueryHints().ExpandRecords <WidgetPartRecord>()) select new ContentWidget { Id = widget.ContentItem.Id, Title = widget.Title, IsAttached = !excludedWidgetIds.Contains(widget.Id) }).ToList(); return shapeHelper.EditorTemplate( TemplateName: "Parts.ContentWidgets", Model: viewModel, Prefix: Prefix); })); }