Ejemplo n.º 1
0
        private IEnumerable <INavigation> BuildNavigation(INavigation_Root navigationRootItem)
        {
            var navigation = new List <Navigation>();

            try
            {
                Stopwatch sw = Stopwatch.StartNew();
                if (navigationRootItem == null)
                {
                    return(Enumerable.Empty <INavigation>());
                }
                var looseNavigation     = new List <Navigation>();
                var navigationLinkItems = GetChildLinkItems(navigationRootItem);
                foreach (var navigationLinkItem in navigationLinkItems)
                {
                    var navigationChild = CreateNavigation(navigationLinkItem);

                    if (navigationLinkItem is INavigation_Header)
                    {
                        var headerChildItems = GetChildLinkItems(navigationLinkItem).Where(cli => cli.Navigation_Link != null);

                        navigationChild.Children = headerChildItems.Select(CreateNavigation);

                        navigation.Add(navigationChild);
                    }
                    else if (navigationLinkItem.Navigation_Link != null)
                    {
                        looseNavigation.Add(navigationChild);
                    }
                }

                if (looseNavigation.Any())
                {
                    navigation.Add(new Navigation
                    {
                        Children = looseNavigation
                    });
                }
                StringExtensions.WriteSitecoreLogs("Build Naviugation Method from Sitecore End at :", sw, "SitemapService");
                return(navigation);
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Navigation Error", ex, "ItemNavigationTreeFactory");
                return(navigation);
            }
        }
Ejemplo n.º 2
0
        public IEnumerable <INavigation> Create(INavigation_Root navigationRootItem)
        {
            if (navigationRootItem == null)
            {
                return(Enumerable.Empty <INavigation>());
            }
            Stopwatch sw = Stopwatch.StartNew();

            StringExtensions.WriteSitecoreLogs("Reached ItemNavigation Create method at :", sw, "ItemSideNavigationTreeFactory");
            string cacheKey = $"{nameof(ItemNavigationTreeFactory)}-Create-{navigationRootItem._Id}";

            //return _dependencies.CacheProvider.GetFromCache(cacheKey, () => BuildNavigation(navigationRootItem));
            lock (_syncRoot)
            {
                return(_dependencies.CacheProvider.GetFromCache(cacheKey, () => BuildNavigation(navigationRootItem)));
            }
        }