From e69ef327a93d8a8398f7110ca41f44d263305a7e Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 19 Feb 2020 13:33:04 +0100 Subject: [PATCH] Moved Editor stuff that was not controllers --- .../Editors/EditorModelEventArgs.cs | 0 .../Editors/EditorValidatorCollection.cs | 0 .../EditorValidatorCollectionBuilder.cs | 0 .../Editors/EditorValidatorOfT.cs | 0 .../Editors/IEditorValidator.cs | 0 .../Editors/UserEditorAuthorizationHelper.cs | 2 +- .../Editors/ContentTypeController.cs | 5 ++-- .../Editors/ContentTypeControllerBase.cs | 23 +++++++++++++-- src/Umbraco.Web/Editors/EditorValidator.cs | 29 ------------------- .../DataTypeValidateAttribute.cs | 0 .../Editors/MediaTypeController.cs | 5 ++-- .../Editors/MemberTypeController.cs | 5 ++-- src/Umbraco.Web/Umbraco.Web.csproj | 18 ++---------- 13 files changed, 33 insertions(+), 54 deletions(-) rename src/{Umbraco.Web => Umbraco.Abstractions}/Editors/EditorModelEventArgs.cs (100%) rename src/{Umbraco.Web => Umbraco.Abstractions}/Editors/EditorValidatorCollection.cs (100%) rename src/{Umbraco.Web => Umbraco.Abstractions}/Editors/EditorValidatorCollectionBuilder.cs (100%) rename src/{Umbraco.Web => Umbraco.Abstractions}/Editors/EditorValidatorOfT.cs (100%) rename src/{Umbraco.Web => Umbraco.Abstractions}/Editors/IEditorValidator.cs (100%) rename src/{Umbraco.Web => Umbraco.Infrastructure}/Editors/UserEditorAuthorizationHelper.cs (99%) delete mode 100644 src/Umbraco.Web/Editors/EditorValidator.cs rename src/Umbraco.Web/Editors/{ => Filters}/DataTypeValidateAttribute.cs (100%) diff --git a/src/Umbraco.Web/Editors/EditorModelEventArgs.cs b/src/Umbraco.Abstractions/Editors/EditorModelEventArgs.cs similarity index 100% rename from src/Umbraco.Web/Editors/EditorModelEventArgs.cs rename to src/Umbraco.Abstractions/Editors/EditorModelEventArgs.cs diff --git a/src/Umbraco.Web/Editors/EditorValidatorCollection.cs b/src/Umbraco.Abstractions/Editors/EditorValidatorCollection.cs similarity index 100% rename from src/Umbraco.Web/Editors/EditorValidatorCollection.cs rename to src/Umbraco.Abstractions/Editors/EditorValidatorCollection.cs diff --git a/src/Umbraco.Web/Editors/EditorValidatorCollectionBuilder.cs b/src/Umbraco.Abstractions/Editors/EditorValidatorCollectionBuilder.cs similarity index 100% rename from src/Umbraco.Web/Editors/EditorValidatorCollectionBuilder.cs rename to src/Umbraco.Abstractions/Editors/EditorValidatorCollectionBuilder.cs diff --git a/src/Umbraco.Web/Editors/EditorValidatorOfT.cs b/src/Umbraco.Abstractions/Editors/EditorValidatorOfT.cs similarity index 100% rename from src/Umbraco.Web/Editors/EditorValidatorOfT.cs rename to src/Umbraco.Abstractions/Editors/EditorValidatorOfT.cs diff --git a/src/Umbraco.Web/Editors/IEditorValidator.cs b/src/Umbraco.Abstractions/Editors/IEditorValidator.cs similarity index 100% rename from src/Umbraco.Web/Editors/IEditorValidator.cs rename to src/Umbraco.Abstractions/Editors/IEditorValidator.cs diff --git a/src/Umbraco.Web/Editors/UserEditorAuthorizationHelper.cs b/src/Umbraco.Infrastructure/Editors/UserEditorAuthorizationHelper.cs similarity index 99% rename from src/Umbraco.Web/Editors/UserEditorAuthorizationHelper.cs rename to src/Umbraco.Infrastructure/Editors/UserEditorAuthorizationHelper.cs index 320580aaf9..63b5cc90dc 100644 --- a/src/Umbraco.Web/Editors/UserEditorAuthorizationHelper.cs +++ b/src/Umbraco.Infrastructure/Editors/UserEditorAuthorizationHelper.cs @@ -8,7 +8,7 @@ using Umbraco.Core.Services; namespace Umbraco.Web.Editors { - internal class UserEditorAuthorizationHelper + public class UserEditorAuthorizationHelper { private readonly IContentService _contentService; private readonly IMediaService _mediaService; diff --git a/src/Umbraco.Web/Editors/ContentTypeController.cs b/src/Umbraco.Web/Editors/ContentTypeController.cs index 8cbe51054a..fc7189cf6f 100644 --- a/src/Umbraco.Web/Editors/ContentTypeController.cs +++ b/src/Umbraco.Web/Editors/ContentTypeController.cs @@ -68,8 +68,9 @@ namespace Umbraco.Web.Editors IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper, IIOHelper ioHelper, - IPublishedUrlProvider publishedUrlProvider) - : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider) + IPublishedUrlProvider publishedUrlProvider, + EditorValidatorCollection editorValidatorCollection) + : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider, editorValidatorCollection) { _serializer = serializer; _globalSettings = globalSettings; diff --git a/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs b/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs index 4abd7d8c02..bca8c28f64 100644 --- a/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs +++ b/src/Umbraco.Web/Editors/ContentTypeControllerBase.cs @@ -5,6 +5,7 @@ using System.Net; using System.Net.Http; using System.Text; using System.Web.Http; +using System.Web.Http.ModelBinding; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Configuration; @@ -31,6 +32,8 @@ namespace Umbraco.Web.Editors public abstract class ContentTypeControllerBase : UmbracoAuthorizedJsonController where TContentType : class, IContentTypeComposition { + private readonly EditorValidatorCollection _editorValidatorCollection; + protected ContentTypeControllerBase( ICultureDictionary cultureDictionary, IGlobalSettings globalSettings, @@ -43,9 +46,11 @@ namespace Umbraco.Web.Editors UmbracoHelper umbracoHelper, IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper, - IPublishedUrlProvider publishedUrlProvider) + IPublishedUrlProvider publishedUrlProvider, + EditorValidatorCollection editorValidatorCollection) : base(globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider) { + _editorValidatorCollection = editorValidatorCollection; CultureDictionary = cultureDictionary; } @@ -272,7 +277,7 @@ namespace Umbraco.Web.Editors } // execute the external validators - EditorValidator.Validate(ModelState, contentTypeSave); + ValidateExternalValidators(ModelState, contentTypeSave); if (ModelState.IsValid == false) { @@ -364,6 +369,20 @@ namespace Umbraco.Web.Editors } } + private void ValidateExternalValidators(ModelStateDictionary modelState, object model) + { + var modelType = model.GetType(); + + var validationResults = _editorValidatorCollection + .Where(x => x.ModelType == modelType) + .SelectMany(x => x.Validate(model)) + .Where(x => !string.IsNullOrWhiteSpace(x.ErrorMessage) && x.MemberNames.Any()); + + foreach (var r in validationResults) + foreach (var m in r.MemberNames) + modelState.AddModelError(m, r.ErrorMessage); + } + /// /// Move /// diff --git a/src/Umbraco.Web/Editors/EditorValidator.cs b/src/Umbraco.Web/Editors/EditorValidator.cs deleted file mode 100644 index af355206a5..0000000000 --- a/src/Umbraco.Web/Editors/EditorValidator.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Linq; -using System.Web.Http.ModelBinding; -using Umbraco.Web.Composing; - -namespace Umbraco.Web.Editors -{ - /// - /// Provides a method to validate an object using validation. - /// - internal static class EditorValidator - { - /// - /// Validates an object. - /// - public static void Validate(ModelStateDictionary modelState, object model) - { - var modelType = model.GetType(); - - var validationResults = Current.EditorValidators // TODO: inject - .Where(x => x.ModelType == modelType) - .SelectMany(x => x.Validate(model)) - .Where(x => !string.IsNullOrWhiteSpace(x.ErrorMessage) && x.MemberNames.Any()); - - foreach (var r in validationResults) - foreach (var m in r.MemberNames) - modelState.AddModelError(m, r.ErrorMessage); - } - } -} diff --git a/src/Umbraco.Web/Editors/DataTypeValidateAttribute.cs b/src/Umbraco.Web/Editors/Filters/DataTypeValidateAttribute.cs similarity index 100% rename from src/Umbraco.Web/Editors/DataTypeValidateAttribute.cs rename to src/Umbraco.Web/Editors/Filters/DataTypeValidateAttribute.cs diff --git a/src/Umbraco.Web/Editors/MediaTypeController.cs b/src/Umbraco.Web/Editors/MediaTypeController.cs index 7aa2c028a2..f4c8f89e28 100644 --- a/src/Umbraco.Web/Editors/MediaTypeController.cs +++ b/src/Umbraco.Web/Editors/MediaTypeController.cs @@ -55,8 +55,9 @@ namespace Umbraco.Web.Editors IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper, IEntityService entityService, - IPublishedUrlProvider publishedUrlProvider) - : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider) + IPublishedUrlProvider publishedUrlProvider, + EditorValidatorCollection editorValidatorCollection) + : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider, editorValidatorCollection) { _shortStringHelper = shortStringHelper; _entityService = entityService ?? throw new ArgumentNullException(nameof(entityService)); diff --git a/src/Umbraco.Web/Editors/MemberTypeController.cs b/src/Umbraco.Web/Editors/MemberTypeController.cs index 9176de3e37..fd071d5e5c 100644 --- a/src/Umbraco.Web/Editors/MemberTypeController.cs +++ b/src/Umbraco.Web/Editors/MemberTypeController.cs @@ -42,8 +42,9 @@ namespace Umbraco.Web.Editors UmbracoHelper umbracoHelper, IShortStringHelper shortStringHelper, UmbracoMapper umbracoMapper, - IPublishedUrlProvider publishedUrlProvider) - : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider) + IPublishedUrlProvider publishedUrlProvider, + EditorValidatorCollection editorValidatorCollection) + : base(cultureDictionary, globalSettings, umbracoContextAccessor, sqlContext, services, appCaches, logger, runtimeState, umbracoHelper, shortStringHelper, umbracoMapper, publishedUrlProvider, editorValidatorCollection) { } diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 065dd1da96..aa32de01bc 100755 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -141,7 +141,9 @@ + + @@ -149,8 +151,6 @@ - - @@ -195,11 +195,6 @@ - - - - - @@ -258,10 +253,6 @@ - - - - @@ -273,7 +264,6 @@ - @@ -288,14 +278,11 @@ - - - @@ -375,7 +362,6 @@ -