public static IEnumerable <ToolbarGroupButtons> GetToolbarButtons(RequestContext requestContext) { var tabProviders = Kooboo.CMS.Common.Runtime.EngineContext.Current.ResolveAll <IToolbarProvider>(); var matchedProviders = MatchProviders(tabProviders, requestContext.RouteData).ToArray(); var groups = matchedProviders.SelectMany(it => it.GetGroups(requestContext)).OrderBy(it => it.Order) .Distinct(new ToolbarGroupEqualityComparer()) .Select(it => new ToolbarGroupButtons() { Group = it, Buttons = new List <ToolbarButton>() }).ToArray(); var buttons = matchedProviders.SelectMany(it => it.GetButtons(requestContext)).OrderBy(it => it.Order).ToArray(); var nonGroup = new ToolbarGroupButtons() { Group = null, Buttons = new List <ToolbarButton>() }; foreach (var button in buttons) { if (string.IsNullOrEmpty(button.GroupName)) { nonGroup.Buttons.Add(button); } else { var group = groups.Where(it => it.Group.GroupName.EqualsOrNullEmpty(button.GroupName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (group != null) { group.Buttons.Add(button); } else { nonGroup.Buttons.Add(button); } } } nonGroup.Buttons = nonGroup.Buttons.OrderBy(it => it.Order).ToList(); foreach (var group in groups) { group.Buttons = group.Buttons.OrderBy(it => it.Order).ToList(); } return(new[] { nonGroup }.Concat(groups)); }
public static IEnumerable<ToolbarGroupButtons> GetToolbarButtons(RequestContext requestContext) { var tabProviders = Kooboo.CMS.Common.Runtime.EngineContext.Current.ResolveAll<IToolbarProvider>(); var matchedProviders = MatchProviders(tabProviders, requestContext).ToArray(); var groups = matchedProviders.SelectMany(it => it.GetGroups(requestContext)).OrderBy(it => it.Order) .Distinct(new ToolbarGroupEqualityComparer()) .Select(it => new ToolbarGroupButtons() { Group = it, Buttons = new List<ToolbarButton>() }).ToArray(); var buttons = matchedProviders.SelectMany(it => it.GetButtons(requestContext)).OrderBy(it => it.Order).ToArray(); var nonGroup = new ToolbarGroupButtons() { Group = null, Buttons = new List<ToolbarButton>() }; foreach (var button in buttons) { if (string.IsNullOrEmpty(button.GroupName)) { nonGroup.Buttons.Add(button); } else { var group = groups.Where(it => it.Group.GroupName.EqualsOrNullEmpty(button.GroupName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (group != null) { group.Buttons.Add(button); } else { nonGroup.Buttons.Add(button); } } } nonGroup.Buttons = nonGroup.Buttons.OrderBy(it => it.Order).ToList(); foreach (var group in groups) { group.Buttons = group.Buttons.OrderBy(it => it.Order).ToList(); } return new[] { nonGroup }.Concat(groups); }