protected override DriverResult Display(HighlightsGroupPart part, string displayType, dynamic shapeHelper)
        {
            ViewsInfos viewsInfos = _HighlightsService.ChooseView(part);
            var        group      = new HighlightsGroupViewModel {
                Id              = part.Id,
                DisplayPlugin   = part.DisplayPlugin,
                DisplayTemplate = part.DisplayTemplate,
                ItemsSourceType = part.ItemsSourceType,
            };

            IEnumerable <dynamic> items          = null;
            IList <dynamic>       fromQueryItems = new List <dynamic>();

            if (part.ItemsSourceType == Enums.ItemsSourceTypes.ByHand)
            {
                items = _HighlightsService.GetHighlightsItemsContentByGroupId(part.Id, part.DisplayTemplate, part.DisplayPlugin, viewsInfos.SuffixShapeName.Replace("_", ""));
            }
            else if (part.ItemsSourceType == Enums.ItemsSourceTypes.FromQuery)
            {
                var queryItems = _projectionManager.GetContentItems(part.Query_Id, 0, 10);
                fromQueryItems = _HighlightsService.MapContentToHighlightsItemsViewModel(queryItems, part.DisplayTemplate, part.DisplayPlugin, viewsInfos);
            }
            var dict = new Dictionary <string, object> {
                { "HighlightsGroup", group },
                { "HighlightsItems", part.ItemsSourceType == Enums.ItemsSourceTypes.FromQuery?fromQueryItems:items }
            };
            var args = Arguments.From(dict.Values, dict.Keys);

            return(ContentShape(viewsInfos.ResultShapeName,
                                () => _shapeFactory.Create(viewsInfos.ResultShapeName, args)));
            //return null;
        }
        protected override DriverResult Display(HighlightsItemPart part, String displayType, dynamic shapeHelper)
        {
            ViewsInfos viewInfos = _HighlightsService.ChooseView(part);
            var        dict      = new Dictionary <string, object> {
                { "HighlightsItem", _HighlightsService.MapContentToHighlightsItemViewModel(part) },
                { "DisplayTemplate", displayType }
            };
            var args = Arguments.From(dict.Values, dict.Keys);

            return(ContentShape(
                       viewInfos.ResultShapeName,
                       () => _shapeFactory.Create(viewInfos.ResultShapeName, args)));
        }
        public IList <dynamic> MapContentToHighlightsItemsViewModel(IEnumerable <ContentItem> queryItems, Enums.DisplayTemplate displayTemplate, string displayPlugin, ViewsInfos viewsInfos)
        {
            var             order          = 0;
            IList <dynamic> fromQueryItems = new List <dynamic>();

            foreach (var queryItem in queryItems)
            {
                var title    = queryItem.As <TitlePart>();
                var body     = queryItem.As <BodyPart>();
                var bodyText = "";
                if (body == null)
                {
                    try {
                        var       mediaContainerPart = queryItem.Parts.Where(w => w.Fields.SingleOrDefault(w1 => w1.GetType() == typeof(TextField)) != null).FirstOrDefault();
                        TextField textfield          = (TextField)mediaContainerPart.Fields.FirstOrDefault(w => w.GetType() == typeof(TextField));
                        bodyText = textfield.Value;
                    } catch { }
                }
                else
                {
                    bodyText = body.Text;
                }
                var mediaUrl = "";
                try {
                    var mediaContainerPart             = queryItem.Parts.Where(w => w.Fields.SingleOrDefault(w1 => w1.GetType() == typeof(MediaLibraryPickerField)) != null && w.GetType() == typeof(ContentPart)).FirstOrDefault();
                    MediaLibraryPickerField mediafield = (MediaLibraryPickerField)mediaContainerPart.Fields.FirstOrDefault(w => w.GetType() == typeof(MediaLibraryPickerField));
                    mediaUrl = mediafield.MediaParts.ToList()[0].MediaUrl;
                } catch { }
                string displayUrl = ContentItemExtensions.ItemDisplayUrl(new UrlHelper(new RequestContext(
                                                                                           new HttpContextWrapper(HttpContext.Current),
                                                                                           new RouteData()), RouteTable.Routes), queryItem);
                var HLItem = new HighlightsItemViewModel {
                    Title                = title != null ? title.Title : "",
                    TitleSize            = "",
                    Body                 = bodyText,
                    ItemOrder            = order,
                    LinkTarget           = Enums.LinkTargets._self,
                    LinkUrl              = displayUrl,
                    GroupShapeName       = viewsInfos.SuffixShapeName.Replace("_", ""),
                    LinkText             = T("Details").Text,
                    MediaUrl             = mediaUrl,
                    Video                = false,
                    GroupDisplayTemplate = displayTemplate,
                    GroupDisplayPlugin   = displayPlugin,
                    Content              = queryItem
                };
                fromQueryItems.Add(HLItem);
                order++;
            }
            return(fromQueryItems);
        }