-
-
Notifications
You must be signed in to change notification settings - Fork 65
Commit
Add migrator for Gibe.LinkPicker
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
using Newtonsoft.Json; | ||
using Umbraco.Cms.Core; | ||
using Umbraco.Cms.Core.PropertyEditors; | ||
using Umbraco.Extensions; | ||
using uSync.Migrations.Migrators.Community.GibeLinkPicker.Models; | ||
|
||
namespace uSync.Migrations.Migrators.Community.GibeLinkPicker | ||
{ | ||
[SyncMigrator("Gibe.LinkPicker")] | ||
public class GibeLinkPickerToMultiUrlPickerMigrator : SyncPropertyMigratorBase | ||
{ | ||
public override string GetEditorAlias(SyncMigrationDataTypeProperty dataTypeProperty, SyncMigrationContext context) | ||
=> Constants.PropertyEditors.Aliases.MultiUrlPicker; | ||
|
||
public override string GetContentValue(SyncMigrationContentProperty contentProperty, SyncMigrationContext context) | ||
{ | ||
if (contentProperty?.Value == null) | ||
{ | ||
return contentProperty?.Value; | ||
Check warning on line 19 in uSync.Migrations.Migrators/Community/GibeLinkPicker/GibeLinkPickerToMultiUrlPickerMigrator.cs GitHub Actions / build
|
||
} | ||
|
||
var gibeLinkPickers = GetPickerValues(contentProperty.Value).ToArray(); | ||
|
||
if (!gibeLinkPickers.Any()) | ||
{ | ||
return contentProperty.Value; | ||
} | ||
|
||
var links = new List<MultiUrlPickerValueEditor.LinkDto>(); | ||
|
||
foreach (var picker in gibeLinkPickers) | ||
{ | ||
var link = new MultiUrlPickerValueEditor.LinkDto | ||
{ | ||
Name = picker?.Name ?? string.Empty, | ||
Url = picker?.Url ?? string.Empty, | ||
}; | ||
|
||
if (picker?.Target == "_blank") | ||
{ | ||
link.Target = picker.Target; | ||
} | ||
|
||
links.Add(link); | ||
} | ||
return JsonConvert.SerializeObject(links, Formatting.Indented); | ||
} | ||
|
||
private IEnumerable<GibeLinkPickerData> GetPickerValues(string? contentValue) | ||
{ | ||
if (contentValue == null) | ||
{ | ||
return Enumerable.Empty<GibeLinkPickerData>(); | ||
} | ||
|
||
if (contentValue.StartsWith("[")) | ||
{ | ||
return JsonConvert.DeserializeObject<IEnumerable<GibeLinkPickerData>>(contentValue) | ||
?? Enumerable.Empty<GibeLinkPickerData>(); | ||
} | ||
return JsonConvert.DeserializeObject<GibeLinkPickerData>(contentValue)?.AsEnumerableOfOne() | ||
?? Enumerable.Empty<GibeLinkPickerData>(); | ||
} | ||
} | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
namespace uSync.Migrations.Migrators.Community.GibeLinkPicker.Models | ||
{ | ||
public class GibeLinkPickerData | ||
{ | ||
public int Id { get; set; } | ||
public string Uid { get; set; } | ||
Check warning on line 6 in uSync.Migrations.Migrators/Community/GibeLinkPicker/Models/GibeLinkPickerData.cs GitHub Actions / build
|
||
public string Name { get; set; } | ||
Check warning on line 7 in uSync.Migrations.Migrators/Community/GibeLinkPicker/Models/GibeLinkPickerData.cs GitHub Actions / build
|
||
public string Url { get; set; } | ||
Check warning on line 8 in uSync.Migrations.Migrators/Community/GibeLinkPicker/Models/GibeLinkPickerData.cs GitHub Actions / build
|
||
public string Target { get; set; } | ||
Check warning on line 9 in uSync.Migrations.Migrators/Community/GibeLinkPicker/Models/GibeLinkPickerData.cs GitHub Actions / build
Check warning on line 9 in uSync.Migrations.Migrators/Community/GibeLinkPicker/Models/GibeLinkPickerData.cs GitHub Actions / build
|
||
} | ||
} |