示例#1
0
        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));
        }
示例#3
0
        // 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);
            }));
        }