コード例 #1
0
        /// <summary>
        /// Gets a navigation hierarchy based on data provided by the CTB router.
        /// </summary>
        /// <param name="siteCulture">Site culture.</param>
        /// <returns>Navigation hierarchy of a given culture.</returns>
        private async Task <NavigationItem> GetContentTreeNavigationAsync(SiteCulture?siteCulture, CancellationToken?cancellationToken)
        {
            var            checkedCulture = GetSiteCulture(siteCulture);
            NavigationItem navigation;

            if (!_memoryCache.TryGetValue(checkedCulture.IsoCode, out navigation))
            {
                var allItems = (await _basePageRepository.GetPagesByTypeAndCultureAsync(
                                    NavigationEnabledPageTypes,
                                    checkedCulture,
                                    $"{nameof(NavigationRepository)}|{nameof(GetContentTreeNavigationAsync)}|{checkedCulture.IsoCode}",
                                    filter => GetDefaultFilter(filter)
                                    .MenuItems(),
                                    cacheDependencies: NavigationEnabledTypeDependencies.ToArray(),
                                    cancellationToken: cancellationToken))
                               .Select(basePage => MapBaseToNavigationDto(basePage));

                navigation = DecorateItems(RootDto, allItems, GetContentTreeBasedUrl);
                var changeToken = _cacheDependencyAdapter.GetChangeToken(NavigationEnabledTypeDependencies?.ToArray());

                _memoryCache.Set(checkedCulture.IsoCode, navigation, changeToken);
            }

            return(navigation);
        }
コード例 #2
0
        /// <summary>
        /// Gets a navigation hierarchy based on data provided by the CTB router.
        /// </summary>
        /// <param name="siteCulture">Site culture.</param>
        /// <returns>Navigation hierarchy of a given culture.</returns>
        private NavigationItem GetContentTreeNavigation(SiteCulture?siteCulture)
        {
            var checkedCulture = GetSiteCulture(siteCulture);

            var allItems = _basePageRepository.GetPagesByTypeAndCulture(
                NavigationEnabledPageTypes,
                checkedCulture,
                $"{nameof(NavigationRepository)}|{nameof(GetContentTreeNavigation)}|{checkedCulture.IsoCode}",
                filter => GetDefaultFilter(filter)
                .MenuItems(),
                cacheDependencies: NavigationEnabledTypeDependencies.ToArray())
                           .Select(basePage => MapBaseToNavigationDto(basePage));

            return(DecorateItems(RootDto, allItems, GetContentTreeBasedUrl));
        }