Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;

using Umbraco.Cms.Core.Services;

using uSync.Community.DataTypeSerializers;
using uSync.Core.DataTypes;

namespace uSync8.Community.DataTypeSerializers.CoreTypes;
namespace uSync.Community.DataTypeSerializers.CoreTypes;

public class ContentPickerConfigSerializer : SyncDataTypeSerializerBase, IConfigurationSerializer
{
Expand All @@ -13,57 +15,31 @@ public ContentPickerConfigSerializer(IEntityService entityService)
{ }

public string Name => "ContentPickerNodeSerializer";

public string[] Editors => ["Umbraco.ContentPicker"];

private const string _startNodeIdKey = "startNodeId";

public override IDictionary<string, object> GetConfigurationExport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeIdKey, out var startNodeId)
&& Guid.TryParse(startNodeId.ToString(), out var startNodeGuid)
&& TryGuidToEntityPath(startNodeGuid, out var entityPath))
{
configuration["startNodeId"] = entityPath;
}

return base.GetConfigurationExport(configuration);
}

public override IDictionary<string, object> GetConfigurationImport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeIdKey, out var startNodeId)
&& startNodeId is string startNodePath
&& TryPathToGuid(startNodePath, out var startNodeGuid))
{
configuration["startNodeId"] = startNodeGuid;
}

return base.GetConfigurationImport(configuration);
}

//public override string? SerializeConfig(object configuration)
//{

// if (configuration is ContentPickerConfiguration pickerConfig)
// {
// var contentPickerConfig = new MappedPathConfigBase<ContentPickerConfiguration>();

// contentPickerConfig.Config = new ContentPickerConfiguration()
// {
// IgnoreUserStartNodes = pickerConfig.IgnoreUserStartNodes,
// //StartNodeId = null,
// //ShowOpenButton = pickerConfig.ShowOpenButton
// };

// //if (pickerConfig.StartNodeId != null)
// // contentPickerConfig.MappedPath = UdiToEntityPath(pickerConfig.StartNodeId);

// return base.SerializeConfig(contentPickerConfig);
// }

// return base.SerializeConfig(configuration);
//}


//public override object? DeserializeConfig(string config, Type configType)
//{
// if (configType == typeof(ContentPickerConfiguration))
// {
// var mappedConfig = config.DeserializeJson<MappedPathConfigBase<ContentPickerConfiguration>>();

// //if (!string.IsNullOrWhiteSpace(mappedConfig.MappedPath))
// //{
// // mappedConfig.Config.StartNodeId = PathToUdi(mappedConfig.MappedPath);
// //}

// return mappedConfig?.Config;
// }

// return base.DeserializeConfig(config, configType);
//}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Text.Json.Nodes;

using Umbraco.Cms.Core.Services;

using uSync.Core.DataTypes;
using uSync.Core.Extensions;

namespace uSync8.Community.DataTypeSerializers.CoreTypes;
namespace uSync.Community.DataTypeSerializers.CoreTypes;

public class MNTPickerConfigSerializer : SyncDataTypeSerializerBase, IConfigurationSerializer
{
Expand All @@ -16,64 +19,74 @@ public MNTPickerConfigSerializer(IEntityService entityService)

public string[] Editors => ["Umbraco.MultiNodeTreePicker"];

private const string _startNodeKey = "startNode";
private const string _idKey = "id";
private const string _dynamicRootKey = "dynamicRoot";
private const string _originKeyKey = "originKey";

public override IDictionary<string, object> GetConfigurationExport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeKey, out var startNodeValue)
&& startNodeValue is not null
&& startNodeValue.TryConvertToJsonObject(out var startNode))
{
TryMapNodeValue(startNode, _idKey, TryGuidToEntityPath);

if (startNode.TryGetPropertyAsObject(_dynamicRootKey, out var dynamicRoot))
TryMapNodeValue(dynamicRoot, _originKeyKey, TryGuidToEntityPath);

configuration[_startNodeKey] = startNode;
}

return base.GetConfigurationExport(configuration);
}

