Skip to content

Commit 0d15697

Browse files
Fix migrating legacy RTE, textbox/area and Multi URL Picker configuration
1 parent 655169d commit 0d15697

6 files changed

+102
-21
lines changed

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/MultiUrlPickerReplaceDataTypeArtifactMigratorBase.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1+
using System.Collections.Generic;
12
using Umbraco.Cms.Core;
23
using Umbraco.Cms.Core.PropertyEditors;
34
using Umbraco.Cms.Core.Semver;
45
using Umbraco.Cms.Core.Serialization;
56
using Umbraco.Deploy.Core;
67
using Umbraco.Deploy.Infrastructure.Artifacts;
7-
using Umbraco.Deploy.Infrastructure.Migrators;
88

99
namespace Umbraco.Deploy.Contrib.Migrators.Legacy;
1010

1111
/// <summary>
1212
/// Migrates the <see cref="DataTypeArtifact" /> to replace the editor alias with <see cref="Constants.PropertyEditors.Aliases.MultiUrlPicker" />.
1313
/// </summary>
14-
public abstract class MultiUrlPickerReplaceDataTypeArtifactMigratorBase : ReplaceDataTypeArtifactMigratorBase
14+
public abstract class MultiUrlPickerReplaceDataTypeArtifactMigratorBase : LegacyReplaceDataTypeArtifactMigratorBase
1515
{
1616
/// <summary>
1717
/// Initializes a new instance of the <see cref="MultiUrlPickerReplaceDataTypeArtifactMigratorBase" /> class.
@@ -22,4 +22,12 @@ public abstract class MultiUrlPickerReplaceDataTypeArtifactMigratorBase : Replac
2222
protected MultiUrlPickerReplaceDataTypeArtifactMigratorBase(string fromEditorAlias, PropertyEditorCollection propertyEditors, IConfigurationEditorJsonSerializer configurationEditorJsonSerializer)
2323
: base(fromEditorAlias, Constants.PropertyEditors.Aliases.MultiUrlPicker, DeployConstants.PropertyEditors.UiAliases.MultiUrlPicker, propertyEditors, configurationEditorJsonSerializer)
2424
=> MaxVersion = new SemVersion(3, 0, 0);
25+
26+
/// <inheritdoc />
27+
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
28+
{
29+
ReplaceIntegerWithBoolean(ref configuration, Constants.DataTypes.ReservedPreValueKeys.IgnoreUserStartNodes);
30+
31+
return configuration;
32+
}
2533
}

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/RelatedLinks2DataTypeArtifactMigrator.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections.Generic;
21
using Umbraco.Cms.Core;
32
using Umbraco.Cms.Core.PropertyEditors;
43
using Umbraco.Cms.Core.Serialization;
@@ -21,8 +20,4 @@ public class RelatedLinks2DataTypeArtifactMigrator : MultiUrlPickerReplaceDataTy
2120
public RelatedLinks2DataTypeArtifactMigrator(PropertyEditorCollection propertyEditors, IConfigurationEditorJsonSerializer configurationEditorJsonSerializer)
2221
: base(FromEditorAlias, propertyEditors, configurationEditorJsonSerializer)
2322
{ }
24-
25-
/// <inheritdoc />
26-
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
27-
=> configuration;
2823
}

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/RelatedLinksDataTypeArtifactMigrator.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.Collections.Generic;
21
using Umbraco.Cms.Core;
32
using Umbraco.Cms.Core.PropertyEditors;
43
using Umbraco.Cms.Core.Serialization;
@@ -21,8 +20,4 @@ public class RelatedLinksDataTypeArtifactMigrator : MultiUrlPickerReplaceDataTyp
2120
public RelatedLinksDataTypeArtifactMigrator(PropertyEditorCollection propertyEditors, IConfigurationEditorJsonSerializer configurationEditorJsonSerializer)
2221
: base(FromEditorAlias, propertyEditors, configurationEditorJsonSerializer)
2322
{ }
24-
25-
/// <inheritdoc />
26-
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
27-
=> configuration;
2823
}

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/TextboxDataTypeArtifactMigrator.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
using Umbraco.Cms.Core.Serialization;
66
using Umbraco.Deploy.Core;
77
using Umbraco.Deploy.Infrastructure.Artifacts;
8-
using Umbraco.Deploy.Infrastructure.Migrators;
98

109
namespace Umbraco.Deploy.Contrib.Migrators.Legacy;
1110

