private ICollection <Pair <string, IEnumerable <Item> > > GetGroupedElements([NotNull] RulesEditorOptions options) { Debug.ArgumentNotNull(options, nameof(options)); Assert.ArgumentNotNull(options, nameof(options)); var args = new RuleElementsPipelineArgs { RulesPath = options.RulesPath, ContextItemId = options.ContextItemID }; GetRenderedRuleElements.Run(args); var elementsFolders = args.ElementFolders.Values; var groupedElements = elementsFolders.Select(e => new { GroupItem = Client.ContentDatabase.GetItem(e["Group"]), Folder = e }).Where(i => i.GroupItem != null).ToList(); var notGroupedFolder = elementsFolders.Except(groupedElements.Select(i => i.Folder)).ToList(); var elements = groupedElements.GroupBy(e => e.GroupItem, e => e.Folder.GetChildren(), (groupItem, children) => new Pair <string, IEnumerable <Item> >(groupItem.DisplayName, children.SelectMany(c => c)), new ItemIdComparer()).ToList(); var notGroupedElements = notGroupedFolder.Select(f => new Pair <string, IEnumerable <Item> >(f.DisplayName, f.GetChildren())).ToList(); elements = elements.Union(notGroupedElements).ToList(); return(elements.OrderBy(i => i.Part1).ToList()); }
protected override void Action(Dictionary <ID, Item> result, RuleElementsPipelineArgs args) { foreach (Item tag in args.Tags.Values) { foreach (Item conditionFolder in this.GetConditionFolders(tag)) { if (!result.ContainsKey(conditionFolder.ID)) { result.Add(conditionFolder.ID, conditionFolder); } } } }
protected override Dictionary <ID, Item> GetResultCollection(RuleElementsPipelineArgs args) { return(args.ElementFolders); }