From 444149992ae94e4375a88ef7f2edcbd75e3d2915 Mon Sep 17 00:00:00 2001 From: kjac Date: Wed, 24 Apr 2024 11:58:47 +0200 Subject: [PATCH] Remove all RTE config from appsettings --- .../ConfigurationPresentationFactory.cs | 5 - src/Umbraco.Cms.Api.Management/OpenApi.json | 14 +- .../DocumentConfigurationResponseModel.cs | 2 - .../Media/MediaConfigurationResponseModel.cs | 2 - .../Configuration/Models/GlobalSettings.cs | 7 - .../Models/RichTextEditorSettings.cs | 164 ------------------ .../UmbracoBuilder.Configuration.cs | 1 - tools/Umbraco.JsonSchema/UmbracoCmsSchema.cs | 2 - 8 files changed, 3 insertions(+), 194 deletions(-) delete mode 100644 src/Umbraco.Core/Configuration/Models/RichTextEditorSettings.cs diff --git a/src/Umbraco.Cms.Api.Management/Factories/ConfigurationPresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/ConfigurationPresentationFactory.cs index a250fd5647de..b8580083c559 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/ConfigurationPresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/ConfigurationPresentationFactory.cs @@ -10,18 +10,15 @@ namespace Umbraco.Cms.Api.Management.Factories; public class ConfigurationPresentationFactory : IConfigurationPresentationFactory { private readonly IReservedFieldNamesService _reservedFieldNamesService; - private readonly GlobalSettings _globalSettings; private readonly ContentSettings _contentSettings; private readonly SegmentSettings _segmentSettings; public ConfigurationPresentationFactory( IReservedFieldNamesService reservedFieldNamesService, - IOptions globalSettings, IOptions contentSettings, IOptions segmentSettings) { _reservedFieldNamesService = reservedFieldNamesService; - _globalSettings = globalSettings.Value; _contentSettings = contentSettings.Value; _segmentSettings = segmentSettings.Value; } @@ -31,7 +28,6 @@ public DocumentConfigurationResponseModel CreateDocumentConfigurationResponseMod { DisableDeleteWhenReferenced = _contentSettings.DisableDeleteWhenReferenced, DisableUnpublishWhenReferenced = _contentSettings.DisableUnpublishWhenReferenced, - SanitizeTinyMce = _globalSettings.SanitizeTinyMce, AllowEditInvariantFromNonDefault = _contentSettings.AllowEditInvariantFromNonDefault, AllowNonExistingSegmentsCreation = _segmentSettings.AllowCreation, ReservedFieldNames = _reservedFieldNamesService.GetDocumentReservedFieldNames(), @@ -48,7 +44,6 @@ public MediaConfigurationResponseModel CreateMediaConfigurationResponseModel() = { DisableDeleteWhenReferenced = _contentSettings.DisableDeleteWhenReferenced, DisableUnpublishWhenReferenced = _contentSettings.DisableUnpublishWhenReferenced, - SanitizeTinyMce = _globalSettings.SanitizeTinyMce, ReservedFieldNames = _reservedFieldNamesService.GetMediaReservedFieldNames(), }; } diff --git a/src/Umbraco.Cms.Api.Management/OpenApi.json b/src/Umbraco.Cms.Api.Management/OpenApi.json index c16cf7240c07..093e345ec42a 100644 --- a/src/Umbraco.Cms.Api.Management/OpenApi.json +++ b/src/Umbraco.Cms.Api.Management/OpenApi.json @@ -34924,14 +34924,10 @@ "allowNonExistingSegmentsCreation", "disableDeleteWhenReferenced", "disableUnpublishWhenReferenced", - "reservedFieldNames", - "sanitizeTinyMce" + "reservedFieldNames" ], "type": "object", "properties": { - "sanitizeTinyMce": { - "type": "boolean" - }, "disableDeleteWhenReferenced": { "type": "boolean" }, @@ -36979,8 +36975,7 @@ "required": [ "disableDeleteWhenReferenced", "disableUnpublishWhenReferenced", - "reservedFieldNames", - "sanitizeTinyMce" + "reservedFieldNames" ], "type": "object", "properties": { @@ -36990,9 +36985,6 @@ "disableUnpublishWhenReferenced": { "type": "boolean" }, - "sanitizeTinyMce": { - "type": "boolean" - }, "reservedFieldNames": { "uniqueItems": true, "type": "array", @@ -43679,4 +43671,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentConfigurationResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentConfigurationResponseModel.cs index 029f24d48ea0..100f3ec3c982 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentConfigurationResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Document/DocumentConfigurationResponseModel.cs @@ -2,8 +2,6 @@ public class DocumentConfigurationResponseModel { - public required bool SanitizeTinyMce { get; set; } - public required bool DisableDeleteWhenReferenced { get; set; } public required bool DisableUnpublishWhenReferenced { get; set; } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaConfigurationResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaConfigurationResponseModel.cs index cad09a0bdd26..e1a15250a698 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaConfigurationResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Media/MediaConfigurationResponseModel.cs @@ -6,7 +6,5 @@ public class MediaConfigurationResponseModel public required bool DisableUnpublishWhenReferenced { get; set; } - public required bool SanitizeTinyMce { get; set; } - public required ISet ReservedFieldNames { get; set; } } diff --git a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs index 8763ea6e4550..58d1bb7134f4 100644 --- a/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs +++ b/src/Umbraco.Core/Configuration/Models/GlobalSettings.cs @@ -30,7 +30,6 @@ internal const string internal const string StaticNoNodesViewPath = "~/umbraco/UmbracoWebsite/NoNodes.cshtml"; internal const string StaticDistributedLockingReadLockDefaultTimeout = "00:01:00"; internal const string StaticDistributedLockingWriteLockDefaultTimeout = "00:00:05"; - internal const bool StaticSanitizeTinyMce = false; internal const int StaticMainDomReleaseSignalPollingInterval = 2000; private const bool StaticForceCombineUrlPathLeftToRight = true; private const bool StaticShowMaintenancePageWhenInUpgradeState = true; @@ -204,12 +203,6 @@ public string UmbracoPath /// public bool IsPickupDirectoryLocationConfigured => !string.IsNullOrWhiteSpace(Smtp?.PickupDirectoryLocation); - /// - /// Gets or sets a value indicating whether TinyMCE scripting sanitization should be applied. - /// - [DefaultValue(StaticSanitizeTinyMce)] - public bool SanitizeTinyMce { get; set; } = StaticSanitizeTinyMce; - /// /// Gets or sets a value representing the maximum time to wait whilst attempting to obtain a distributed read lock. /// diff --git a/src/Umbraco.Core/Configuration/Models/RichTextEditorSettings.cs b/src/Umbraco.Core/Configuration/Models/RichTextEditorSettings.cs deleted file mode 100644 index 77827fb009a9..000000000000 --- a/src/Umbraco.Core/Configuration/Models/RichTextEditorSettings.cs +++ /dev/null @@ -1,164 +0,0 @@ -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; -using Umbraco.Cms.Core.Models.ContentEditing; - -namespace Umbraco.Cms.Core.Configuration.Models; - -[UmbracoOptions(Constants.Configuration.ConfigRichTextEditor)] -public class RichTextEditorSettings -{ - internal const string StaticValidElements = - "+a[id|style|rel|data-id|data-udi|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-s[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|reversed|start|style|type],-ul[class|style],-li[class|style],br[class],img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align|umbracoorgwidth|umbracoorgheight|onresize|onresizestart|onresizeend|rel|data-id],-sub[style|class],-sup[style|class],-blockquote[dir|style|class],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[class|align|style],-pre[class|align|style],address[class|align|style],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|style|dir|class|align|style],hr[class|style],small[class|style],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],object[class|id|width|height|codebase|*],param[name|value|_value|class],embed[type|width|height|src|class|*],map[name|class],area[shape|coords|href|alt|target|class],bdo[class],button[class],iframe[*],figure,figcaption,cite,video[*],audio[*],picture[*],source[*],canvas[*]"; - - internal const string StaticInvalidElements = "font"; - - private static readonly string[] Default_plugins = - { - "anchor", "charmap", "table", "lists", "advlist", "autolink", "directionality", "searchreplace", - }; - - private static readonly RichTextEditorCommand[] Default_commands = - { - new RichTextEditorCommand - { - Alias = "ace", Name = "Source code editor", Mode = RichTextEditorCommandMode.Insert, - }, - new RichTextEditorCommand - { - Alias = "removeformat", Name = "Remove format", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand { Alias = "undo", Name = "Undo", Mode = RichTextEditorCommandMode.Insert }, - new RichTextEditorCommand { Alias = "redo", Name = "Redo", Mode = RichTextEditorCommandMode.Insert }, - new RichTextEditorCommand { Alias = "cut", Name = "Cut", Mode = RichTextEditorCommandMode.Selection }, - new RichTextEditorCommand { Alias = "copy", Name = "Copy", Mode = RichTextEditorCommandMode.Selection }, - new RichTextEditorCommand { Alias = "paste", Name = "Paste", Mode = RichTextEditorCommandMode.All }, - new RichTextEditorCommand - { - Alias = "styles", Name = "Style select", Mode = RichTextEditorCommandMode.All, - }, - new RichTextEditorCommand { Alias = "bold", Name = "Bold", Mode = RichTextEditorCommandMode.Selection }, - new RichTextEditorCommand { Alias = "italic", Name = "Italic", Mode = RichTextEditorCommandMode.Selection }, - new RichTextEditorCommand - { - Alias = "underline", Name = "Underline", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "strikethrough", Name = "Strikethrough", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "alignleft", Name = "Justify left", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "aligncenter", Name = "Justify center", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "alignright", Name = "Justify right", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "alignjustify", Name = "Justify full", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand { Alias = "bullist", Name = "Bullet list", Mode = RichTextEditorCommandMode.All }, - new RichTextEditorCommand { Alias = "numlist", Name = "Numbered list", Mode = RichTextEditorCommandMode.All }, - new RichTextEditorCommand - { - Alias = "outdent", Name = "Decrease indent", Mode = RichTextEditorCommandMode.All, - }, - new RichTextEditorCommand - { - Alias = "indent", Name = "Increase indent", Mode = RichTextEditorCommandMode.All, - }, - new RichTextEditorCommand { Alias = "link", Name = "Insert/edit link", Mode = RichTextEditorCommandMode.All }, - new RichTextEditorCommand - { - Alias = "unlink", Name = "Remove link", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand { Alias = "anchor", Name = "Anchor", Mode = RichTextEditorCommandMode.Selection }, - new RichTextEditorCommand - { - Alias = "umbmediapicker", Name = "Image", Mode = RichTextEditorCommandMode.Insert, - }, - new RichTextEditorCommand - { - Alias = "umbblockpicker", Name = "Block", Mode = RichTextEditorCommandMode.All, - }, - new RichTextEditorCommand { Alias = "table", Name = "Table", Mode = RichTextEditorCommandMode.Insert }, - new RichTextEditorCommand - { - Alias = "umbembeddialog", Name = "Embed", Mode = RichTextEditorCommandMode.Insert, - }, - new RichTextEditorCommand { Alias = "hr", Name = "Horizontal rule", Mode = RichTextEditorCommandMode.Insert }, - new RichTextEditorCommand - { - Alias = "subscript", Name = "Subscript", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "superscript", Name = "Superscript", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "charmap", Name = "Character map", Mode = RichTextEditorCommandMode.Insert, - }, - new RichTextEditorCommand - { - Alias = "rtl", Name = "Right to left", Mode = RichTextEditorCommandMode.Selection, - }, - new RichTextEditorCommand - { - Alias = "ltr", Name = "Left to right", Mode = RichTextEditorCommandMode.Selection, - }, - }; - - private static readonly IDictionary Default_custom_config = - new Dictionary { ["entity_encoding"] = "raw" }; - - /// - /// HTML RichText Editor TinyMCE Commands. - /// - /// WB-TODO Custom Array of objects - public RichTextEditorCommand[] Commands { get; set; } = Default_commands; - - /// - /// HTML RichText Editor TinyMCE Plugins. - /// - public string[] Plugins { get; set; } = Default_plugins; - - /// - /// HTML RichText Editor TinyMCE Custom Config. - /// - /// WB-TODO Custom Dictionary - public IDictionary CustomConfig { get; set; } = Default_custom_config; - - /// - /// - [DefaultValue(StaticValidElements)] - public string ValidElements { get; set; } = StaticValidElements; - - /// - /// Invalid HTML elements for RichText Editor. - /// - [DefaultValue(StaticInvalidElements)] - public string InvalidElements { get; set; } = StaticInvalidElements; - - /// - /// Cloud API Key for TinyMCE. This is required to use TinyMCE premium plugins. - /// - public string? CloudApiKey { get; set; } - - public class RichTextEditorCommand - { - [Required] - public string Alias { get; set; } = null!; - - [Required] - public string Name { get; set; } = null!; - - [Required] - public RichTextEditorCommandMode Mode { get; set; } - } -} diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs index 8e1817a40a1d..f11aa5d982dc 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs @@ -78,7 +78,6 @@ public static IUmbracoBuilder AddConfiguration(this IUmbracoBuilder builder) .AddUmbracoOptions() .AddUmbracoOptions() .AddUmbracoOptions() - .AddUmbracoOptions() .AddUmbracoOptions() .AddUmbracoOptions() .AddUmbracoOptions() diff --git a/tools/Umbraco.JsonSchema/UmbracoCmsSchema.cs b/tools/Umbraco.JsonSchema/UmbracoCmsSchema.cs index 7c1d4d852a5e..4cc94e8e03f5 100644 --- a/tools/Umbraco.JsonSchema/UmbracoCmsSchema.cs +++ b/tools/Umbraco.JsonSchema/UmbracoCmsSchema.cs @@ -58,8 +58,6 @@ public class UmbracoCmsDefinition public required UnattendedSettings Unattended { get; set; } - public required RichTextEditorSettings RichTextEditor { get; set; } - [Obsolete("Runtime minification is no longer supported. Will be removed entirely in V16.")] public required RuntimeMinificationSettings RuntimeMinification { get; set; }