public List <NavigationLink> GetAllNavigationLinks(string siteName = null) { var navigationLinks = new List <NavigationLink>(); if (siteName == null) { siteName = SiteContext.CurrentSiteName; } using (var cs = new CachedSection <List <NavigationLink> >(ref navigationLinks, CacheHelper.CacheMinutes(siteName), true, _projectCacheKey)) { if (cs.LoadData) { navigationLinks = NavigationLinkProvider.GetNavigationLinks().OnSite(siteName).ToList(); var cacheDependencies = new List <string> { $"nodes|{siteName}|{NavigationLink.CLASS_NAME}|all" }; cs.Data = navigationLinks; cs.CacheDependency = CacheHelper.GetCacheDependency(cacheDependencies); } } return(navigationLinks); }
public List <NavigationLink> GetNavigationLinksByPath(string path) { var cacheKey = $"{_projectCacheKey}|{path}"; var navigationLinks = new List <NavigationLink>(); using (var cs = new CachedSection <List <NavigationLink> >(ref navigationLinks, CacheHelper.CacheMinutes(SiteContext.CurrentSiteName), true, cacheKey)) { if (cs.LoadData) { var result = NavigationLinkProvider.GetNavigationLinks() .Path(path) .OnSite(SiteContext.CurrentSiteName) .ToList(); var associatedPagePaths = DocumentHelper.GetDocuments() .Columns("NodeGUID,NodeAliasPath") .WhereIn("NodeGUID", result.Select(x => x.AssociatedPage).ToList()) .ToList(); foreach (var navigationLink in result) { navigationLink.AssociatedPagePath = associatedPagePaths.FirstOrDefault(x => x.NodeGUID == navigationLink.AssociatedPage) ?.NodeAliasPath; navigationLink.ChildLinks = result.Where(x => x.NodeParentID == navigationLink.NodeID) .OrderBy(x => x.NodeOrder) .ToList(); foreach (var childLink in navigationLink.ChildLinks) { childLink.ParentLink = navigationLink; } } navigationLinks = result.Where(x => x.ParentLink == default(NavigationLink)).ToList(); var cacheDependencies = new List <string> { $"nodes|{SiteContext.CurrentSiteName}|{NavigationLink.CLASS_NAME}|all" }; cs.Data = navigationLinks; cs.CacheDependency = CacheHelper.GetCacheDependency(cacheDependencies); } } return(navigationLinks); }