protected override DriverResult Editor(HighlightsGroupPart part, dynamic shapeHelper)
        {
            var HighlightsItems = _HighlightsService.GetHighlightsItemsByGroupId(part.Id);
            // populating the list of queries and layouts
            var layouts            = _projectionManager.DescribeLayouts().SelectMany(x => x.Descriptors).ToList();
            var queryRecordEntries = _orchardServices.ContentManager.Query <QueryPart>().Join <TitlePartRecord>().OrderBy(x => x.Title).List()
                                     .Select(x => new QueryRecordEntry {
                Id   = x.Id,
                Name = x.Name,
            });

            var group = new HighlightsGroup {
                Id                   = part.Id,
                ContentId            = (part.ContentItem != null) ? part.ContentItem.Id : 0,
                DisplayPlugin        = part.DisplayPlugin,
                DisplayTemplate      = part.DisplayTemplate,
                HighlightsItems      = HighlightsItems.ToList(),
                HighlightsItemsOrder = String.Join(",", HighlightsItems.Select(s => s.Id).ToArray()),
                ItemsSourceType      = part.ItemsSourceType,
                Query_Id             = part.Query_Id,
                QueryRecordEntries   = queryRecordEntries,
            };

            return(ContentShape(
                       "Parts_HighlightsGroup_Edit",
                       () => shapeHelper.EditorTemplate(
                           TemplateName: "Parts/HighlightsGroup_Edit",
                           Model: group,
                           Prefix: Prefix)));
        }
        protected override DriverResult Editor(HighlightsGroupPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            var group           = new HighlightsGroup();
            var httpContext     = _httpContextAccessor.Current();
            var HighlightsItems = _HighlightsService.GetHighlightsItemsByGroupId(part.Id);
            var form            = httpContext.Request.Form;

            int[] Ordinati = new int[form.Count];

            string Suffisso;
            int    Riga = 0;

            foreach (string key in form.Keys)
            {
                if (key.StartsWith("HighlightsItems"))
                {
                    Suffisso = key.Substring(key.IndexOf("].") + 2);
                    switch (Suffisso)
                    {
                    case "Position":
                        //Lista[Riga, 0] = Convert.ToInt32(form[key]);
                        break;

                    case "ItemId":
                        Ordinati[Riga++] = Convert.ToInt32(form[key]);
                        break;

                    default:
                        break;
                    }
                }
            }


            String Messaggio;

            Messaggio = "";
            if (Messaggio != "")
            {
                updater.AddModelError(this.Prefix, T(Messaggio));
            }

            Array.Resize <int>(ref Ordinati, Riga);

            if (updater.TryUpdateModel(group, Prefix, null, null))
            {
                if (group.DisplayPlugin.StartsWith(group.DisplayTemplate.ToString() + " - "))
                {
                    part.DisplayPlugin = group.DisplayPlugin;
                }
                else
                {
                    part.DisplayPlugin = "";
                }
                part.DisplayTemplate = group.DisplayTemplate;
                part.ItemsSourceType = group.ItemsSourceType;
                if (group.ItemsSourceType == Enums.ItemsSourceTypes.ByHand)
                {
                    if (group.HighlightsItemsOrder != null)
                    {
                        for (var i = 0; i < Ordinati.Length; i++)
                        {
                            _HighlightsService.UpdateOrder(Convert.ToInt32(Ordinati[i]), i);
                        }
                    }
                }
                else
                {
                    part.Query_Id = group.Query_Id;
                }
            }
            else
            {
                _transactions.Cancel();
            }
            return(Editor(part, shapeHelper));
        }