1211
/// <summary>
1312
/// Migrates the <see cref="DataTypeArtifact" /> to replace the <see cref="FromEditorAlias" /> editor with <see cref="Constants.PropertyEditors.Aliases.TextBox" />.
1413
/// </summary>
15-
public class TextboxDataTypeArtifactMigrator : ReplaceDataTypeArtifactMigratorBase
14+
public class TextboxDataTypeArtifactMigrator : LegacyReplaceDataTypeArtifactMigratorBase
1615
{
1716
private const string FromEditorAlias = "Umbraco.Textbox";
1817

@@ -27,5 +26,10 @@ public TextboxDataTypeArtifactMigrator(PropertyEditorCollection propertyEditors,
2726

2827
/// <inheritdoc />
2928
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
30-
=> configuration;
29+
{
30+
ReplaceStringWithInteger(ref configuration, "maxChars");
31+
ReplaceStringWithInteger(ref configuration, "rows");
32+
33+
return configuration;
34+
}
3135
}

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/TextboxMultipleDataTypeArtifactMigrator.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@
55
using Umbraco.Cms.Core.Serialization;
66
using Umbraco.Deploy.Core;
77
using Umbraco.Deploy.Infrastructure.Artifacts;
8-
using Umbraco.Deploy.Infrastructure.Migrators;
98

109
namespace Umbraco.Deploy.Contrib.Migrators.Legacy;
1110

1211
/// <summary>
1312
/// Migrates the <see cref="DataTypeArtifact" /> to replace the <see cref="FromEditorAlias" /> editor with <see cref="Constants.PropertyEditors.Aliases.TextArea" />.
1413
/// </summary>
15-
public class TextboxMultipleDataTypeArtifactMigrator : ReplaceDataTypeArtifactMigratorBase
14+
public class TextboxMultipleDataTypeArtifactMigrator : LegacyReplaceDataTypeArtifactMigratorBase
1615
{
1716
private const string FromEditorAlias = "Umbraco.TextboxMultiple";
1817

@@ -27,5 +26,10 @@ public TextboxMultipleDataTypeArtifactMigrator(PropertyEditorCollection property
2726

2827
/// <inheritdoc />
2928
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
30-
=> configuration;
29+
{
30+
ReplaceStringWithInteger(ref configuration, "maxChars");
31+
ReplaceStringWithInteger(ref configuration, "rows");
32+
33+
return configuration;
34+
}
3135
}

src/Umbraco.Deploy.Contrib/Migrators/Legacy/DataType/TinyMCEv3DataTypeArtifactMigrator.cs

Lines changed: 78 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
using System.Collections.Generic;
2+
using System.Linq;
23
using Umbraco.Cms.Core;
34
using Umbraco.Cms.Core.PropertyEditors;
45
using Umbraco.Cms.Core.Semver;
56
using Umbraco.Cms.Core.Serialization;
67
using Umbraco.Deploy.Core;
78
using Umbraco.Deploy.Infrastructure.Artifacts;
8-
using Umbraco.Deploy.Infrastructure.Migrators;
9+
using Umbraco.Extensions;
910

1011
namespace Umbraco.Deploy.Contrib.Migrators.Legacy;
1112

1213
/// <summary>
1314
/// Migrates the <see cref="DataTypeArtifact" /> to replace the <see cref="FromEditorAlias" /> editor with <see cref="Constants.PropertyEditors.Aliases.RichText" />.
1415
/// </summary>
15-
public class TinyMCEv3DataTypeArtifactMigrator : ReplaceDataTypeArtifactMigratorBase
16+
public class TinyMCEv3DataTypeArtifactMigrator : LegacyReplaceDataTypeArtifactMigratorBase
1617
{
1718
private const string FromEditorAlias = "Umbraco.TinyMCEv3";
1819

@@ -27,5 +28,79 @@ public TinyMCEv3DataTypeArtifactMigrator(PropertyEditorCollection propertyEditor
2728

2829
/// <inheritdoc />
2930
protected override IDictionary<string, object>? MigrateConfiguration(IDictionary<string, object> configuration)
30-
=> configuration;
31+
{
32+
ReplaceUdiWithGuid(ref configuration, "mediaParentId");
33+
ReplaceRichTextEditor(ref configuration);
34+
ReplaceIntegerWithBoolean(ref configuration, Constants.DataTypes.ReservedPreValueKeys.IgnoreUserStartNodes);
35+
configuration.TryAdd("toolbar", new[]
36+
{
37+
"style",
38+
"bold",
39+
"italic",
40+
"alignleft",
41+
"aligncenter",
42+
"alignright",
43+
"bullist",
44+
"numlist",
45+
"outdent",
46+
"indent",
47+
"link",
48+
"sourcecode",
49+
"umbmediapicker",
50+
"umbembeddialog"
51+
});
52+
configuration.TryAdd("mode", "Classic");
53+
configuration.TryAdd("maxImageSize", 500);
54+
configuration.TryAdd("overlaySize", "small");
55+
56+
return configuration;
57+
}
58+
59+
private void ReplaceRichTextEditor(ref IDictionary<string, object> configuration)
60+
{
61+
if (TryDeserialize(ref configuration, "editor", out RichTextEditorConfiguration? richTextEditorConfiguration))
62+
{
63+
if (richTextEditorConfiguration.Toolbar is { Length: > 0 })
64+
{
65+
// Replace ace with sourcecode
66+
configuration["toolbar"] = richTextEditorConfiguration.Toolbar.Select(x => x == "ace" ? "sourcecode" : x).ToArray();
67+
}
68+
69+
if (richTextEditorConfiguration.Stylesheets is { Length: > 0 })
70+
{
71+
configuration["stylesheets"] = richTextEditorConfiguration.Stylesheets;
72+
}
73+
74+
if (string.IsNullOrEmpty(richTextEditorConfiguration.Mode) is false)
75+
{
76+
configuration["mode"] = richTextEditorConfiguration.Mode.ToFirstUpperInvariant();
77+
}
78+
79+
if (richTextEditorConfiguration.MaxImageSize is not null)
80+
{
81+
configuration["maxImageSize"] = richTextEditorConfiguration.MaxImageSize;
82+
}
83+
84+
if (richTextEditorConfiguration.Dimensions is not null)
85+
{
86+
configuration["dimensions"] = richTextEditorConfiguration.Dimensions;
87+
}
88+
89+
configuration.Remove("editor");
90+
}
91+
}
92+
93+
private sealed class RichTextEditorConfiguration
94+
{
95+
public string[]? Toolbar { get; set; }
96+
public string[]? Stylesheets { get; set; }
97+
public int? MaxImageSize { get; set; }
98+
public string? Mode { get; set; }
99+
public EditorDimensions? Dimensions { get; set; }
100+
public sealed class EditorDimensions
101+
{
102+
public int? Width { get; set; }
103+
public int? Height { get; set; }
104+
}
105+
}
31106
}

0 commit comments

Comments
 (0)