diff --git a/src/Umbraco.Core/Configuration/GlobalSettings.cs b/src/Umbraco.Core/Configuration/GlobalSettings.cs index 4b449decff..49cb9c3fbf 100644 --- a/src/Umbraco.Core/Configuration/GlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/GlobalSettings.cs @@ -31,8 +31,8 @@ namespace Umbraco.Core.Configuration private static string _reservedPaths; private static string _reservedUrls; //ensure the built on (non-changeable) reserved paths are there at all times - internal const string StaticReservedPaths = "~/app_plugins/,~/install/,"; - internal const string StaticReservedUrls = "~/config/splashes/booting.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd,"; + internal const string StaticReservedPaths = "~/app_plugins/,~/install/"; + internal const string StaticReservedUrls = "~/config/splashes/noNodes.aspx,~/.well-known"; #endregion /// @@ -82,19 +82,18 @@ namespace Umbraco.Core.Configuration public string ReservedUrls { get - { - if (_reservedUrls == null) - { - var urls = ConfigurationManager.AppSettings.ContainsKey("umbracoReservedUrls") - ? ConfigurationManager.AppSettings["umbracoReservedUrls"] - : string.Empty; + { + if (_reservedUrls != null) return _reservedUrls; - //ensure the built on (non-changeable) reserved paths are there at all times - _reservedUrls = StaticReservedUrls + urls; - } + var urls = ConfigurationManager.AppSettings.ContainsKey("umbracoReservedUrls") + ? ConfigurationManager.AppSettings["umbracoReservedUrls"] + : string.Empty; + + //ensure the built on (non-changeable) reserved paths are there at all times + _reservedUrls = StaticReservedUrls + urls; return _reservedUrls; } - internal set { _reservedUrls = value; } + internal set => _reservedUrls = value; } /// @@ -105,22 +104,20 @@ namespace Umbraco.Core.Configuration { get { - if (_reservedPaths == null) - { - var reservedPaths = StaticReservedPaths; - //always add the umbraco path to the list - if (ConfigurationManager.AppSettings.ContainsKey("umbracoPath") - && !ConfigurationManager.AppSettings["umbracoPath"].IsNullOrWhiteSpace()) - { - reservedPaths += ConfigurationManager.AppSettings["umbracoPath"].EnsureEndsWith(','); - } + if (_reservedPaths != null) return _reservedPaths; - var allPaths = ConfigurationManager.AppSettings.ContainsKey("umbracoReservedPaths") - ? ConfigurationManager.AppSettings["umbracoReservedPaths"] - : string.Empty; + var reservedPaths = StaticReservedPaths; + var umbPath = ConfigurationManager.AppSettings.ContainsKey("umbracoPath") && !ConfigurationManager.AppSettings["umbracoPath"].IsNullOrWhiteSpace() + ? ConfigurationManager.AppSettings["umbracoPath"] + : "~/umbraco"; + //always add the umbraco path to the list + reservedPaths += umbPath.EnsureEndsWith(','); - _reservedPaths = reservedPaths + allPaths; - } + var allPaths = ConfigurationManager.AppSettings.ContainsKey("umbracoReservedPaths") + ? ConfigurationManager.AppSettings["umbracoReservedPaths"] + : string.Empty; + + _reservedPaths = reservedPaths + allPaths; return _reservedPaths; } } @@ -260,26 +257,7 @@ namespace Umbraco.Core.Configuration } } } - - /// - /// Gets a value indicating whether umbraco uses directory urls. - /// - /// true if umbraco uses directory urls; otherwise, false. - public bool UseDirectoryUrls - { - get - { - try - { - return bool.Parse(ConfigurationManager.AppSettings["umbracoUseDirectoryUrls"]); - } - catch - { - return false; - } - } - } - + /// /// Returns the number of days that should take place between version checks. /// diff --git a/src/Umbraco.Core/Configuration/IGlobalSettings.cs b/src/Umbraco.Core/Configuration/IGlobalSettings.cs index 157103be9e..b3c8ded1c0 100644 --- a/src/Umbraco.Core/Configuration/IGlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/IGlobalSettings.cs @@ -34,12 +34,6 @@ namespace Umbraco.Core.Configuration /// int TimeOutInMinutes { get; } - /// - /// Gets a value indicating whether umbraco uses directory urls. - /// - /// true if umbraco uses directory urls; otherwise, false. - bool UseDirectoryUrls { get; } - /// /// Gets the default UI language. /// diff --git a/src/Umbraco.Tests/Misc/UriUtilityTests.cs b/src/Umbraco.Tests/Misc/UriUtilityTests.cs index 3dbd54c3a9..33a4b45249 100644 --- a/src/Umbraco.Tests/Misc/UriUtilityTests.cs +++ b/src/Umbraco.Tests/Misc/UriUtilityTests.cs @@ -60,32 +60,20 @@ namespace Umbraco.Tests.Misc Assert.AreEqual(expectedUri.ToString(), resultUri.ToString()); } - // test directoryUrl false, trailingSlash false - [TestCase("/", "/", false, false)] - [TestCase("/home", "/home.aspx", false, false)] - [TestCase("/home/sub1", "/home/sub1.aspx", false, false)] - - // test directoryUrl false, trailingSlash true - [TestCase("/", "/", false, true)] - [TestCase("/home", "/home.aspx", false, true)] - [TestCase("/home/sub1", "/home/sub1.aspx", false, true)] // test directoryUrl true, trailingSlash false - [TestCase("/", "/", true, false)] - [TestCase("/home", "/home", true, false)] - [TestCase("/home/sub1", "/home/sub1", true, false)] + [TestCase("/", "/", false)] + [TestCase("/home", "/home", false)] + [TestCase("/home/sub1", "/home/sub1", false)] // test directoryUrl true, trailingSlash true - [TestCase("/", "/", true, true)] - [TestCase("/home", "/home/", true, true)] - [TestCase("/home/sub1", "/home/sub1/", true, true)] + [TestCase("/", "/", true)] + [TestCase("/home", "/home/", true)] + [TestCase("/home/sub1", "/home/sub1/", true)] - public void Uri_From_Umbraco(string sourceUrl, string expectedUrl, bool directoryUrls, bool trailingSlash) + public void Uri_From_Umbraco(string sourceUrl, string expectedUrl, bool trailingSlash) { - ConfigurationManager.AppSettings.Set("umbracoUseDirectoryUrls", directoryUrls ? "true" : "false"); - var globalConfig = Mock.Get(SettingsForTests.GenerateMockGlobalSettings()); - globalConfig.Setup(x => x.UseDirectoryUrls).Returns(directoryUrls); var settings = SettingsForTests.GenerateMockUmbracoSettings(); var requestMock = Mock.Get(settings.RequestHandler); diff --git a/src/Umbraco.Tests/Routing/UrlProviderTests.cs b/src/Umbraco.Tests/Routing/UrlProviderTests.cs index 819ea0b01c..f223f2fbea 100644 --- a/src/Umbraco.Tests/Routing/UrlProviderTests.cs +++ b/src/Umbraco.Tests/Routing/UrlProviderTests.cs @@ -42,7 +42,6 @@ namespace Umbraco.Tests.Routing public void Ensure_Cache_Is_Correct() { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -106,7 +105,6 @@ namespace Umbraco.Tests.Routing public void Get_Url_Not_Hiding_Top_Level(int nodeId, string niceUrlMatch) { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -137,7 +135,6 @@ namespace Umbraco.Tests.Routing public void Get_Url_Hiding_Top_Level(int nodeId, string niceUrlMatch) { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(true); var umbracoSettings = Current.Configs.Settings(); @@ -160,7 +157,6 @@ namespace Umbraco.Tests.Routing const string currentUri = "http://example.us/test"; var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -209,7 +205,6 @@ namespace Umbraco.Tests.Routing const string currentUri = "http://example.fr/test"; var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -267,7 +262,6 @@ namespace Umbraco.Tests.Routing const string currentUri = "http://example.us/test"; var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -321,7 +315,6 @@ namespace Umbraco.Tests.Routing public void Get_Url_Relative_Or_Absolute() { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); @@ -348,7 +341,6 @@ namespace Umbraco.Tests.Routing public void Get_Url_Unpublished() { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var umbracoSettings = Current.Configs.Settings(); diff --git a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs index ba646f6d94..dc9a52835b 100644 --- a/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs +++ b/src/Umbraco.Tests/Routing/UrlsProviderWithDomainsTests.cs @@ -180,7 +180,6 @@ namespace Umbraco.Tests.Routing request.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -215,7 +214,6 @@ namespace Umbraco.Tests.Routing request.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -242,7 +240,6 @@ namespace Umbraco.Tests.Routing request.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -275,7 +272,6 @@ namespace Umbraco.Tests.Routing request.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -298,7 +294,6 @@ namespace Umbraco.Tests.Routing request.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -364,7 +359,6 @@ namespace Umbraco.Tests.Routing requestMock.Setup(x => x.UseDomainPrefixes).Returns(false); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("http://domain1.com/test", 1111, umbracoSettings: settings, urlProviders: new[] @@ -395,7 +389,6 @@ namespace Umbraco.Tests.Routing var settings = SettingsForTests.GenerateMockUmbracoSettings(); var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); // ignored w/domains var umbracoContext = GetUmbracoContext("http://domain1.com/en/test", 1111, umbracoSettings: settings, urlProviders: new[] diff --git a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs index e28a6485d6..bb06ff894b 100644 --- a/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs +++ b/src/Umbraco.Tests/Routing/UrlsWithNestedDomains.cs @@ -31,7 +31,6 @@ namespace Umbraco.Tests.Routing public void DoNotPolluteCache() { var globalSettings = Mock.Get(Factory.GetInstance()); //this will modify the IGlobalSettings instance stored in the container - globalSettings.Setup(x => x.UseDirectoryUrls).Returns(true); globalSettings.Setup(x => x.HideTopLevelNodeFromPath).Returns(false); var settings = SettingsForTests.GenerateMockUmbracoSettings(); diff --git a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs index 37be4aea6d..ad6699b6d5 100644 --- a/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs +++ b/src/Umbraco.Tests/TestHelpers/SettingsForTests.cs @@ -18,7 +18,6 @@ namespace Umbraco.Tests.TestHelpers settings.UseHttps == false && settings.HideTopLevelNodeFromPath == false && settings.Path == IOHelper.ResolveUrl("~/umbraco") && - settings.UseDirectoryUrls == true && settings.TimeOutInMinutes == 20 && settings.DefaultUILanguage == "en" && settings.LocalTempStorageLocation == LocalTempStorage.Default && diff --git a/src/Umbraco.Web.UI/config/umbracoSettings.config b/src/Umbraco.Web.UI/config/umbracoSettings.config index 4de0a04735..026bfa17b5 100644 --- a/src/Umbraco.Web.UI/config/umbracoSettings.config +++ b/src/Umbraco.Web.UI/config/umbracoSettings.config @@ -68,9 +68,6 @@ False - - False - text diff --git a/src/Umbraco.Web.UI/web.Template.config b/src/Umbraco.Web.UI/web.Template.config index ab6e9258b9..f781d234fe 100644 --- a/src/Umbraco.Web.UI/web.Template.config +++ b/src/Umbraco.Web.UI/web.Template.config @@ -33,11 +33,10 @@ - - + + - @@ -90,18 +89,6 @@ - - - - - - - - - - - - diff --git a/src/Umbraco.Web/JavaScript/ServerVariablesParser.cs b/src/Umbraco.Web/JavaScript/ServerVariablesParser.cs index 42c8a3bbbd..6824d02d18 100644 --- a/src/Umbraco.Web/JavaScript/ServerVariablesParser.cs +++ b/src/Umbraco.Web/JavaScript/ServerVariablesParser.cs @@ -2,9 +2,17 @@ using System.Collections.Generic; using Newtonsoft.Json.Linq; +namespace Umbraco.Web.UI.JavaScript +{ + //fixme delete this when Models Builder is updated + public sealed class ServerVariablesParser : global::Umbraco.Web.JavaScript.ServerVariablesParser + { + } +} + namespace Umbraco.Web.JavaScript { - public sealed class ServerVariablesParser + public class ServerVariablesParser { /// @@ -19,10 +27,7 @@ namespace Umbraco.Web.JavaScript var vars = Resources.ServerVariables; //Raise event for developers to add custom variables - if (Parsing != null) - { - Parsing(null, items); - } + Parsing?.Invoke(null, items); var json = JObject.FromObject(items); return vars.Replace(Token, json.ToString()); diff --git a/src/Umbraco.Web/UmbracoInjectedModule.cs b/src/Umbraco.Web/UmbracoInjectedModule.cs index 2b6d032f72..6da3f90ed9 100644 --- a/src/Umbraco.Web/UmbracoInjectedModule.cs +++ b/src/Umbraco.Web/UmbracoInjectedModule.cs @@ -217,18 +217,15 @@ namespace Umbraco.Web var lpath = uri.AbsolutePath.ToLowerInvariant(); // handle directory-urls used for asmx - // legacy - what's the point really? - if (/*maybeDoc &&*/ _globalSettings.UseDirectoryUrls) + // TODO: legacy - what's the point really? + var asmxPos = lpath.IndexOf(".asmx/", StringComparison.OrdinalIgnoreCase); + if (asmxPos >= 0) { - var asmxPos = lpath.IndexOf(".asmx/", StringComparison.OrdinalIgnoreCase); - if (asmxPos >= 0) - { - // use uri.AbsolutePath, not path, 'cos path has been lowercased - httpContext.RewritePath(uri.AbsolutePath.Substring(0, asmxPos + 5), // filePath - uri.AbsolutePath.Substring(asmxPos + 5), // pathInfo - uri.Query.TrimStart('?')); - maybeDoc = false; - } + // use uri.AbsolutePath, not path, 'cos path has been lowercased + httpContext.RewritePath(uri.AbsolutePath.Substring(0, asmxPos + 5), // filePath + uri.AbsolutePath.Substring(asmxPos + 5), // pathInfo + uri.Query.TrimStart('?')); + maybeDoc = false; } // a document request should be diff --git a/src/Umbraco.Web/UriUtility.cs b/src/Umbraco.Web/UriUtility.cs index a4de3c412e..04357a3a5a 100644 --- a/src/Umbraco.Web/UriUtility.cs +++ b/src/Umbraco.Web/UriUtility.cs @@ -64,13 +64,8 @@ namespace Umbraco.Web { var path = uri.GetSafeAbsolutePath(); - if (path != "/") - { - if (!globalSettings.UseDirectoryUrls) - path += ".aspx"; - else if (requestConfig.AddTrailingSlash) - path = path.EnsureEndsWith("/"); - } + if (path != "/" && requestConfig.AddTrailingSlash) + path = path.EnsureEndsWith("/"); path = ToAbsolute(path);