/// <summary></summary> public BreadcrumbProvider(string configPath) { var doc = XDocument.Load(configPath); _nodeList = new List <BreadcrumbNode>(); _root = mappingToNode(doc.Root); }
private int GetNestingLevel(BreadcrumbNode node) { var level = 1; while (node.Parent != null) { node = node.Parent; level++; } return(level); }
private void BuildBreadcrumbs(string virtualPath, Nav nav) { string action = RouteData.Values["action"].ToString(); string controller = RouteData.Values["controller"].ToString(); string requestPath = virtualPath?.Trim(Separator.Path); BreadcrumbNode breadcrumbNode = null; if (!string.IsNullOrWhiteSpace(requestPath)) { Stack <string> virtualNamesForScan = new Stack <string>(requestPath.Split(Separator.Path).Reverse()); BreadcrumbNode ScanNavItem(string virtualNameForScan, IEnumerable <NavItem> navItems, BreadcrumbNode parent = null) { if (!string.IsNullOrWhiteSpace(virtualNameForScan) && navItems.Count() > 0) { NavItem navItem = navItems.FirstOrDefault(x => x.VirtualPath.Equals(virtualNameForScan, StringComparison.OrdinalIgnoreCase)); if (navItem != null) { BreadcrumbNode node = new BreadcrumbNode(navItem.DisplayName, "Page", "Pages", new { navItem.VirtualPath }, parent); if (virtualNamesForScan.Count > 0 && navItem.Children.Count() > 0) { return(ScanNavItem(virtualNameForScan + Separator.Path + virtualNamesForScan.Pop(), navItem.Children, node)); } else { return(node); } } } return(parent); } breadcrumbNode = ScanNavItem(virtualNamesForScan.Pop(), nav.Items); } else { if (nav.Items.Count() > 0) { NavItem navItem = nav.Items.First(); breadcrumbNode = new BreadcrumbNode(navItem.DisplayName, "Page", "Pages", new { navItem.VirtualPath }); } } if (breadcrumbNode != null) { ViewData["BreadcrumbNode"] = breadcrumbNode; } }
private BreadcrumbNode mappingToNode(XElement el, BreadcrumbNode parent = null) { var node = new BreadcrumbNode { Name = attr(el, "name"), Url = attr(el, "url"), Icon = attr(el, "icon"), Pattern = attr(el, "pattern"), Parent = parent, }; node.ChildNodes = el.Elements("node").Select(x => mappingToNode(x, node)).ToList(); _nodeList.Add(node); return(node); }
public static void AppendToBreadcrumb(this HttpContext httpContext, BreadcrumbNode node) { var nodes = (List <BreadcrumbNode>)httpContext.Items[BreadcrumbKey]; if (nodes == null) { nodes = new List <BreadcrumbNode>() { new BreadcrumbNode() { DisplayText = LocalizationHelper.Localize("Home", ApplicationEngine.CurrentLanguageCultureCode), Url = ApplicationEngine.RouteUrl(RouteNames.Home, absoluteUrl: true) } }; httpContext.Items[BreadcrumbKey] = nodes; } nodes.Add(node); }
static Breadcrumb() { _tree = BreadcrumbCollector.Collect(Assembly.GetExecutingAssembly()); }