Forward port of #19045 (Added custom RichTextRegexValidator to validate markup instead of JSON) (#19280)

This commit is contained in:
Sven Geusens
2025-05-09 11:17:00 +02:00
committed by GitHub
parent f772c26e6e
commit 49715d6f36
4 changed files with 40 additions and 0 deletions

View File

@@ -248,6 +248,8 @@ public static partial class UmbracoBuilderExtensions
builder.Services.AddSingleton<IRichTextRequiredValidator, RichTextRequiredValidator>();
builder.Services.AddSingleton<IRichTextRegexValidator, RichTextRegexValidator>();
return builder;
}

View File

@@ -93,6 +93,7 @@ public class RichTextPropertyEditor : DataEditor
private readonly RichTextEditorPastedImages _pastedImages;
private readonly IJsonSerializer _jsonSerializer;
private readonly IRichTextRequiredValidator _richTextRequiredValidator;
private readonly IRichTextRegexValidator _richTextRegexValidator;
private readonly ILogger<RichTextPropertyValueEditor> _logger;
public RichTextPropertyValueEditor(
@@ -111,6 +112,7 @@ public class RichTextPropertyEditor : DataEditor
IPropertyValidationService propertyValidationService,
DataValueReferenceFactoryCollection dataValueReferenceFactoryCollection,
IRichTextRequiredValidator richTextRequiredValidator,
IRichTextRegexValidator richTextRegexValidator,
BlockEditorVarianceHandler blockEditorVarianceHandler,
ILanguageService languageService,
IIOHelper ioHelper)
@@ -122,6 +124,7 @@ public class RichTextPropertyEditor : DataEditor
_pastedImages = pastedImages;
_htmlSanitizer = htmlSanitizer;
_richTextRequiredValidator = richTextRequiredValidator;
_richTextRegexValidator = richTextRegexValidator;
_jsonSerializer = jsonSerializer;
_logger = logger;
@@ -131,6 +134,8 @@ public class RichTextPropertyEditor : DataEditor
public override IValueRequiredValidator RequiredValidator => _richTextRequiredValidator;
public override IValueFormatValidator FormatValidator => _richTextRegexValidator;
protected override RichTextBlockValue CreateWithLayout(IEnumerable<RichTextBlockLayoutItem> layout) => new(layout);
/// <inheritdoc />

View File

@@ -0,0 +1,5 @@
namespace Umbraco.Cms.Core.PropertyEditors.Validators;
internal interface IRichTextRegexValidator : IValueFormatValidator
{
}

View File

@@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations;
using Microsoft.Extensions.Logging;
using Umbraco.Cms.Core.Serialization;
namespace Umbraco.Cms.Core.PropertyEditors.Validators;
internal class RichTextRegexValidator : IRichTextRegexValidator
{
private readonly RegexValidator _regexValidator;
private readonly IJsonSerializer _jsonSerializer;
private readonly ILogger<RichTextRegexValidator> _logger;
public RichTextRegexValidator(
IJsonSerializer jsonSerializer,
ILogger<RichTextRegexValidator> logger)
{
_jsonSerializer = jsonSerializer;
_logger = logger;
_regexValidator = new RegexValidator();
}
public IEnumerable<ValidationResult> ValidateFormat(object? value, string? valueType, string format) => _regexValidator.ValidateFormat(GetValue(value), valueType, format);
private object? GetValue(object? value) =>
RichTextPropertyEditorHelper.TryParseRichTextEditorValue(value, _jsonSerializer, _logger, out RichTextEditorValue? richTextEditorValue)
? richTextEditorValue?.Markup
: value;
}