public override IDictionary<string, object> GetConfigurationImport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeKey, out var startNodeValue)
&& startNodeValue is not null
&& startNodeValue.TryConvertToJsonObject(out var startNode))
{
TryMapNodeValue(startNode, _idKey, TryPathToGuid);

if (startNode.TryGetPropertyAsObject(_dynamicRootKey, out var dynamicRoot))
TryMapNodeValue(dynamicRoot, _originKeyKey, TryPathToGuid);

configuration[_startNodeKey] = startNode;
}

return base.GetConfigurationImport(configuration);
}

//public override string SerializeConfig(object configuration)
//{
// var MNTPMappedConfig = new MappedPathConfigBase<MultiNodePickerConfiguration>();

// if (configuration is MultiNodePickerConfiguration pickerConfig)
// {
// MNTPMappedConfig.Config = new MultiNodePickerConfiguration()
// {
// IgnoreUserStartNodes = pickerConfig.IgnoreUserStartNodes,
// // Filter = pickerConfig.Filter,
// MaxNumber = pickerConfig.MaxNumber,
// MinNumber = pickerConfig.MinNumber,
// // ShowOpen = pickerConfig.ShowOpen,
// TreeSource = new MultiNodePickerConfigurationTreeSource()
// {
// ObjectType = pickerConfig.TreeSource.ObjectType,
// StartNodeId = pickerConfig.TreeSource.StartNodeId,
// StartNodeQuery = pickerConfig.TreeSource.StartNodeQuery
// }

// };

// if (pickerConfig?.TreeSource?.StartNodeId != null)
// {
// MNTPMappedConfig.MappedPath = UdiToEntityPath(pickerConfig.TreeSource.StartNodeId);
// }

// return base.SerializeConfig(MNTPMappedConfig);
// }

// return base.SerializeConfig(configuration);
//}


//public override object DeserializeConfig(string config, Type configType)
//{
// if (configType == typeof(MultiNodePickerConfiguration))
// {
// var mappedConfig = config.DeserializeJson<MappedPathConfigBase<MultiNodePickerConfiguration>>();

// if (!string.IsNullOrWhiteSpace(mappedConfig.MappedPath))
// {
// mappedConfig.Config.TreeSource.StartNodeId = PathToUdi(mappedConfig.MappedPath);
// }

// return mappedConfig.Config;
// }

// return base.DeserializeConfig(config, configType);
//}
private delegate bool TryConvert<TResult>(Guid guid, out TResult result);
private delegate bool TryConvertBack(string value, out Guid guid);

/// <summary>
/// maps a guid property value to its entity path, if the property is present and holds a guid.
/// </summary>
private static bool TryMapNodeValue(JsonObject node, string propertyName, TryConvert<string> converter)
{
if (node.TryGetPropertyValue(propertyName, out var propertyValue) is false
|| propertyValue is null) return false;

if (Guid.TryParse(propertyValue.ToString(), out var guid) is false) return false;
if (converter(guid, out var path) is false) return false;

node[propertyName] = path;
return true;
}

/// <summary>
/// maps an entity path property value back to a guid, if the property is present and holds a path.
/// </summary>
private static bool TryMapNodeValue(JsonObject node, string propertyName, TryConvertBack converter)
{
if (node.TryGetPropertyValue(propertyName, out var propertyValue) is false
|| propertyValue is null) return false;

if (converter(propertyValue.ToString(), out var guid) is false) return false;

node[propertyName] = guid;
return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;

using Umbraco.Cms.Core.Services;

using uSync.Community.DataTypeSerializers;
using uSync.Core.DataTypes;

namespace uSync8.Community.DataTypeSerializers.CoreTypes;
namespace uSync.Community.DataTypeSerializers.CoreTypes;

public class MediaPicker3ConfigSerializer : SyncDataTypeSerializerBase, IConfigurationSerializer
{
Expand All @@ -16,56 +18,29 @@ public MediaPicker3ConfigSerializer(IEntityService entityService)

public string[] Editors => ["Umbraco.MediaPicker3"];

public override IDictionary<string, object> GetConfigurationImport(IDictionary<string, object> configuration)
{
return base.GetConfigurationImport(configuration);
}
private const string _startNodeIdKey = "startNodeId";

public override IDictionary<string, object> GetConfigurationExport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeIdKey, out var startNodeId)
&& Guid.TryParse(startNodeId?.ToString(), out var startNodeGuid)
&& TryGuidToEntityPath(startNodeGuid, out var entityPath))
{
configuration[_startNodeIdKey] = entityPath;
}

