Tiptap RTE: Migration to auto-enable new capabilities (#20057)
* Tiptap RTE: Migration to auto-enable new capabilities The server-side migration to compliment the client-side feature #20042 * Updated db creation script with latest RTE capabilities * Corrected class name typo "Capabilities" 🤦 * Updated default RTE install with TextDirection and TextIndent capabilities
This commit is contained in:
@@ -205,7 +205,7 @@ internal sealed class DatabaseDataCreator
|
||||
{
|
||||
[Constants.Security.AdminGroupKey] = [ActionNew.ActionLetter, ActionUpdate.ActionLetter, ActionDelete.ActionLetter, ActionMove.ActionLetter, ActionCopy.ActionLetter, ActionSort.ActionLetter, ActionRollback.ActionLetter, ActionProtect.ActionLetter, ActionAssignDomain.ActionLetter, ActionPublish.ActionLetter, ActionRights.ActionLetter, ActionUnpublish.ActionLetter, ActionBrowse.ActionLetter, ActionCreateBlueprintFromContent.ActionLetter, ActionNotify.ActionLetter, ":", "5", "7", "T", ActionDocumentPropertyRead.ActionLetter, ActionDocumentPropertyWrite.ActionLetter],
|
||||
[Constants.Security.EditorGroupKey] = [ActionNew.ActionLetter, ActionUpdate.ActionLetter, ActionDelete.ActionLetter, ActionMove.ActionLetter, ActionCopy.ActionLetter, ActionSort.ActionLetter, ActionRollback.ActionLetter, ActionProtect.ActionLetter, ActionPublish.ActionLetter, ActionUnpublish.ActionLetter, ActionBrowse.ActionLetter, ActionCreateBlueprintFromContent.ActionLetter, ActionNotify.ActionLetter, ":", "5", "T", ActionDocumentPropertyRead.ActionLetter, ActionDocumentPropertyWrite.ActionLetter],
|
||||
[Constants.Security.WriterGroupKey] = [ActionNew.ActionLetter, ActionUpdate.ActionLetter, ActionBrowse.ActionLetter, ActionNotify.ActionLetter, ":" , ActionDocumentPropertyRead.ActionLetter, ActionDocumentPropertyWrite.ActionLetter],
|
||||
[Constants.Security.WriterGroupKey] = [ActionNew.ActionLetter, ActionUpdate.ActionLetter, ActionBrowse.ActionLetter, ActionNotify.ActionLetter, ":", ActionDocumentPropertyRead.ActionLetter, ActionDocumentPropertyWrite.ActionLetter],
|
||||
[Constants.Security.TranslatorGroupKey] = [ActionUpdate.ActionLetter, ActionBrowse.ActionLetter, ActionDocumentPropertyRead.ActionLetter, ActionDocumentPropertyWrite.ActionLetter],
|
||||
};
|
||||
|
||||
@@ -1943,7 +1943,7 @@ internal sealed class DatabaseDataCreator
|
||||
EditorAlias = Constants.PropertyEditors.Aliases.RichText,
|
||||
EditorUiAlias = "Umb.PropertyEditorUi.Tiptap",
|
||||
DbType = "Ntext",
|
||||
Configuration = "{\"extensions\": [\"Umb.Tiptap.Embed\", \"Umb.Tiptap.Link\", \"Umb.Tiptap.Figure\", \"Umb.Tiptap.Image\", \"Umb.Tiptap.Subscript\", \"Umb.Tiptap.Superscript\", \"Umb.Tiptap.Table\", \"Umb.Tiptap.Underline\", \"Umb.Tiptap.TextAlign\", \"Umb.Tiptap.MediaUpload\"], \"maxImageSize\": 500, \"overlaySize\": \"medium\", \"toolbar\": [[[\"Umb.Tiptap.Toolbar.SourceEditor\"], [\"Umb.Tiptap.Toolbar.Bold\", \"Umb.Tiptap.Toolbar.Italic\", \"Umb.Tiptap.Toolbar.Underline\"], [\"Umb.Tiptap.Toolbar.TextAlignLeft\", \"Umb.Tiptap.Toolbar.TextAlignCenter\", \"Umb.Tiptap.Toolbar.TextAlignRight\"], [\"Umb.Tiptap.Toolbar.BulletList\", \"Umb.Tiptap.Toolbar.OrderedList\"], [\"Umb.Tiptap.Toolbar.Blockquote\", \"Umb.Tiptap.Toolbar.HorizontalRule\"], [\"Umb.Tiptap.Toolbar.Link\", \"Umb.Tiptap.Toolbar.Unlink\"], [\"Umb.Tiptap.Toolbar.MediaPicker\", \"Umb.Tiptap.Toolbar.EmbeddedMedia\"]]]}",
|
||||
Configuration = "{\"extensions\": [\"Umb.Tiptap.RichTextEssentials\", \"Umb.Tiptap.Anchor\", \"Umb.Tiptap.Block\", \"Umb.Tiptap.Blockquote\", \"Umb.Tiptap.Bold\", \"Umb.Tiptap.BulletList\", \"Umb.Tiptap.CodeBlock\", \"Umb.Tiptap.Embed\", \"Umb.Tiptap.Figure\", \"Umb.Tiptap.Heading\", \"Umb.Tiptap.HorizontalRule\", \"Umb.Tiptap.HtmlAttributeClass\", \"Umb.Tiptap.HtmlAttributeDataset\", \"Umb.Tiptap.HtmlAttributeId\", \"Umb.Tiptap.HtmlAttributeStyle\", \"Umb.Tiptap.HtmlTagDiv\", \"Umb.Tiptap.HtmlTagSpan\", \"Umb.Tiptap.Image\", \"Umb.Tiptap.Italic\", \"Umb.Tiptap.Link\", \"Umb.Tiptap.MediaUpload\", \"Umb.Tiptap.OrderedList\", \"Umb.Tiptap.Strike\", \"Umb.Tiptap.Subscript\", \"Umb.Tiptap.Superscript\", \"Umb.Tiptap.Table\", \"Umb.Tiptap.TextAlign\", \"Umb.Tiptap.TextDirection\", \"Umb.Tiptap.TextIndent\", \"Umb.Tiptap.TrailingNode\", \"Umb.Tiptap.Underline\"], \"maxImageSize\": 500, \"overlaySize\": \"medium\", \"toolbar\": [[[\"Umb.Tiptap.Toolbar.SourceEditor\"], [\"Umb.Tiptap.Toolbar.Bold\", \"Umb.Tiptap.Toolbar.Italic\", \"Umb.Tiptap.Toolbar.Underline\"], [\"Umb.Tiptap.Toolbar.TextAlignLeft\", \"Umb.Tiptap.Toolbar.TextAlignCenter\", \"Umb.Tiptap.Toolbar.TextAlignRight\"], [\"Umb.Tiptap.Toolbar.BulletList\", \"Umb.Tiptap.Toolbar.OrderedList\"], [\"Umb.Tiptap.Toolbar.Blockquote\", \"Umb.Tiptap.Toolbar.HorizontalRule\"], [\"Umb.Tiptap.Toolbar.Link\", \"Umb.Tiptap.Toolbar.Unlink\"], [\"Umb.Tiptap.Toolbar.MediaPicker\", \"Umb.Tiptap.Toolbar.EmbeddedMedia\"]]]}",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -123,5 +123,8 @@ public class UmbracoPlan : MigrationPlan
|
||||
// To 16.2.0
|
||||
To<V_16_2_0.AddLongRunningOperations>("{741C22CF-5FB8-4343-BF79-B97A58C2CCBA}");
|
||||
To<V_16_2_0.AddDocumentUrlLock>("{BE11D4D3-3A1F-4598-90D4-B548BD188C48}");
|
||||
|
||||
// To 16.3.0
|
||||
To<V_16_3_0.AddRichTextEditorCapabilities>("{A917FCBC-C378-4A08-A36C-220C581A6581}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
using Umbraco.Cms.Core;
|
||||
using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
|
||||
namespace Umbraco.Cms.Infrastructure.Migrations.Upgrade.V_16_3_0;
|
||||
|
||||
[Obsolete("Remove in Umbraco 18.")]
|
||||
public class AddRichTextEditorCapabilities : AsyncMigrationBase
|
||||
{
|
||||
private readonly IDataTypeService _dataTypeService;
|
||||
|
||||
public AddRichTextEditorCapabilities(IMigrationContext context, IDataTypeService dataTypeService)
|
||||
: base(context)
|
||||
{
|
||||
_dataTypeService = dataTypeService;
|
||||
}
|
||||
|
||||
protected override async Task MigrateAsync()
|
||||
{
|
||||
IEnumerable<IDataType> dataTypes = await _dataTypeService.GetByEditorUiAlias("Umb.PropertyEditorUi.Tiptap");
|
||||
|
||||
foreach (IDataType dataType in dataTypes)
|
||||
{
|
||||
HashSet<string> extensions = new();
|
||||
|
||||
if (dataType.ConfigurationData.TryGetValue("extensions", out var tmp) && tmp is List<string> existing)
|
||||
{
|
||||
extensions.UnionWith(existing);
|
||||
}
|
||||
|
||||
string[] newExtensions =
|
||||
[
|
||||
"Umb.Tiptap.RichTextEssentials",
|
||||
"Umb.Tiptap.Anchor",
|
||||
"Umb.Tiptap.Block",
|
||||
"Umb.Tiptap.Blockquote",
|
||||
"Umb.Tiptap.Bold",
|
||||
"Umb.Tiptap.BulletList",
|
||||
"Umb.Tiptap.CodeBlock",
|
||||
"Umb.Tiptap.Heading",
|
||||
"Umb.Tiptap.HorizontalRule",
|
||||
"Umb.Tiptap.HtmlAttributeClass",
|
||||
"Umb.Tiptap.HtmlAttributeDataset",
|
||||
"Umb.Tiptap.HtmlAttributeId",
|
||||
"Umb.Tiptap.HtmlAttributeStyle",
|
||||
"Umb.Tiptap.HtmlTagDiv",
|
||||
"Umb.Tiptap.HtmlTagSpan",
|
||||
"Umb.Tiptap.Italic",
|
||||
"Umb.Tiptap.OrderedList",
|
||||
"Umb.Tiptap.Strike",
|
||||
"Umb.Tiptap.TrailingNode",
|
||||
];
|
||||
|
||||
extensions.UnionWith(newExtensions);
|
||||
|
||||
dataType.ConfigurationData["extensions"] = extensions.ToArray();
|
||||
|
||||
_ = await _dataTypeService.UpdateAsync(dataType, Constants.Security.SuperUserKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user