From 1f2493811f22659203681713e3b90f06f9363a8b Mon Sep 17 00:00:00 2001 From: CodingDK Date: Fri, 16 Feb 2024 09:39:58 +0100 Subject: [PATCH] Fixes that PropertyType is not updated on contentTypes --- .../Context/ContentTypeMigrationContext.cs | 20 ++++++++++++++++++- .../Context/DataTypeMigrationContext.cs | 15 ++++++++++++++ .../Shared/SharedContentTypeBaseHandler.cs | 9 +++++++++ .../Handlers/Shared/SharedDataTypeHandler.cs | 2 ++ .../Models/EditorAliasInfo.cs | 2 +- 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/uSync.Migrations.Core/Context/ContentTypeMigrationContext.cs b/uSync.Migrations.Core/Context/ContentTypeMigrationContext.cs index a46fbc12..14931ec7 100644 --- a/uSync.Migrations.Core/Context/ContentTypeMigrationContext.cs +++ b/uSync.Migrations.Core/Context/ContentTypeMigrationContext.cs @@ -1,4 +1,5 @@ -using uSync.Migrations.Core.Configuration.Models; +using Umbraco.Extensions; +using uSync.Migrations.Core.Configuration.Models; using uSync.Migrations.Core.Models; namespace uSync.Migrations.Core.Context; @@ -319,4 +320,21 @@ public void AddReplacementAlias(string original, string replacement) public string GetReplacementAlias(string alias) => _replacementAliases.TryGetValue(alias, out var replacement) ? replacement : alias; + + + public void UpdatePropertyEditorTargets(DataTypeMigrationContext dataTypeContext) + { + foreach (var property in _propertyTypes.Values) + { + var editorAlias = property.UpdatedEditorAlias; + + var newEditorName = dataTypeContext.GetPropertyEditorReplacementName(editorAlias); + + if (newEditorName.IsNullOrWhiteSpace() == true) + { + continue; + } + property.UpdatedEditorAlias = newEditorName; + } + } } diff --git a/uSync.Migrations.Core/Context/DataTypeMigrationContext.cs b/uSync.Migrations.Core/Context/DataTypeMigrationContext.cs index c2c97470..afbbbeb9 100644 --- a/uSync.Migrations.Core/Context/DataTypeMigrationContext.cs +++ b/uSync.Migrations.Core/Context/DataTypeMigrationContext.cs @@ -22,6 +22,8 @@ public class DataTypeMigrationContext /// private Dictionary _dataTypeVariations { get; set; } = new(); + private Dictionary _dataTypePropertyEditorsReplacements = new(); + /// /// contains a lookup from defition (guid) to alias, so we can pass that along. @@ -97,4 +99,17 @@ public string GetVariation(Guid guid, string defaultValue) return dataTypeDefinition?.Key ?? null; } + public void AddPropertyEditorsReplacementNames(string editorAlias, string newEditorAlias) + { + if (editorAlias != newEditorAlias) + _dataTypePropertyEditorsReplacements.TryAdd(editorAlias, newEditorAlias); + } + + public string? GetPropertyEditorReplacementName(string editorAlias) + { + if (_dataTypePropertyEditorsReplacements.TryGetValue(editorAlias, out var value)) + return value; + + return null; + } } diff --git a/uSync.Migrations.Core/Handlers/Shared/SharedContentTypeBaseHandler.cs b/uSync.Migrations.Core/Handlers/Shared/SharedContentTypeBaseHandler.cs index b590706c..43875098 100644 --- a/uSync.Migrations.Core/Handlers/Shared/SharedContentTypeBaseHandler.cs +++ b/uSync.Migrations.Core/Handlers/Shared/SharedContentTypeBaseHandler.cs @@ -259,6 +259,7 @@ protected override IEnumerable PreDoMigration(SyncMigrationCon var messages = new List(); messages.AddRange(base.PreDoMigration(context)); messages.AddRange(CreateAdditional(context)); + messages.AddRange(UpdateDataTypePropertyReplacedEditors(context)); return messages; } @@ -324,4 +325,12 @@ private void AddAdditionaProperties(NewContentTypeInfo contentType, SyncMigratio } } + private IEnumerable UpdateDataTypePropertyReplacedEditors(SyncMigrationContext context) + { + var messages = new List(); + + context.ContentTypes.UpdatePropertyEditorTargets(context.DataTypes); + + return messages; + } } diff --git a/uSync.Migrations.Core/Handlers/Shared/SharedDataTypeHandler.cs b/uSync.Migrations.Core/Handlers/Shared/SharedDataTypeHandler.cs index 85b2813c..4e31ff73 100644 --- a/uSync.Migrations.Core/Handlers/Shared/SharedDataTypeHandler.cs +++ b/uSync.Migrations.Core/Handlers/Shared/SharedDataTypeHandler.cs @@ -161,6 +161,8 @@ protected abstract SyncMigrationDataTypeProperty GetMigrationDataTypeProperty( var newDatabaseType = GetNewDatabaseType(migrator, dataTypeProperty, context); var newConfig = GetDataTypeConfig(migrator, dataTypeProperty, context) ?? MakeEmptyLabelConfig(dataTypeProperty); + context.DataTypes.AddPropertyEditorsReplacementNames(editorAlias, newEditorAlias); + return MakeMigratedXml(key, name, GetLevel(source, level), newEditorAlias, newDatabaseType, folder, newConfig); } diff --git a/uSync.Migrations.Core/Models/EditorAliasInfo.cs b/uSync.Migrations.Core/Models/EditorAliasInfo.cs index 69dd7c7a..94bd091c 100644 --- a/uSync.Migrations.Core/Models/EditorAliasInfo.cs +++ b/uSync.Migrations.Core/Models/EditorAliasInfo.cs @@ -11,7 +11,7 @@ public EditorAliasInfo(string orginalEditorAlias, string updatedEditorAlias, Gui public string OriginalEditorAlias { get; } - public string UpdatedEditorAlias { get; } + public string UpdatedEditorAlias { get; set; } public Guid? DataTypeDefinition { get; set; } }