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());
        }
Пример #2
0
 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);
             }
         }
     }
 }
Пример #3
0
 protected override Dictionary <ID, Item> GetResultCollection(RuleElementsPipelineArgs args)
 {
     return(args.ElementFolders);
 }