예제 #1
0
        internal UrlInfo GetUrlFromRoute(
            string route,
            IUmbracoContext umbracoContext,
            int id,
            Uri current,
            UrlMode mode,
            string culture)
        {
            if (string.IsNullOrWhiteSpace(route))
            {
                _logger.LogDebug(
                    "Couldn't find any page with nodeId={NodeId}. This is most likely caused by the page not being published.",
                    id);
                return(null);
            }

            // extract domainUri and path
            // route is /<path> or <domainRootId>/<path>
            var          pos       = route.IndexOf('/');
            var          path      = pos == 0 ? route : route.Substring(pos);
            DomainAndUri domainUri = pos == 0
                ? null
                : DomainUtilities.DomainForNode(umbracoContext.PublishedSnapshot.Domains, _siteDomainMapper, int.Parse(route.Substring(0, pos), CultureInfo.InvariantCulture), current, culture);

            var defaultCulture = _localizationService.GetDefaultLanguageIsoCode();

            if (domainUri is not null || string.IsNullOrEmpty(culture) || culture.Equals(defaultCulture, StringComparison.InvariantCultureIgnoreCase))
            {
                var url = AssembleUrl(domainUri, path, current, mode).ToString();
                return(UrlInfo.Url(url, culture));
            }

            return(null);
        }
예제 #2
0
        internal UrlInfo GetUrlFromRoute(string route, IUmbracoContext umbracoContext, int id, Uri current, UrlMode mode, string culture)
        {
            if (string.IsNullOrWhiteSpace(route))
            {
                _logger.LogDebug("Couldn't find any page with nodeId={NodeId}. This is most likely caused by the page not being published.", id);
                return(null);
            }

            // extract domainUri and path
            // route is /<path> or <domainRootId>/<path>
            var pos       = route.IndexOf('/');
            var path      = pos == 0 ? route : route.Substring(pos);
            var domainUri = pos == 0
                ? null
                : DomainUtilities.DomainForNode(umbracoContext.PublishedSnapshot.Domains, _siteDomainMapper, int.Parse(route.Substring(0, pos), CultureInfo.InvariantCulture), current, culture);

            // assemble the URL from domainUri (maybe null) and path
            var url = AssembleUrl(domainUri, path, current, mode).ToString();

            return(UrlInfo.Url(url, culture));
        }