private IEnumerable <MvcSiteMapNode> CopyAndSetState(IEnumerable <MvcSiteMapNode> nodes, String area, String controller, String action) { List <MvcSiteMapNode> copies = new List <MvcSiteMapNode>(); foreach (MvcSiteMapNode node in nodes) { MvcSiteMapNode copy = new MvcSiteMapNode(); copy.IconClass = node.IconClass; copy.IsMenu = node.IsMenu; copy.Controller = node.Controller; copy.Action = node.Action; copy.Area = node.Area; copy.Children = CopyAndSetState(node.Children, area, controller, action); copy.HasActiveChildren = copy.Children.Any(child => child.IsActive || child.HasActiveChildren); copy.IsActive = copy.Children.Any(child => child.IsActive && !child.IsMenu) || ( String.Equals(node.Area, area, StringComparison.OrdinalIgnoreCase) && String.Equals(node.Action, action, StringComparison.OrdinalIgnoreCase) && String.Equals(node.Controller, controller, StringComparison.OrdinalIgnoreCase )); copies.Add(copy); } return(copies); }
public IEnumerable <MvcSiteMapNode> GetBreadcrumb(ViewContext context) { String area = context.RouteData.Values["area"] as String; String action = context.RouteData.Values["action"] as String; String controller = context.RouteData.Values["controller"] as String; MvcSiteMapNode current = NodeList.SingleOrDefault(node => String.Equals(node.Area, area, StringComparison.OrdinalIgnoreCase) && String.Equals(node.Action, action, StringComparison.OrdinalIgnoreCase) && String.Equals(node.Controller, controller, StringComparison.OrdinalIgnoreCase)); List <MvcSiteMapNode> breadcrumb = new List <MvcSiteMapNode>(); while (current != null) { breadcrumb.Insert(0, new MvcSiteMapNode { IconClass = current.IconClass, Controller = current.Controller, Action = current.Action, Area = current.Area }); current = current.Parent; } return(breadcrumb); }
private Boolean IsAuthorizedToView(Int32?accountId, MvcSiteMapNode menu) { if (menu.Action == null) { return(true); } if (Authorization.Provider == null) { return(true); } return(Authorization.Provider.IsAuthorizedFor(accountId, menu.Area, menu.Controller, menu.Action)); }
private IEnumerable <MvcSiteMapNode> GetNodes(XElement siteMap, MvcSiteMapNode parent) { List <MvcSiteMapNode> nodes = new List <MvcSiteMapNode>(); foreach (XElement siteMapNode in siteMap.Elements("siteMapNode")) { MvcSiteMapNode node = new MvcSiteMapNode(); node.IsMenu = (Boolean?)siteMapNode.Attribute("menu") == true; node.Controller = (String)siteMapNode.Attribute("controller"); node.IconClass = (String)siteMapNode.Attribute("icon"); node.Action = (String)siteMapNode.Attribute("action"); node.Area = (String)siteMapNode.Attribute("area"); node.Children = GetNodes(siteMapNode, node); node.Parent = parent; nodes.Add(node); } return(nodes); }
private Boolean IsEmpty(MvcSiteMapNode node) { return(node.Action == null && !node.Children.Any()); }