return base.GetConfigurationExport(configuration);
}

// public override string SerializeConfig(object configuration)
// {

// if (configuration is MediaPicker3Configuration pickerConfig)
// {
// var mediaPickerConfig = new MappedPathConfigBase<MediaPicker3Configuration>();
// mediaPickerConfig.Config = new MediaPicker3Configuration()
// {
// EnableLocalFocalPoint = pickerConfig.EnableLocalFocalPoint,
// Crops = pickerConfig.Crops,
// Filter = pickerConfig.Filter,
// IgnoreUserStartNodes = pickerConfig.IgnoreUserStartNodes,
// Multiple = pickerConfig.Multiple,
// ValidationLimit = pickerConfig.ValidationLimit
// };

// if (pickerConfig.StartNodeId != null)
// mediaPickerConfig.MappedPath = UdiToEntityPath(pickerConfig.StartNodeId);
// return base.SerializeConfig(mediaPickerConfig);
// }

// return base.SerializeConfig(configuration);

// }


// public override object DeserializeConfig(string config, Type configType)
// {
// if (configType == typeof(MediaPicker3Configuration))
// {
// var mappedConfig = config.DeserializeJson<MappedPathConfigBase<MediaPicker3Configuration>>();

// if (!string.IsNullOrWhiteSpace(mappedConfig.MappedPath))
// {
// mappedConfig.Config.StartNodeId = PathToUdi(mappedConfig.MappedPath);
// }

// return mappedConfig.Config;
// }
public override IDictionary<string, object> GetConfigurationImport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_startNodeIdKey, out var startNodeId)
&& startNodeId is string startNodePath
&& TryPathToGuid(startNodePath, out var startNodeGuid))
{
configuration[_startNodeIdKey] = startNodeGuid;
}

// return base.DeserializeConfig(config, configType);
// }
return base.GetConfigurationImport(configuration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;

using Umbraco.Cms.Core.Services;

using uSync.Community.DataTypeSerializers;
using uSync.Core.DataTypes;

namespace uSync.Community.DataTypeSerializers.CoreTypes;

public class RichTextConfigSerializer : SyncDataTypeSerializerBase, IConfigurationSerializer
{
public RichTextConfigSerializer(IEntityService entityService)
: base(entityService)
{ }

public string Name => "RichTextNodeSerializer";

public string[] Editors => ["Umbraco.RichText"];

private const string _mediaParentIdKey = "mediaParentId";

public override IDictionary<string, object> GetConfigurationExport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_mediaParentIdKey, out var mediaParentId)
&& Guid.TryParse(mediaParentId?.ToString(), out var mediaParentGuid)
&& TryGuidToEntityPath(mediaParentGuid, out var entityPath))
{
// other serializers for this editor (e.g. uSync.Core's RichTextEditorMigratingSerializer)
// may hand us a read-only dictionary, so copy before mutating.
configuration = new Dictionary<string, object>(configuration)
{
[_mediaParentIdKey] = entityPath
};
}

return base.GetConfigurationExport(configuration);
}

public override IDictionary<string, object> GetConfigurationImport(IDictionary<string, object> configuration)
{
if (configuration.TryGetValue(_mediaParentIdKey, out var mediaParentId)
&& mediaParentId is string mediaParentPath
&& TryPathToGuid(mediaParentPath, out var mediaParentGuid))
{
// other serializers for this editor (e.g. uSync.Core's RichTextEditorMigratingSerializer)
// may hand us a read-only dictionary, so copy before mutating.
configuration = new Dictionary<string, object>(configuration)
{
[_mediaParentIdKey] = mediaParentGuid
};
}

return base.GetConfigurationImport(configuration);
}
}
Loading
Loading