diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs index 1b72979b7f..0245b1348e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class BlogDto : EntityDto, IHasConcurrencyStamp +public class BlogDto : ExtensibleEntityDto, IHasConcurrencyStamp { public string Name { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs index e01887e39b..e56fa97bca 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs @@ -7,7 +7,7 @@ using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class BlogPostDto : EntityDto, IHasCreationTime, IHasModificationTime, IHasConcurrencyStamp +public class BlogPostDto : ExtensibleEntityDto, IHasCreationTime, IHasModificationTime, IHasConcurrencyStamp { public Guid BlogId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs index fc8cbc9e0e..22672f686d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs @@ -6,7 +6,7 @@ using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class BlogPostListDto : EntityDto, IHasCreationTime, IHasModificationTime +public class BlogPostListDto : ExtensibleEntityDto, IHasCreationTime, IHasModificationTime { public Guid BlogId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs index 31005b7a5b..22c9f76cea 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs @@ -1,12 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.Application.Dtos; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class CreateBlogDto +public class CreateBlogDto : ExtensibleObject { [Required] [DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs index 115239f47c..f9e8fd4c09 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs @@ -1,12 +1,13 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class CreateBlogPostDto +public class CreateBlogPostDto: ExtensibleObject { [Required] public Guid BlogId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs index f0f6cda351..b58ea4d5ae 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs @@ -1,13 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class UpdateBlogDto : IHasConcurrencyStamp +public class UpdateBlogDto : ExtensibleObject, IHasConcurrencyStamp { [Required] [DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs index b19e3ec0e0..3c82584b6f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs @@ -1,13 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Blogs; namespace Volo.CmsKit.Admin.Blogs; [Serializable] -public class UpdateBlogPostDto : IHasConcurrencyStamp +public class UpdateBlogPostDto : ExtensibleObject, IHasConcurrencyStamp { [Required] [DynamicMaxLength(typeof(BlogPostConsts), nameof(BlogPostConsts.MaxTitleLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs index 89ffdec62a..83bae35311 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs @@ -1,11 +1,84 @@ using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectExtending.Modularity; +using Volo.Abp.Threading; +using Volo.CmsKit.Admin.Blogs; +using Volo.CmsKit.Admin.Comments; +using Volo.CmsKit.Admin.GlobalResources; +using Volo.CmsKit.Admin.MediaDescriptors; +using Volo.CmsKit.Admin.Menus; +using Volo.CmsKit.Admin.Pages; +using Volo.CmsKit.Admin.Tags; namespace Volo.CmsKit.Admin; [DependsOn( typeof(CmsKitCommonApplicationContractsModule) - )] +)] public class CmsKitAdminApplicationContractsModule : AbpModule { + private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner(); -} + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Blog, + getApiTypes: new[] { typeof(BlogDto) }, + createApiTypes: new[] { typeof(CreateBlogDto) }, + updateApiTypes: new[] { typeof(UpdateBlogDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.BlogPost, + getApiTypes: new[] { typeof(BlogPostDto), typeof(BlogPostListDto) }, + createApiTypes: new[] { typeof(CreateBlogPostDto) }, + updateApiTypes: new[] { typeof(UpdateBlogPostDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Comment, + getApiTypes: new[] { typeof(CommentDto), typeof(CommentWithAuthorDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.GlobalResource, + getApiTypes: new[] { typeof(GlobalResourcesDto) }, + updateApiTypes: new[] { typeof(GlobalResourcesUpdateDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.MediaDescriptor, + getApiTypes: new[] { typeof(MediaDescriptorDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.MenuItem, + createApiTypes: new[] { typeof(MenuCreateInput) }, + updateApiTypes: new[] { typeof(MenuUpdateInput) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Page, + getApiTypes: new[] { typeof(PageDto) }, + createApiTypes: new[] { typeof(CreatePageInputDto) }, + updateApiTypes: new[] { typeof(UpdatePageInputDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Tag, + createApiTypes: new[] { typeof(TagCreateDto) }, + updateApiTypes: new[] { typeof(TagUpdateDto) } + ); + }); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs index 1c4f7b23bd..e5e81df81b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Comments; [Serializable] -public class CmsUserDto +public class CmsUserDto : ExtensibleObject { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs index 6b147d76aa..aa64135270 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Comments; [Serializable] -public class CommentDto +public class CommentDto : ExtensibleObject { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs index d0ed17977d..eeef248267 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Comments; [Serializable] -public class CommentWithAuthorDto +public class CommentWithAuthorDto : ExtensibleObject { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs index 86398a62e4..92622404c0 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.GlobalResources; [Serializable] -public class GlobalResourcesDto +public class GlobalResourcesDto : ExtensibleObject { public string StyleContent { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs index b703018f39..8e9576b792 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.GlobalResources; [Serializable] -public class GlobalResourcesUpdateDto +public class GlobalResourcesUpdateDto : ExtensibleObject { public string Style { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs index c34358ef9d..162ab76925 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs @@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Admin.MediaDescriptors; [Serializable] -public class MediaDescriptorDto : EntityDto +public class MediaDescriptorDto : ExtensibleEntityDto { public string Name { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs index 06323ebb42..b44df6f4e8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs @@ -3,11 +3,12 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Menus; [Serializable] -public class MenuCreateInput +public class MenuCreateInput : ExtensibleObject { public string Name { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs index cb2f3129ce..f5ec9c6444 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs @@ -1,10 +1,11 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Menus; [Serializable] -public class MenuItemCreateInput +public class MenuItemCreateInput : ExtensibleObject { public Guid? ParentId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs index 5d9c0e9c02..8767a6192a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs @@ -1,11 +1,12 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Menus; [Serializable] -public class MenuItemUpdateInput : IHasConcurrencyStamp +public class MenuItemUpdateInput : ExtensibleObject, IHasConcurrencyStamp { [Required] public string DisplayName { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs index defa2558fe..668cad9290 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs @@ -3,11 +3,12 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Admin.Menus; [Serializable] -public class MenuUpdateInput +public class MenuUpdateInput : ExtensibleObject { public string Name { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs index 1ee4550941..a28d87d0c1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs @@ -1,12 +1,13 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Pages; namespace Volo.CmsKit.Admin.Pages; [Serializable] -public class CreatePageInputDto +public class CreatePageInputDto: ExtensibleObject { [Required] [DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs index f1b36d4fd1..5f2a73ae9c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities; namespace Volo.CmsKit.Admin.Pages; [Serializable] -public class PageDto : AuditedEntityDto, IHasConcurrencyStamp +public class PageDto : ExtensibleEntityDto, IHasConcurrencyStamp { public string Title { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs index 3cf2e53fcb..0e26b29de8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs @@ -1,13 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Pages; namespace Volo.CmsKit.Admin.Pages; [Serializable] -public class UpdatePageInputDto : IHasConcurrencyStamp +public class UpdatePageInputDto : ExtensibleObject, IHasConcurrencyStamp { [Required] [DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs index e992f0ac76..b1d45f1894 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs @@ -1,12 +1,13 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags; [Serializable] -public class TagCreateDto +public class TagCreateDto : ExtensibleObject { [Required] [DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxEntityTypeLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs index e8ab16e7e1..4754cb64ba 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs @@ -1,13 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags; [Serializable] -public class TagUpdateDto : IHasConcurrencyStamp +public class TagUpdateDto : ExtensibleObject, IHasConcurrencyStamp { [Required] [DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs index 120e704575..56f58f8078 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs @@ -20,29 +20,31 @@ public class CmsKitAdminApplicationAutoMapperProfile : Profile { public CmsKitAdminApplicationAutoMapperProfile() { - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); CreateMap() - .Ignore(x => x.Author); + .Ignore(x => x.Author) + .MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); CreateMap(); - CreateMap(MemberList.Destination); + CreateMap(MemberList.Destination).MapExtraProperties(); CreateMap() - .Ignore(d => d.BlogName); - CreateMap(MemberList.Source); - CreateMap(MemberList.Source); + .Ignore(d => d.BlogName) + .MapExtraProperties(); + CreateMap(MemberList.Source).MapExtraProperties(); + CreateMap(MemberList.Source).MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); CreateMap(MemberList.Destination); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs index 738d3c2f63..318c3522ed 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Admin.Blogs; using Volo.CmsKit.Blogs; @@ -30,7 +31,7 @@ public class CreateModalModel : CmsKitAdminPageModel } [AutoMap(typeof(CreateBlogDto), ReverseMap = true)] - public class CreateBlogViewModel + public class CreateBlogViewModel : ExtensibleObject { [Required] [DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureCacheItem.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureCacheItem.cs index ef3f79b3df..c3442b98ec 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureCacheItem.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureCacheItem.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Blogs; [Serializable] -public class BlogFeatureCacheItem +public class BlogFeatureCacheItem : ExtensibleObject { public Guid Id { get; set; } public string FeatureName { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureDto.cs index b2ca7eea17..f2edd1f420 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Blogs/BlogFeatureDto.cs @@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Blogs; [Serializable] -public class BlogFeatureDto : EntityDto +public class BlogFeatureDto : ExtensibleEntityDto { public string FeatureName { get; set; } public bool IsEnabled { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/CmsKitCommonApplicationContractsModule.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/CmsKitCommonApplicationContractsModule.cs index 66bbfa8b39..46fd17a1aa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/CmsKitCommonApplicationContractsModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/CmsKitCommonApplicationContractsModule.cs @@ -2,6 +2,14 @@ using Volo.Abp.Authorization; using Volo.Abp.Caching; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectExtending.Modularity; +using Volo.Abp.Threading; +using Volo.CmsKit.Blogs; +using Volo.CmsKit.Contents; +using Volo.CmsKit.Menus; +using Volo.CmsKit.Tags; +using Volo.CmsKit.Users; namespace Volo.CmsKit; @@ -13,5 +21,41 @@ namespace Volo.CmsKit; )] public class CmsKitCommonApplicationContractsModule : AbpModule { + private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.BlogFeature, + getApiTypes: new[] { typeof(BlogFeatureDto) } + ); + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.BlogPost, + getApiTypes: new[] { typeof(BlogPostCommonDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.MenuItem, + getApiTypes: new[] { typeof(MenuItemDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Tag, + getApiTypes: new[] { typeof(TagDto) } + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.CmsUser, + getApiTypes: new[] { typeof(CmsUserDto) } + ); + }); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs index a7bc27d713..caea6d228e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/BlogPostCommonDto.cs @@ -5,7 +5,7 @@ using Volo.CmsKit.Users; namespace Volo.CmsKit.Contents; [Serializable] -public class BlogPostCommonDto : AuditedEntityDto +public class BlogPostCommonDto : ExtensibleAuditedEntityDto { public Guid BlogId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs index 30835b719d..817d06d967 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/PageDto.cs @@ -3,7 +3,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Contents; -public class PageDto : EntityDto +public class PageDto : ExtensibleEntityDto { public string Title { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs index 0f39ff131e..3d785cb9f1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities; namespace Volo.CmsKit.Menus; [Serializable] -public class MenuItemDto : AuditedEntityDto, IHasConcurrencyStamp +public class MenuItemDto : ExtensibleAuditedEntityDto, IHasConcurrencyStamp { public Guid? ParentId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs index 7e36d1579b..88d77c3677 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities; namespace Volo.CmsKit.Tags; [Serializable] -public class TagDto : EntityDto, IHasConcurrencyStamp +public class TagDto : ExtensibleEntityDto, IHasConcurrencyStamp { public string EntityType { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Users/CmsUserDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Users/CmsUserDto.cs index 27ce7b1a5f..c0f049b37b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Users/CmsUserDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Users/CmsUserDto.cs @@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Users; [Serializable] -public class CmsUserDto : EntityDto +public class CmsUserDto : ExtensibleEntityDto { public virtual Guid? TenantId { get; protected set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs index e323ab3551..908be3b4d5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/CmsKitCommonApplicationAutoMapperProfile.cs @@ -9,12 +9,15 @@ public class CmsKitCommonApplicationAutoMapperProfile : Profile { public CmsKitCommonApplicationAutoMapperProfile() { - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); - CreateMap(); - CreateMap().ReverseMap(); + CreateMap().MapExtraProperties(); + CreateMap().MapExtraProperties(); + CreateMap() + .MapExtraProperties() + .ReverseMap() + .MapExtraProperties(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfiguration.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfiguration.cs new file mode 100644 index 0000000000..8c43d730a6 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfiguration.cs @@ -0,0 +1,97 @@ +using System; +using Volo.Abp.ObjectExtending.Modularity; + +namespace Volo.Abp.ObjectExtending; + +public class CmsKitModuleExtensionConfiguration : ModuleExtensionConfiguration +{ + public CmsKitModuleExtensionConfiguration ConfigureBlog( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.Blog, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureBlogPost( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.BlogPost, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureBlogFeature( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.BlogFeature, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureMediaDescriptor( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.MediaDescriptor, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigurePage( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.Page, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureTag( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.Tag, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureComment( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.Comment, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureMenuItem( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.MenuItem, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureCmsUser( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.CmsUser, + configureAction + ); + } + + public CmsKitModuleExtensionConfiguration ConfigureGlobalResource( + Action configureAction) + { + return this.ConfigureEntity( + CmsKitModuleExtensionConsts.EntityNames.GlobalResource, + configureAction + ); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfigurationDictionaryExtensions.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfigurationDictionaryExtensions.cs new file mode 100644 index 0000000000..a15a1470ea --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConfigurationDictionaryExtensions.cs @@ -0,0 +1,17 @@ +using System; +using Volo.Abp.ObjectExtending.Modularity; + +namespace Volo.Abp.ObjectExtending; + +public static class CmsKitModuleExtensionConfigurationDictionaryExtensions +{ + public static ModuleExtensionConfigurationDictionary ConfigureIdentity( + this ModuleExtensionConfigurationDictionary modules, + Action configureAction) + { + return modules.ConfigureModule( + CmsKitModuleExtensionConsts.ModuleName, + configureAction + ); + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConsts.cs new file mode 100644 index 0000000000..c637394024 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/Abp/ObjectExtending/CmsKitModuleExtensionConsts.cs @@ -0,0 +1,34 @@ +namespace Volo.Abp.ObjectExtending; + +public static class CmsKitModuleExtensionConsts +{ + public const string ModuleName = "CmsKit"; + + public static class EntityNames + { + public const string Blog = "Blog"; + + public const string BlogPost = "BlogPost"; + + public const string BlogFeature = "BlogFeature"; + + public const string MediaDescriptor = "MediaDescriptor"; + + public const string Page = "Page"; + + public const string Tag = "Tag"; + + public const string Comment = "Comment"; + + public const string MenuItem = "MenuItem"; + + public const string CmsUser = "CmsUser"; + + public const string GlobalResource = "GlobalResource"; + } + + public static class ConfigurationNames + { + public const string AllowUserToEdit = "AllowUserToEdit"; + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs index b504266ce5..13055db98a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs @@ -3,13 +3,21 @@ using Volo.Abp.Domain; using Volo.Abp.GlobalFeatures; using Volo.Abp.Localization; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectExtending.Modularity; +using Volo.Abp.Threading; using Volo.Abp.Users; using Volo.CmsKit.Blogs; using Volo.CmsKit.Comments; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Localization; +using Volo.CmsKit.MediaDescriptors; +using Volo.CmsKit.Menus; +using Volo.CmsKit.Pages; using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; +using Volo.CmsKit.Tags; +using Volo.CmsKit.Users; namespace Volo.CmsKit; @@ -21,6 +29,7 @@ namespace Volo.CmsKit; )] public class CmsKitDomainModule : AbpModule { + private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner(); public override void ConfigureServices(ServiceConfigurationContext context) { if (GlobalFeatureManager.Instance.IsEnabled()) @@ -81,6 +90,66 @@ public class CmsKitDomainModule : AbpModule // TODO: Configure TagEntityTypes here... } } + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Blog, + typeof(Blog) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.BlogPost, + typeof(BlogPost) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.BlogFeature, + typeof(BlogFeature) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.MediaDescriptor, + typeof(MediaDescriptor) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Page, + typeof(Page) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Tag, + typeof(Tag) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Comment, + typeof(Comment) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.MenuItem, + typeof(MenuItem) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.CmsUser, + typeof(CmsUser) + ); + }); + } private static LocalizableString L(string name) { diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheItem.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheItem.cs index 77b98c5b24..71c6800e04 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheItem.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Pages/PageCacheItem.cs @@ -1,8 +1,9 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Pages; -public class PageCacheItem +public class PageCacheItem : ExtensibleObject { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs index 62d94f6930..bd8bd05597 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs @@ -1,5 +1,10 @@ using Volo.Abp.Modularity; using Volo.Abp.EventBus; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectExtending.Modularity; +using Volo.Abp.Threading; +using Volo.CmsKit.Public.Comments; +using Volo.CmsKit.Public.GlobalResources; namespace Volo.CmsKit.Public; @@ -9,5 +14,25 @@ namespace Volo.CmsKit.Public; )] public class CmsKitPublicApplicationContractsModule : AbpModule { + private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner(); + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.Comment, + getApiTypes: new[] { typeof(CommentDto) , typeof(CommentWithDetailsDto) }, + createApiTypes: new []{ typeof(CreateCommentInput) }, + updateApiTypes: new []{ typeof(UpdateCommentInput) } + ); + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi( + CmsKitModuleExtensionConsts.ModuleName, + CmsKitModuleExtensionConsts.EntityNames.GlobalResource, + getApiTypes: new[] { typeof(GlobalResourceDto) } + ); + }); + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CmsUserDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CmsUserDto.cs index aaa5d9ab67..16633089ea 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CmsUserDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CmsUserDto.cs @@ -1,9 +1,10 @@ using System; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Public.Comments; [Serializable] -public class CmsUserDto +public class CmsUserDto : ExtensibleObject { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs index fe7985ff36..9199458c87 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs @@ -1,10 +1,11 @@ using System; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Public.Comments; [Serializable] -public class CommentDto : IHasConcurrencyStamp +public class CommentDto : ExtensibleObject, IHasConcurrencyStamp { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs index 621781e198..bf0c535f89 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; namespace Volo.CmsKit.Public.Comments; [Serializable] -public class CommentWithDetailsDto : IHasConcurrencyStamp +public class CommentWithDetailsDto : ExtensibleObject, IHasConcurrencyStamp { public Guid Id { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreateCommentInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreateCommentInput.cs index 2399fc898d..316ffe2737 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreateCommentInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CreateCommentInput.cs @@ -1,12 +1,13 @@ using System; using System.ComponentModel.DataAnnotations; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Comments; namespace Volo.CmsKit.Public.Comments; [Serializable] -public class CreateCommentInput +public class CreateCommentInput: ExtensibleObject { [Required] [DynamicStringLength(typeof(CommentConsts), nameof(CommentConsts.MaxTextLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs index 7ec1279704..a85783ee3f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs @@ -1,13 +1,14 @@ using System; using System.ComponentModel.DataAnnotations; using Volo.Abp.Domain.Entities; +using Volo.Abp.ObjectExtending; using Volo.Abp.Validation; using Volo.CmsKit.Comments; namespace Volo.CmsKit.Public.Comments; [Serializable] -public class UpdateCommentInput : IHasConcurrencyStamp +public class UpdateCommentInput : ExtensibleObject, IHasConcurrencyStamp { [Required] [DynamicStringLength(typeof(CommentConsts), nameof(CommentConsts.MaxTextLength))] diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/GlobalResources/GlobalResourceDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/GlobalResources/GlobalResourceDto.cs index 5d1ba87fe0..aac443e453 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/GlobalResources/GlobalResourceDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/GlobalResources/GlobalResourceDto.cs @@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Public.GlobalResources; [Serializable] -public class GlobalResourceDto : AuditedEntityDto +public class GlobalResourceDto : ExtensibleAuditedEntityDto { public string Name { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs index a2ee45266b..a625eca4f8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/PublicApplicationAutoMapperProfile.cs @@ -19,27 +19,28 @@ public class PublicApplicationAutoMapperProfile : Profile { public PublicApplicationAutoMapperProfile() { - CreateMap(); + CreateMap().MapExtraProperties(); CreateMap() - .Ignore(x => x.Author); + .Ignore(x => x.Author).MapExtraProperties(); CreateMap() .Ignore(x => x.Replies) - .Ignore(x => x.Author); + .Ignore(x => x.Author) + .MapExtraProperties(); CreateMap(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); - CreateMap(); + CreateMap().MapExtraProperties(); } }