diff --git a/src/Umbraco.Configuration/ActiveDirectorySettings.cs b/src/Umbraco.Configuration/ActiveDirectorySettings.cs new file mode 100644 index 0000000000..d85def7f33 --- /dev/null +++ b/src/Umbraco.Configuration/ActiveDirectorySettings.cs @@ -0,0 +1,15 @@ +using System.Configuration; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public class ActiveDirectorySettings : IActiveDirectorySettings + { + public ActiveDirectorySettings() + { + ActiveDirectoryDomain = ConfigurationManager.AppSettings["ActiveDirectoryDomain"]; + } + + public string ActiveDirectoryDomain { get; } + } +} diff --git a/src/Umbraco.Configuration/ConfigsFactory.cs b/src/Umbraco.Configuration/ConfigsFactory.cs index 3979720f9b..3742b7d7fa 100644 --- a/src/Umbraco.Configuration/ConfigsFactory.cs +++ b/src/Umbraco.Configuration/ConfigsFactory.cs @@ -12,6 +12,12 @@ namespace Umbraco.Core.Configuration public ICoreDebug CoreDebug { get; } = new CoreDebug(); public IMachineKeyConfig MachineKeyConfig { get; } = new MachineKeyConfig(); + public IIndexCreatorSettings IndexCreatorSettings { get; } = new IndexCreatorSettings(); + public INuCacheSettings NuCacheSettings { get; } = new NuCacheSettings(); + public ITypeFinderSettings TypeFinderSettings { get; } = new TypeFinderSettings(); + public IRuntimeSettings RuntimeSettings { get; } = new RuntimeSettings(); + public IActiveDirectorySettings ActiveDirectorySettings { get; } = new ActiveDirectorySettings(); + public IExceptionFilterSettings ExceptionFilterSettings { get; } = new ExceptionFilterSettings(); public IUmbracoSettingsSection UmbracoSettings { get; } @@ -31,6 +37,16 @@ namespace Umbraco.Core.Configuration configs.Add(() => CoreDebug); configs.Add(() => MachineKeyConfig); configs.Add(() => new ConnectionStrings(ioHelper)); + configs.Add(() => new ModelsBuilderConfig(ioHelper)); + + + configs.Add(() => IndexCreatorSettings); + configs.Add(() => NuCacheSettings); + configs.Add(() => TypeFinderSettings); + configs.Add(() => RuntimeSettings); + configs.Add(() => ActiveDirectorySettings); + configs.Add(() => ExceptionFilterSettings); + configs.AddCoreConfigs(ioHelper); return configs; } diff --git a/src/Umbraco.Configuration/ExceptionFilterSettings.cs b/src/Umbraco.Configuration/ExceptionFilterSettings.cs new file mode 100644 index 0000000000..628b8755cc --- /dev/null +++ b/src/Umbraco.Configuration/ExceptionFilterSettings.cs @@ -0,0 +1,18 @@ +using System.Configuration; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public class ExceptionFilterSettings : IExceptionFilterSettings + { + public ExceptionFilterSettings() + { + if (bool.TryParse(ConfigurationManager.AppSettings["Umbraco.Web.DisableModelBindingExceptionFilter"], + out var disabled)) + { + Disabled = disabled; + } + } + public bool Disabled { get; } + } +} diff --git a/src/Umbraco.Configuration/GlobalSettings.cs b/src/Umbraco.Configuration/GlobalSettings.cs index a44f7ae636..56e64fff31 100644 --- a/src/Umbraco.Configuration/GlobalSettings.cs +++ b/src/Umbraco.Configuration/GlobalSettings.cs @@ -382,6 +382,10 @@ namespace Umbraco.Core.Configuration private string _databaseFactoryServerVersion; public string DatabaseFactoryServerVersion => GetterWithDefaultValue(Constants.AppSettings.Debug.DatabaseFactoryServerVersion, string.Empty, ref _databaseFactoryServerVersion); + private string _mainDomLock; + + public string MainDomLock => GetterWithDefaultValue(Constants.AppSettings.MainDomLock, string.Empty, ref _mainDomLock); + private T GetterWithDefaultValue(string appSettingKey, T defaultValue, ref T backingField) { if (backingField != null) return backingField; diff --git a/src/Umbraco.Configuration/IndexCreatorSettings.cs b/src/Umbraco.Configuration/IndexCreatorSettings.cs new file mode 100644 index 0000000000..00d1a29dba --- /dev/null +++ b/src/Umbraco.Configuration/IndexCreatorSettings.cs @@ -0,0 +1,15 @@ +using System.Configuration; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public class IndexCreatorSettings : IIndexCreatorSettings + { + public IndexCreatorSettings() + { + LuceneDirectoryFactory = ConfigurationManager.AppSettings["Umbraco.Examine.LuceneDirectoryFactory"]; + } + + public string LuceneDirectoryFactory { get; } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs b/src/Umbraco.Configuration/ModelsBuilderConfig.cs similarity index 94% rename from src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs rename to src/Umbraco.Configuration/ModelsBuilderConfig.cs index d0137ed2b2..151e9908a1 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsBuilderConfig.cs +++ b/src/Umbraco.Configuration/ModelsBuilderConfig.cs @@ -2,11 +2,11 @@ using System.Configuration; using System.IO; using System.Threading; -using System.Web.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.IO; -namespace Umbraco.ModelsBuilder.Embedded.Configuration +namespace Umbraco.Configuration { /// /// Represents the models builder configuration. @@ -21,7 +21,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration private object _flagOutOfDateModelsLock; private bool _flagOutOfDateModelsConfigured; private bool _flagOutOfDateModels; - public const string DefaultModelsNamespace = "Umbraco.Web.PublishedModels"; + public string DefaultModelsDirectory => _ioHelper.MapPath("~/App_Data/Models"); @@ -37,7 +37,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration Enable = ConfigurationManager.AppSettings[Prefix + "Enable"] == "true"; // ensure defaults are initialized for tests - ModelsNamespace = DefaultModelsNamespace; + ModelsNamespace = Constants.ModelsBuilder.DefaultModelsNamespace; ModelsDirectory = DefaultModelsDirectory; DebugLevel = 0; @@ -95,7 +95,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration Enable = enable; _modelsMode = modelsMode; - ModelsNamespace = string.IsNullOrWhiteSpace(modelsNamespace) ? DefaultModelsNamespace : modelsNamespace; + ModelsNamespace = string.IsNullOrWhiteSpace(modelsNamespace) ? Constants.ModelsBuilder.DefaultModelsNamespace : modelsNamespace; EnableFactory = enableFactory; _flagOutOfDateModels = flagOutOfDateModels; ModelsDirectory = string.IsNullOrWhiteSpace(modelsDirectory) ? DefaultModelsDirectory : modelsDirectory; @@ -174,8 +174,13 @@ namespace Umbraco.ModelsBuilder.Embedded.Configuration { get { - var section = (CompilationSection)ConfigurationManager.GetSection("system.web/compilation"); - return section != null && section.Debug; + if (ConfigurationManager.GetSection("system.web/compilation") is ConfigurationSection section && + bool.TryParse(section.ElementInformation.Properties["debug"].Value.ToString(), out var isDebug)) + { + return isDebug; + } + + return false; } } diff --git a/src/Umbraco.Configuration/NuCacheSettings.cs b/src/Umbraco.Configuration/NuCacheSettings.cs new file mode 100644 index 0000000000..c3a286d33d --- /dev/null +++ b/src/Umbraco.Configuration/NuCacheSettings.cs @@ -0,0 +1,14 @@ +using System.Configuration; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public class NuCacheSettings : INuCacheSettings + { + public NuCacheSettings() + { + BTreeBlockSize = ConfigurationManager.AppSettings["Umbraco.Web.PublishedCache.NuCache.BTree.BlockSize"]; + } + public string BTreeBlockSize { get; } + } +} diff --git a/src/Umbraco.Configuration/RuntimeSettings.cs b/src/Umbraco.Configuration/RuntimeSettings.cs new file mode 100644 index 0000000000..6dc8d6f832 --- /dev/null +++ b/src/Umbraco.Configuration/RuntimeSettings.cs @@ -0,0 +1,29 @@ +using System.Configuration; +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration +{ + public class RuntimeSettings : IRuntimeSettings + { + public RuntimeSettings() + { + if (ConfigurationManager.GetSection("system.web/httpRuntime") is ConfigurationSection section) + { + var maxRequestLengthProperty = section.ElementInformation.Properties["maxRequestLength"]; + if (maxRequestLengthProperty != null && maxRequestLengthProperty.Value is int requestLength) + { + MaxRequestLength = requestLength; + } + + var maxQueryStringProperty = section.ElementInformation.Properties["maxQueryStringLength"]; + if (maxQueryStringProperty != null && maxQueryStringProperty.Value is int maxQueryStringLength) + { + MaxQueryStringLength = maxQueryStringLength; + } + } + } + public int? MaxQueryStringLength { get; } + public int? MaxRequestLength { get; } + + } +} diff --git a/src/Umbraco.Configuration/TypeFinderSettings.cs b/src/Umbraco.Configuration/TypeFinderSettings.cs new file mode 100644 index 0000000000..bb3063d7bf --- /dev/null +++ b/src/Umbraco.Configuration/TypeFinderSettings.cs @@ -0,0 +1,17 @@ +using System.Configuration; +using Umbraco.Core.Configuration; +using Umbraco.Core; + +namespace Umbraco.Configuration +{ + public class TypeFinderSettings : ITypeFinderSettings + { + public TypeFinderSettings() + { + AssembliesAcceptingLoadExceptions = ConfigurationManager.AppSettings[ + Constants.AppSettings.AssembliesAcceptingLoadExceptions]; + } + + public string AssembliesAcceptingLoadExceptions { get; } + } +} diff --git a/src/Umbraco.Core/Configuration/IActiveDirectorySettings.cs b/src/Umbraco.Core/Configuration/IActiveDirectorySettings.cs new file mode 100644 index 0000000000..e6b9202c06 --- /dev/null +++ b/src/Umbraco.Core/Configuration/IActiveDirectorySettings.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Core.Configuration +{ + public interface IActiveDirectorySettings + { + string ActiveDirectoryDomain { get; } + } +} diff --git a/src/Umbraco.Core/Configuration/IExceptionFilterSettings.cs b/src/Umbraco.Core/Configuration/IExceptionFilterSettings.cs new file mode 100644 index 0000000000..169c04da5f --- /dev/null +++ b/src/Umbraco.Core/Configuration/IExceptionFilterSettings.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Core.Configuration +{ + public interface IExceptionFilterSettings + { + bool Disabled { get; } + } +} diff --git a/src/Umbraco.Core/Configuration/IGlobalSettings.cs b/src/Umbraco.Core/Configuration/IGlobalSettings.cs index 1b1f328142..ffc52130cc 100644 --- a/src/Umbraco.Core/Configuration/IGlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/IGlobalSettings.cs @@ -95,5 +95,6 @@ bool DisableElectionForSingleServer { get; } string RegisterType { get; } string DatabaseFactoryServerVersion { get; } + string MainDomLock { get; } } } diff --git a/src/Umbraco.Core/Configuration/IIndexCreatorSettings.cs b/src/Umbraco.Core/Configuration/IIndexCreatorSettings.cs new file mode 100644 index 0000000000..b3e2854a0d --- /dev/null +++ b/src/Umbraco.Core/Configuration/IIndexCreatorSettings.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Core.Configuration +{ + public interface IIndexCreatorSettings + { + string LuceneDirectoryFactory { get; } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs b/src/Umbraco.Core/Configuration/IModelsBuilderConfig.cs similarity index 87% rename from src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs rename to src/Umbraco.Core/Configuration/IModelsBuilderConfig.cs index 7e96aec60e..6a071ac277 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/IModelsBuilderConfig.cs +++ b/src/Umbraco.Core/Configuration/IModelsBuilderConfig.cs @@ -1,4 +1,4 @@ -namespace Umbraco.ModelsBuilder.Embedded.Configuration +namespace Umbraco.Core.Configuration { public interface IModelsBuilderConfig { diff --git a/src/Umbraco.Core/Configuration/INuCacheSettings.cs b/src/Umbraco.Core/Configuration/INuCacheSettings.cs new file mode 100644 index 0000000000..c6524297a6 --- /dev/null +++ b/src/Umbraco.Core/Configuration/INuCacheSettings.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Core.Configuration +{ + public interface INuCacheSettings + { + string BTreeBlockSize { get; } + } +} diff --git a/src/Umbraco.Core/Configuration/IRuntimeSettings.cs b/src/Umbraco.Core/Configuration/IRuntimeSettings.cs new file mode 100644 index 0000000000..915e774186 --- /dev/null +++ b/src/Umbraco.Core/Configuration/IRuntimeSettings.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Core.Configuration +{ + public interface IRuntimeSettings + { + int? MaxQueryStringLength { get; } + int? MaxRequestLength { get; } + } +} diff --git a/src/Umbraco.Core/Configuration/ITypeFinderSettings.cs b/src/Umbraco.Core/Configuration/ITypeFinderSettings.cs new file mode 100644 index 0000000000..15e72a1f40 --- /dev/null +++ b/src/Umbraco.Core/Configuration/ITypeFinderSettings.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Core.Configuration +{ + public interface ITypeFinderSettings + { + string AssembliesAcceptingLoadExceptions { get; } + } +} diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs b/src/Umbraco.Core/Configuration/ModelsMode.cs similarity index 92% rename from src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs rename to src/Umbraco.Core/Configuration/ModelsMode.cs index e0286fdab1..2483367394 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsMode.cs +++ b/src/Umbraco.Core/Configuration/ModelsMode.cs @@ -1,4 +1,4 @@ -namespace Umbraco.ModelsBuilder.Embedded.Configuration +namespace Umbraco.Core.Configuration { /// /// Defines the models generation modes. @@ -8,7 +8,7 @@ /// /// Do not generate models. /// - Nothing = 0, // default value + Nothing = 0, // default value /// /// Generate models in memory. diff --git a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs b/src/Umbraco.Core/Configuration/ModelsModeExtensions.cs similarity index 94% rename from src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs rename to src/Umbraco.Core/Configuration/ModelsModeExtensions.cs index be638729ea..8d1b51cd28 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Configuration/ModelsModeExtensions.cs +++ b/src/Umbraco.Core/Configuration/ModelsModeExtensions.cs @@ -1,4 +1,6 @@ -namespace Umbraco.ModelsBuilder.Embedded.Configuration +using Umbraco.Core.Configuration; + +namespace Umbraco.Configuration { /// /// Provides extensions for the enumeration. diff --git a/src/Umbraco.Core/Configuration/UmbracoSettings/ITypeFinderConfig.cs b/src/Umbraco.Core/Configuration/UmbracoSettings/ITypeFinderConfig.cs index fd5b18ed39..a290c26d15 100644 --- a/src/Umbraco.Core/Configuration/UmbracoSettings/ITypeFinderConfig.cs +++ b/src/Umbraco.Core/Configuration/UmbracoSettings/ITypeFinderConfig.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; namespace Umbraco.Core.Configuration.UmbracoSettings { diff --git a/src/Umbraco.Core/Constants-ModelsBuilder.cs b/src/Umbraco.Core/Constants-ModelsBuilder.cs new file mode 100644 index 0000000000..28e70ed383 --- /dev/null +++ b/src/Umbraco.Core/Constants-ModelsBuilder.cs @@ -0,0 +1,17 @@ +namespace Umbraco.Core +{ + /// + /// Defines constants. + /// + public static partial class Constants + { + /// + /// Defines constants for ModelsBuilder. + /// + public static class ModelsBuilder + { + + public const string DefaultModelsNamespace = "Umbraco.Web.PublishedModels"; + } + } +} diff --git a/src/Umbraco.Core/Constants-Web.cs b/src/Umbraco.Core/Constants-Web.cs index a1e138116d..5b64319fb0 100644 --- a/src/Umbraco.Core/Constants-Web.cs +++ b/src/Umbraco.Core/Constants-Web.cs @@ -34,6 +34,7 @@ /// The header name that angular uses to pass in the token to validate the cookie /// public const string AngularHeadername = "X-UMB-XSRF-TOKEN"; + } } } diff --git a/src/Umbraco.Examine.Lucene/LuceneIndexCreator.cs b/src/Umbraco.Examine.Lucene/LuceneIndexCreator.cs index ccc0248868..b1d529e6c6 100644 --- a/src/Umbraco.Examine.Lucene/LuceneIndexCreator.cs +++ b/src/Umbraco.Examine.Lucene/LuceneIndexCreator.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; -using System.Configuration; using System.IO; using Examine; using Examine.LuceneEngine.Directories; using Lucene.Net.Store; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.IO; @@ -19,11 +19,13 @@ namespace Umbraco.Examine { private readonly ITypeFinder _typeFinder; private readonly IIOHelper _ioHelper; + private readonly IIndexCreatorSettings _settings; - protected LuceneIndexCreator(ITypeFinder typeFinder, IIOHelper ioHelper) + protected LuceneIndexCreator(ITypeFinder typeFinder, IIOHelper ioHelper, IIndexCreatorSettings settings) { _typeFinder = typeFinder; _ioHelper = ioHelper; + _settings = settings; } public abstract IEnumerable Create(); @@ -43,7 +45,8 @@ namespace Umbraco.Examine System.IO.Directory.CreateDirectory(dirInfo.FullName); //check if there's a configured directory factory, if so create it and use that to create the lucene dir - var configuredDirectoryFactory = ConfigurationManager.AppSettings["Umbraco.Examine.LuceneDirectoryFactory"]; + var configuredDirectoryFactory = _settings.LuceneDirectoryFactory; + if (!configuredDirectoryFactory.IsNullOrWhiteSpace()) { //this should be a fully qualified type diff --git a/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs b/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs index 173300a472..0f60a7580c 100644 --- a/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs +++ b/src/Umbraco.Examine.Lucene/UmbracoIndexesCreator.cs @@ -4,6 +4,7 @@ using Umbraco.Core.Services; using Lucene.Net.Analysis.Standard; using Examine.LuceneEngine; using Examine; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Composing; using Umbraco.Core.IO; @@ -25,7 +26,8 @@ namespace Umbraco.Examine IMemberService memberService, IUmbracoIndexConfig umbracoIndexConfig, IIOHelper ioHelper, - IRuntimeState runtimeState) : base(typeFinder, ioHelper) + IRuntimeState runtimeState, + IIndexCreatorSettings settings) : base(typeFinder, ioHelper, settings) { ProfilingLogger = profilingLogger ?? throw new System.ArgumentNullException(nameof(profilingLogger)); LanguageService = languageService ?? throw new System.ArgumentNullException(nameof(languageService)); diff --git a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Configuration.cs b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Configuration.cs index 7169b93cb4..5c931a225b 100644 --- a/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Configuration.cs +++ b/src/Umbraco.Infrastructure/Composing/CompositionExtensions/Configuration.cs @@ -1,4 +1,6 @@ -using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.Configuration; +using Umbraco.Configuration; +using Umbraco.Core.Configuration.UmbracoSettings; namespace Umbraco.Core.Composing.CompositionExtensions { diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs index 1fdb64c62a..75affe09e7 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidator.cs @@ -1,4 +1,4 @@ -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.ModelsBuilder.Embedded.BackOffice diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs index 15ca2cca24..1e96e64df8 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ContentTypeModelValidatorBase.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Models.PublishedContent; -using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Editors; using Umbraco.Web.Models.ContentEditing; diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs index 25ddc838e8..6e22313474 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/DashboardReport.cs @@ -1,5 +1,6 @@ using System.Text; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Configuration; +using Umbraco.Core.Configuration; namespace Umbraco.ModelsBuilder.Embedded.BackOffice { diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs index 9dc1ea6c20..fcd42908e7 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MediaTypeModelValidator.cs @@ -1,4 +1,4 @@ -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.ModelsBuilder.Embedded.BackOffice diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs index 8d0a98eeab..2e249eed4d 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/MemberTypeModelValidator.cs @@ -1,4 +1,4 @@ -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Web.Models.ContentEditing; namespace Umbraco.ModelsBuilder.Embedded.BackOffice diff --git a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs index 1d9de265e9..17b694de56 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/BackOffice/ModelsBuilderDashboardController.cs @@ -3,9 +3,10 @@ using System.Net; using System.Net.Http; using System.Runtime.Serialization; using System.Web.Hosting; +using Umbraco.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Core.Exceptions; using Umbraco.ModelsBuilder.Embedded.Building; -using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Editors; using Umbraco.Web.WebApi.Filters; diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs index ffd56d4312..f64e5ed1ce 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/Builder.cs @@ -1,7 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core; +using Umbraco.Core.Configuration; namespace Umbraco.ModelsBuilder.Embedded.Building { @@ -18,6 +19,8 @@ namespace Umbraco.ModelsBuilder.Embedded.Building internal abstract class Builder { + + private readonly IList _typeModels; protected Dictionary ModelsMap { get; } = new Dictionary(); @@ -209,7 +212,7 @@ namespace Umbraco.ModelsBuilder.Embedded.Building // use configured else fallback to default return string.IsNullOrWhiteSpace(Config.ModelsNamespace) - ? ModelsBuilderConfig.DefaultModelsNamespace + ? Constants.ModelsBuilder.DefaultModelsNamespace : Config.ModelsNamespace; } diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs index 8a3bc5a5b5..192f049930 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/ModelsGenerator.cs @@ -1,6 +1,6 @@ using System.IO; using System.Text; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; namespace Umbraco.ModelsBuilder.Embedded.Building { diff --git a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs index d1190a0374..4c796f3c7b 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Building/TextBuilder.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; namespace Umbraco.ModelsBuilder.Embedded.Building { diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs index d856cae1e7..769cca7317 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComponent.cs @@ -4,13 +4,14 @@ using System.Reflection; using System.Web; using System.Web.Mvc; using System.Web.Routing; +using Umbraco.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Core.Composing; using Umbraco.Core.IO; using Umbraco.Core.Services; using Umbraco.Core.Services.Implement; using Umbraco.Core.Strings; using Umbraco.ModelsBuilder.Embedded.BackOffice; -using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web; using Umbraco.Web.JavaScript; using Umbraco.Web.Mvc; diff --git a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs index bb8a3f7e18..2914fe1b12 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/Compose/ModelsBuilderComposer.cs @@ -1,12 +1,11 @@ using System.Linq; using System.Reflection; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Logging; using Umbraco.Core.Composing; using Umbraco.Core.Models.PublishedContent; using Umbraco.ModelsBuilder.Embedded.Building; -using Umbraco.ModelsBuilder.Embedded.Configuration; -using Umbraco.Web; namespace Umbraco.ModelsBuilder.Embedded.Compose { @@ -20,16 +19,12 @@ namespace Umbraco.ModelsBuilder.Embedded.Compose { var isLegacyModelsBuilderInstalled = IsLegacyModelsBuilderInstalled(); - - composition.Configs.Add(() => new ModelsBuilderConfig(composition.IOHelper)); - if (isLegacyModelsBuilderInstalled) { ComposeForLegacyModelsBuilder(composition); return; } - composition.Components().Append(); composition.Register(Lifetime.Singleton); composition.RegisterUnique(); diff --git a/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs b/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs index d634547a49..d625c754c5 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ConfigsExtensions.cs @@ -1,5 +1,4 @@ using Umbraco.Core.Configuration; -using Umbraco.ModelsBuilder.Embedded.Configuration; namespace Umbraco.ModelsBuilder.Embedded { diff --git a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs index d4b4636563..61d39cd373 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/LiveModelsProvider.cs @@ -1,10 +1,10 @@ using System; using System.Threading; -using System.Web.Hosting; +using Umbraco.Core.Configuration; +using Umbraco.Configuration; using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.ModelsBuilder.Embedded.Building; -using Umbraco.ModelsBuilder.Embedded.Configuration; using Umbraco.Web.Cache; namespace Umbraco.ModelsBuilder.Embedded diff --git a/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs b/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs index a692f633a5..5b498fd5f3 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/ModelsGenerationError.cs @@ -1,7 +1,7 @@ using System; using System.IO; using System.Text; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; namespace Umbraco.ModelsBuilder.Embedded { diff --git a/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs b/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs index 5425c31c77..0e93030438 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/OutOfDateModelsStatus.cs @@ -1,5 +1,5 @@ using System.IO; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Core.Configuration; using Umbraco.Web.Cache; namespace Umbraco.ModelsBuilder.Embedded diff --git a/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs index fe28817cba..bef2fa8414 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs +++ b/src/Umbraco.ModelsBuilder.Embedded/PureLiveModelFactory.cs @@ -11,12 +11,12 @@ using System.Threading; using System.Web; using System.Web.Compilation; using System.Web.WebPages.Razor; +using Umbraco.Core.Configuration; using Umbraco.Core; using Umbraco.Core.Hosting; using Umbraco.Core.Logging; using Umbraco.Core.Models.PublishedContent; using Umbraco.ModelsBuilder.Embedded.Building; -using Umbraco.ModelsBuilder.Embedded.Configuration; using File = System.IO.File; namespace Umbraco.ModelsBuilder.Embedded diff --git a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj index 83667bdbd8..23391c5b0c 100644 --- a/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj +++ b/src/Umbraco.ModelsBuilder.Embedded/Umbraco.ModelsBuilder.Embedded.csproj @@ -59,10 +59,6 @@ - - - - @@ -123,6 +119,5 @@ 5.2.7 - \ No newline at end of file diff --git a/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs b/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs index 910c0ca737..ad7cc72eec 100644 --- a/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs +++ b/src/Umbraco.PublishedCache.NuCache/DataSource/BTree.cs @@ -1,12 +1,13 @@ using System.Configuration; using CSharpTest.Net.Collections; using CSharpTest.Net.Serialization; +using Umbraco.Core.Configuration; namespace Umbraco.Web.PublishedCache.NuCache.DataSource { internal class BTree { - public static BPlusTree GetTree(string filepath, bool exists) + public static BPlusTree GetTree(string filepath, bool exists, INuCacheSettings settings) { var keySerializer = new PrimitiveSerializer(); var valueSerializer = new ContentNodeKitSerializer(); @@ -19,7 +20,7 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource CachePolicy = CachePolicy.None, // default is 4096, min 2^9 = 512, max 2^16 = 64K - FileBlockSize = GetBlockSize(), + FileBlockSize = GetBlockSize(settings), // other options? }; @@ -32,11 +33,11 @@ namespace Umbraco.Web.PublishedCache.NuCache.DataSource return tree; } - private static int GetBlockSize() + private static int GetBlockSize(INuCacheSettings settings) { var blockSize = 4096; - var appSetting = ConfigurationManager.AppSettings["Umbraco.Web.PublishedCache.NuCache.BTree.BlockSize"]; + var appSetting = settings.BTreeBlockSize; if (appSetting == null) return blockSize; diff --git a/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs b/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs index 3ce60aa2b5..74295b7182 100644 --- a/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs +++ b/src/Umbraco.PublishedCache.NuCache/PublishedSnapshotService.cs @@ -53,6 +53,7 @@ namespace Umbraco.Web.PublishedCache.NuCache private readonly IHostingEnvironment _hostingEnvironment; private readonly IShortStringHelper _shortStringHelper; private readonly IIOHelper _ioHelper; + private readonly INuCacheSettings _config; // volatile because we read it with no lock private volatile bool _isReady; @@ -90,7 +91,8 @@ namespace Umbraco.Web.PublishedCache.NuCache ITypeFinder typeFinder, IHostingEnvironment hostingEnvironment, IShortStringHelper shortStringHelper, - IIOHelper ioHelper) + IIOHelper ioHelper, + INuCacheSettings config) : base(publishedSnapshotAccessor, variationContextAccessor) { //if (Interlocked.Increment(ref _singletonCheck) > 1) @@ -111,6 +113,7 @@ namespace Umbraco.Web.PublishedCache.NuCache _hostingEnvironment = hostingEnvironment; _shortStringHelper = shortStringHelper; _ioHelper = ioHelper; + _config = config; // we need an Xml serializer here so that the member cache can support XPath, // for members this is done by navigating the serialized-to-xml member @@ -197,8 +200,8 @@ namespace Umbraco.Web.PublishedCache.NuCache _localMediaDbExists = File.Exists(localMediaDbPath); // if both local databases exist then GetTree will open them, else new databases will be created - _localContentDb = BTree.GetTree(localContentDbPath, _localContentDbExists); - _localMediaDb = BTree.GetTree(localMediaDbPath, _localMediaDbExists); + _localContentDb = BTree.GetTree(localContentDbPath, _localContentDbExists, _config); + _localMediaDb = BTree.GetTree(localMediaDbPath, _localMediaDbExists, _config); _logger.Info("Registered with MainDom, localContentDbExists? {LocalContentDbExists}, localMediaDbExists? {LocalMediaDbExists}", _localContentDbExists, _localMediaDbExists); } diff --git a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs index 56d9d46e7d..b3f644ae43 100644 --- a/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/BuilderTests.cs @@ -4,10 +4,10 @@ using System.Linq; using System.Text; using Moq; using NUnit.Framework; +using Umbraco.Core.Configuration; using Umbraco.Core.Models.PublishedContent; using Umbraco.ModelsBuilder.Embedded; using Umbraco.ModelsBuilder.Embedded.Building; -using Umbraco.ModelsBuilder.Embedded.Configuration; namespace Umbraco.Tests.ModelsBuilder { diff --git a/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs b/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs index ff49bb3f97..4a9e8704ec 100644 --- a/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs +++ b/src/Umbraco.Tests/ModelsBuilder/ConfigTests.cs @@ -1,6 +1,7 @@ using System.Configuration; using NUnit.Framework; -using Umbraco.ModelsBuilder.Embedded.Configuration; +using Umbraco.Configuration; +using Umbraco.Core; using Umbraco.Tests.TestHelpers; namespace Umbraco.Tests.ModelsBuilder @@ -26,7 +27,7 @@ namespace Umbraco.Tests.ModelsBuilder public void DefaultModelsNamespace() { var config = new ModelsBuilderConfig(TestHelper.IOHelper); - Assert.AreEqual(ModelsBuilderConfig.DefaultModelsNamespace, config.ModelsNamespace); + Assert.AreEqual(Constants.ModelsBuilder.DefaultModelsNamespace, config.ModelsNamespace); } [TestCase("c:/path/to/root", "~/dir/models", false, "c:\\path\\to\\root\\dir\\models")] diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs index 1f153a0a5e..de12fcf7aa 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheChildrenTests.cs @@ -144,6 +144,7 @@ namespace Umbraco.Tests.PublishedContent _source = new TestDataSource(kits); var typeFinder = new TypeFinder(Mock.Of()); + var settings = Mock.Of(); // at last, create the complete NuCache snapshot service! @@ -169,7 +170,8 @@ namespace Umbraco.Tests.PublishedContent typeFinder, hostingEnvironment, new MockShortStringHelper(), - TestHelper.IOHelper); + TestHelper.IOHelper, + settings); // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); diff --git a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs index b0f0eb7722..08da25ba9a 100644 --- a/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs +++ b/src/Umbraco.Tests/PublishedContent/NuCacheTests.cs @@ -185,6 +185,7 @@ namespace Umbraco.Tests.PublishedContent _variationAccesor = new TestVariationContextAccessor(); var typeFinder = new TypeFinder(Mock.Of()); + var settings = Mock.Of(); // at last, create the complete NuCache snapshot service! var options = new PublishedSnapshotServiceOptions { IgnoreLocalDb = true }; @@ -209,7 +210,8 @@ namespace Umbraco.Tests.PublishedContent typeFinder, TestHelper.GetHostingEnvironment(), new MockShortStringHelper(), - TestHelper.IOHelper); + TestHelper.IOHelper, + settings); // invariant is the current default _variationAccesor.VariationContext = new VariationContext(); diff --git a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs index 80147256ad..505a66e322 100644 --- a/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs +++ b/src/Umbraco.Tests/Routing/RenderRouteHandlerTests.cs @@ -2,10 +2,8 @@ using System.Linq; using System.Web.Mvc; using System.Web.Routing; -using System.Web.Security; using Moq; using NUnit.Framework; -using NUnit.Framework.Internal; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; @@ -17,22 +15,17 @@ using Umbraco.Web.Models; using Umbraco.Web.Mvc; using Umbraco.Web.WebApi; using Umbraco.Core.Strings; -using Umbraco.Core.Composing; using Umbraco.Core.Configuration; using Umbraco.Core.Dictionary; using Umbraco.Core.Hosting; using Umbraco.Core.IO; using Umbraco.Core.Models.PublishedContent; -using Umbraco.Core.Persistence; using Umbraco.Core.Services; using Umbraco.Tests.PublishedContent; using Umbraco.Tests.Testing; using Umbraco.Tests.Testing.Objects.Accessors; -using Umbraco.Web.PublishedCache; using Umbraco.Web.Runtime; -using Umbraco.Web.Security; using Current = Umbraco.Web.Composing.Current; -using Umbraco.Web.Security.Providers; using ILogger = Umbraco.Core.Logging.ILogger; namespace Umbraco.Tests.Routing @@ -141,7 +134,7 @@ namespace Umbraco.Tests.Routing var url = "~/dummy-page"; var template = CreateTemplate(templateName); var route = RouteTable.Routes["Umbraco_default"]; - var routeData = new RouteData() {Route = route}; + var routeData = new RouteData() { Route = route }; var umbracoContext = GetUmbracoContext("~/dummy-page", template.Id, routeData, true); var httpContext = GetHttpContextFactory(url, routeData).HttpContext; var publishedRouter = CreatePublishedRouter(); @@ -155,6 +148,7 @@ namespace Umbraco.Tests.Routing var handler = new RenderRouteHandler(umbracoContext, new TestControllerFactory(umbracoContextAccessor, Mock.Of(), context => { + return new CustomDocumentController(Factory.GetInstance(), umbracoContextAccessor, Factory.GetInstance(), diff --git a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs index 9cf6b3d773..783beafb2e 100644 --- a/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs +++ b/src/Umbraco.Tests/Scoping/ScopedNuCacheTests.cs @@ -86,6 +86,7 @@ namespace Umbraco.Tests.Scoping var hostingEnvironment = TestHelper.GetHostingEnvironment(); var typeFinder = new TypeFinder(Mock.Of()); + var settings = Mock.Of(); return new PublishedSnapshotService( options, @@ -107,7 +108,8 @@ namespace Umbraco.Tests.Scoping typeFinder, hostingEnvironment, new MockShortStringHelper(), - IOHelper); + IOHelper, + settings); } protected IUmbracoContext GetUmbracoContextNu(string url, int templateId = 1234, RouteData routeData = null, bool setSingleton = false, IUmbracoSettingsSection umbracoSettings = null, IEnumerable urlProviders = null) diff --git a/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs b/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs index 1a485ec546..1b6b632a10 100644 --- a/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs +++ b/src/Umbraco.Tests/Services/ContentTypeServiceVariantsTests.cs @@ -59,6 +59,7 @@ namespace Umbraco.Tests.Services var hostingEnvironment = Mock.Of(); var typeFinder = new TypeFinder(Mock.Of()); + var settings = Mock.Of(); return new PublishedSnapshotService( options, @@ -80,7 +81,8 @@ namespace Umbraco.Tests.Services typeFinder, hostingEnvironment, new MockShortStringHelper(), - IOHelper); + IOHelper, + settings); } public class LocalServerMessenger : ServerMessengerBase diff --git a/src/Umbraco.Web.UI/Umbraco/Views/AuthorizeUpgrade.cshtml b/src/Umbraco.Web.UI/Umbraco/Views/AuthorizeUpgrade.cshtml index 11033aa785..e41185d74b 100644 --- a/src/Umbraco.Web.UI/Umbraco/Views/AuthorizeUpgrade.cshtml +++ b/src/Umbraco.Web.UI/Umbraco/Views/AuthorizeUpgrade.cshtml @@ -48,7 +48,7 @@ redirectUrl = Url.Action("AuthorizeUpgrade", "BackOffice") }); } - @Html.BareMinimumServerVariablesScript(Url, externalLoginUrl, Model.Features, Model.GlobalSettings, Model.UmbracoVersion, Model.UmbracoSettingsSection, Model.IOHelper, Model.TreeCollection, Model.HttpContextAccessor, Model.HostingEnvironment) + @Html.BareMinimumServerVariablesScript(Url, externalLoginUrl, Model.Features, Model.GlobalSettings, Model.UmbracoVersion, Model.UmbracoSettingsSection, Model.IOHelper, Model.TreeCollection, Model.HttpContextAccessor, Model.HostingEnvironment, Model.RuntimeSettings)