From 8c2fa7274ccdbe068971eba00c85e14099cc5d6f Mon Sep 17 00:00:00 2001 From: kjac Date: Sat, 4 Feb 2023 12:03:43 +0100 Subject: [PATCH] Add the remaining properties to document type (minus list view info, still pending) --- .../DocumentType/DocumentTypeMapDefinition.cs | 34 +++++++++++++++++++ .../ContentType/ContentTypeCleanup.cs | 10 ++++++ .../ContentType/ContentTypeComposition.cs | 8 +++++ .../ContentType/ContentTypeCompositionType.cs | 7 ++++ .../ViewModels/ContentType/ContentTypeSort.cs | 8 +++++ .../ContentType/ContentTypeViewModelBase.cs | 6 ++++ .../DocumentType/DocumentTypeViewModel.cs | 6 ++++ 7 files changed, 79 insertions(+) create mode 100644 src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCleanup.cs create mode 100644 src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeComposition.cs create mode 100644 src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCompositionType.cs create mode 100644 src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeSort.cs diff --git a/src/Umbraco.Cms.Api.Management/Mapping/DocumentType/DocumentTypeMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/DocumentType/DocumentTypeMapDefinition.cs index d91f1fd366..5c78564b70 100644 --- a/src/Umbraco.Cms.Api.Management/Mapping/DocumentType/DocumentTypeMapDefinition.cs +++ b/src/Umbraco.Cms.Api.Management/Mapping/DocumentType/DocumentTypeMapDefinition.cs @@ -1,8 +1,10 @@ using Umbraco.Cms.Api.Management.Mapping.ContentType; +using Umbraco.Cms.Api.Management.ViewModels.ContentType; using Umbraco.Cms.Api.Management.ViewModels.DocumentType; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Models; using Umbraco.Extensions; +using ContentTypeSort = Umbraco.Cms.Api.Management.ViewModels.ContentType.ContentTypeSort; namespace Umbraco.Cms.Api.Management.Mapping.DocumentType; @@ -18,10 +20,42 @@ public class DocumentTypeMapDefinition : ContentTypeMapDefinition new ContentTypeSort { Key = contentTypeSort.Key, SortOrder = contentTypeSort.SortOrder }); + } + + if (source.AllowedTemplates != null) + { + target.AllowedTemplateKeys = source.AllowedTemplates.Select(template => template.Key); + } + + target.DefaultTemplateKey = source.DefaultTemplate?.Key; + + if (source.HistoryCleanup != null) + { + target.Cleanup = new ContentTypeCleanup + { + PreventCleanup = source.HistoryCleanup.PreventCleanup, + KeepAllVersionsNewerThanDays = source.HistoryCleanup.KeepAllVersionsNewerThanDays, + KeepLatestVersionPerDayForDays = source.HistoryCleanup.KeepLatestVersionPerDayForDays + }; + } + + target.Compositions = source.ContentTypeComposition.Select(contentType => new ContentTypeComposition + { + Key = contentType.Key, + CompositionType = contentType.Id == source.ParentId + ? ContentTypeCompositionType.Inheritance + : ContentTypeCompositionType.Composition + }).ToArray(); } } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCleanup.cs b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCleanup.cs new file mode 100644 index 0000000000..072e2637c6 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCleanup.cs @@ -0,0 +1,10 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.ContentType; + +public class ContentTypeCleanup +{ + public bool PreventCleanup { get; init; } + + public int? KeepAllVersionsNewerThanDays { get; init; } + + public int? KeepLatestVersionPerDayForDays { get; init; } +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeComposition.cs b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeComposition.cs new file mode 100644 index 0000000000..45fe7b463d --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeComposition.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.ContentType; + +public class ContentTypeComposition +{ + public required Guid Key { get; init; } + + public required ContentTypeCompositionType CompositionType { get; init; } +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCompositionType.cs b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCompositionType.cs new file mode 100644 index 0000000000..ad8479e05b --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeCompositionType.cs @@ -0,0 +1,7 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.ContentType; + +public enum ContentTypeCompositionType +{ + Composition, + Inheritance +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeSort.cs b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeSort.cs new file mode 100644 index 0000000000..4a43e108c0 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeSort.cs @@ -0,0 +1,8 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.ContentType; + +public class ContentTypeSort +{ + public required Guid Key { get; init; } + + public required int SortOrder { get; init; } +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeViewModelBase.cs b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeViewModelBase.cs index 77dea03761..bd585da61f 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeViewModelBase.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/ContentType/ContentTypeViewModelBase.cs @@ -12,6 +12,8 @@ public abstract class ContentTypeViewModelBase Properties { get; set; } = Array.Empty(); public IEnumerable Containers { get; set; } = Array.Empty(); + + public IEnumerable AllowedContentTypes { get; set; } = Array.Empty(); + + public IEnumerable Compositions { get; set; } = Array.Empty(); } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/DocumentType/DocumentTypeViewModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/DocumentType/DocumentTypeViewModel.cs index 2ae4bfb1c8..281da80b70 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/DocumentType/DocumentTypeViewModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/DocumentType/DocumentTypeViewModel.cs @@ -4,4 +4,10 @@ namespace Umbraco.Cms.Api.Management.ViewModels.DocumentType; public class DocumentTypeViewModel : ContentTypeViewModelBase { + public IEnumerable AllowedTemplateKeys { get; set; } = Array.Empty(); + + public Guid? DefaultTemplateKey { get; set; } + + // FIXME: either move this to base level or rename to DocumentTypeCleanup + public ContentTypeCleanup Cleanup { get; set; } = new(); }