diff --git a/src/Configuration/Constants.cs b/src/Configuration/Constants.cs index 3db32e9..cd0a588 100644 --- a/src/Configuration/Constants.cs +++ b/src/Configuration/Constants.cs @@ -28,7 +28,7 @@ public class DefaultValues public static readonly string[] DefaultAliases = new string[] {}; - public const string HiddenSegment = "#"; + public const string HiddenSegment = "/"; public const int WhileLoopMaxCount = 50; } diff --git a/src/Our.Umbraco.Skipper.csproj b/src/Our.Umbraco.Skipper.csproj index 093e009..a3f31f5 100644 --- a/src/Our.Umbraco.Skipper.csproj +++ b/src/Our.Umbraco.Skipper.csproj @@ -7,7 +7,7 @@ Umbraco.Skipper An Umbraco package that lets you specify nodes and document types that will be excluded from Umbraco's URL generation. umbraco plugin package - 1.1.0 + 1.1.1 ZioTino Our.Umbraco.Skipper LICENSE.md diff --git a/src/SkipperUrlProvider.cs b/src/SkipperUrlProvider.cs index 67225f9..261259b 100644 --- a/src/SkipperUrlProvider.cs +++ b/src/SkipperUrlProvider.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; @@ -16,24 +15,27 @@ namespace Our.Umbraco.Skipper { public class SkipperUrlProvider : DefaultUrlProvider { - private readonly IConfiguration _configuration; - private readonly IUmbracoContextAccessor _umbracoContextAccessor; private readonly ISkipperConfiguration _skipperConfiguration; + private readonly GlobalSettings _globalSettings; + + private readonly RequestHandlerSettings _requestSettings; + public SkipperUrlProvider( IOptions requestSettings, + IOptions globalSettings, ILogger logger, ISiteDomainMapper siteDomainMapper, IUmbracoContextAccessor umbracoContextAccessor, UriUtility uriUtility, - IConfiguration configuration, ISkipperConfiguration skipperConfiguration) : base(requestSettings, logger, siteDomainMapper, umbracoContextAccessor, uriUtility) { + _requestSettings = requestSettings.Value; + _globalSettings = globalSettings.Value; _umbracoContextAccessor = umbracoContextAccessor; - _configuration = configuration; _skipperConfiguration = skipperConfiguration; } @@ -88,13 +90,12 @@ public override UrlInfo GetUrl(IPublishedContent content, UrlMode mode, string c private UrlInfo BuildUrl(IPublishedContent content, Uri current, UrlMode mode, string culture) { - if (!_umbracoContextAccessor.TryGetUmbracoContext(out IUmbracoContext umbracoContext)) - { - throw new ArgumentNullException("UmbracoContext"); - } + IUmbracoContext umbracoContext = _umbracoContextAccessor.GetRequiredUmbracoContext(); - bool hideTopLevelNode = _configuration.GetValue("Umbraco:CMS:Global:HideTopLevelNodeFromPath", false); - string[] pathIds = content.Path.Split(',').Skip(hideTopLevelNode ? 2 : 1).Reverse().ToArray(); + string[] pathIds = content.Path.Split(',') + .Skip(_globalSettings.HideTopLevelNodeFromPath ? 2 : 1) + .Reverse() + .ToArray(); // Starting from the base Url generated from DefaultUrlProvider UrlInfo url = base.GetUrl(content, mode, culture, current); @@ -140,10 +141,8 @@ private UrlInfo BuildUrl(IPublishedContent content, Uri current, UrlMode mode, s index++; } - bool isTrailingSlashActive = _configuration.GetValue("Umbraco:CMS:RequestHandler:AddTrailingSlash", true); string finalUrl = string.Join("/", parts.Reverse().Where(x => !string.IsNullOrEmpty(x)).ToArray()); - - finalUrl = isTrailingSlashActive + finalUrl = _requestSettings.AddTrailingSlash ? finalUrl.EnsureEndsWith("/").EnsureStartsWith("/") : finalUrl.EnsureStartsWith("/");