From 7a53738021dd35dc055d7e164f13f578e7793ddd Mon Sep 17 00:00:00 2001 From: malik masis Date: Mon, 29 Aug 2022 17:22:45 +0300 Subject: [PATCH] Moved ContentWidgetOptions to web layer --- .../CmsKitWebUnifiedModule.cs | 2 +- .../Admin/Contents/IContentAdminAppService.cs | 9 ----- .../Volo.CmsKit.Admin.Application.csproj | 4 +++ .../Admin/Contents/ContentAdminAppService.cs | 32 ----------------- .../ContentAdminClientProxy.Generated.cs | 22 ------------ .../ClientProxies/ContentAdminClientProxy.cs | 7 ---- .../cms-kit-admin-generate-proxy.json | 29 --------------- .../Admin/Contents/ContentAdminController.cs | 25 ------------- .../CmsKit/Contents/AddWidgetModal.cshtml.cs | 22 ++++++++---- .../client-proxies/cms-kit-admin-proxy.js | 15 -------- .../Contents/CmsKitContentWidgetOptions.cs | 2 +- .../Contents/ContentParser.cs | 7 ++-- .../Contents/ContentWidgetConfig.cs | 2 +- .../CmsKit/Public/Blogs/BlogPostPublicDto.cs | 4 --- .../Volo/CmsKit/Public/Pages/PageDto.cs | 2 -- .../Public/Blogs/BlogPostPublicAppService.cs | 15 +++----- .../Public/Pages/PagePublicAppService.cs | 9 ++--- .../PublicApplicationAutoMapperProfile.cs | 6 ++-- .../Pages/Public/CmsKit/Blogs/BlogPost.cshtml | 26 +++++++------- .../Public/CmsKit/Blogs/BlogPost.cshtml.cs | 35 +++++++++++++------ .../Public/CmsKit/Blogs/BlogPostViewModel.cs | 29 +++++++++++++++ .../Pages/Public/CmsKit/Pages/Index.cshtml | 7 ++-- .../Pages/Public/CmsKit/Pages/Index.cshtml.cs | 18 ++++++---- .../Public/CmsKit/Pages/PageViewModel.cs | 7 ++++ 24 files changed, 124 insertions(+), 212 deletions(-) delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs delete mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs rename modules/cms-kit/src/{Volo.CmsKit.Common.Application/Volo/CmsKit => Volo.CmsKit.Common.Web}/Contents/CmsKitContentWidgetOptions.cs (92%) rename modules/cms-kit/src/{Volo.CmsKit.Common.Application/Volo/CmsKit => Volo.CmsKit.Common.Web}/Contents/ContentParser.cs (96%) rename modules/cms-kit/src/{Volo.CmsKit.Common.Application/Volo/CmsKit => Volo.CmsKit.Common.Web}/Contents/ContentWidgetConfig.cs (87%) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index 801cc2dd41..0343a3bc58 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs @@ -36,7 +36,6 @@ using Volo.Abp.Threading; using Volo.Abp.VirtualFileSystem; using Volo.CmsKit.Admin.Web; using Volo.CmsKit.Comments; -using Volo.CmsKit.Contents; using Volo.CmsKit.EntityFrameworkCore; using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.MultiTenancy; @@ -45,6 +44,7 @@ using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; using Volo.CmsKit.Tags; using Volo.CmsKit.Web; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit; diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs deleted file mode 100644 index 28a1e7d992..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Application.Services; - -namespace Volo.CmsKit.Admin.Contents; -public interface IContentAdminAppService : IApplicationService -{ - Task> GetWidgetsAsync(); -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj index 684446b1f0..09faad6247 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj @@ -13,4 +13,8 @@ + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs deleted file mode 100644 index 8d06586e29..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Extensions.Options; -using Volo.Abp.Application.Dtos; -using Volo.CmsKit.Contents; - -namespace Volo.CmsKit.Admin.Contents; - -public class ContentAdminAppService : CmsKitAdminAppServiceBase, IContentAdminAppService -{ - private readonly CmsKitContentWidgetOptions _options; - - public ContentAdminAppService(IOptions options) - { - _options = options.Value; - } - - public virtual Task> GetWidgetsAsync() - { - return Task.FromResult(new ListResultDto() - { - Items = _options.WidgetConfigs - .Select(n => - new ContentWidgetDto - { - Key = n.Key, - Details = new WidgetDetailDto() { EditorComponentName = n.Value.EditorComponentName, Name = n.Value.Name }, - - }).ToList() - }); - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs deleted file mode 100644 index 30c6052af3..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs +++ /dev/null @@ -1,22 +0,0 @@ -// This file is automatically generated by ABP framework to use MVC Controllers from CSharp -using System; -using System.Threading.Tasks; -using Volo.Abp.Application.Dtos; -using Volo.Abp.Http.Client; -using Volo.Abp.Http.Modeling; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Http.Client.ClientProxying; -using Volo.CmsKit.Admin.Contents; - -// ReSharper disable once CheckNamespace -namespace Volo.CmsKit.Admin.Contents.ClientProxies; - -[Dependency(ReplaceServices = true)] -[ExposeServices(typeof(IContentAdminAppService), typeof(ContentAdminClientProxy))] -public partial class ContentAdminClientProxy : ClientProxyBase, IContentAdminAppService -{ - public virtual async Task> GetWidgetsAsync() - { - return await RequestAsync>(nameof(GetWidgetsAsync)); - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs deleted file mode 100644 index d2caea5777..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs +++ /dev/null @@ -1,7 +0,0 @@ -// This file is part of ContentAdminClientProxy, you can customize it here -// ReSharper disable once CheckNamespace -namespace Volo.CmsKit.Admin.Contents.ClientProxies; - -public partial class ContentAdminClientProxy -{ -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json index 32a833e884..8a9e38e4f9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json @@ -1191,35 +1191,6 @@ } } }, - "Volo.CmsKit.Admin.Contents.ContentAdminController": { - "controllerName": "ContentAdmin", - "controllerGroupName": "ContentAdmin", - "isRemoteService": true, - "apiVersion": null, - "type": "Volo.CmsKit.Admin.Contents.ContentAdminController", - "interfaces": [ - { - "type": "Volo.CmsKit.Admin.Contents.IContentAdminAppService" - } - ], - "actions": { - "GetWidgetsAsync": { - "uniqueName": "GetWidgetsAsync", - "name": "GetWidgetsAsync", - "httpMethod": "GET", - "url": "api/cms-kit-admin/contents", - "supportedVersions": [], - "parametersOnMethod": [], - "parameters": [], - "returnValue": { - "type": "Volo.Abp.Application.Dtos.ListResultDto", - "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto" - }, - "allowAnonymous": null, - "implementFrom": "Volo.CmsKit.Admin.Contents.IContentAdminAppService" - } - } - }, "Volo.CmsKit.Admin.Comments.CommentAdminController": { "controllerName": "CommentAdmin", "controllerGroupName": "CommentAdmin", diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs deleted file mode 100644 index 83bfcde600..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Threading.Tasks; -using Microsoft.AspNetCore.Mvc; -using Volo.Abp; -using Volo.Abp.Application.Dtos; - -namespace Volo.CmsKit.Admin.Contents; - -[RemoteService(Name = CmsKitAdminRemoteServiceConsts.RemoteServiceName)] -[Area(CmsKitAdminRemoteServiceConsts.ModuleName)] -[Route("api/cms-kit-admin/contents")] -public class ContentAdminController : CmsKitAdminController, IContentAdminAppService -{ - protected IContentAdminAppService ContentAdminAppService { get; } - - public ContentAdminController(IContentAdminAppService contentAdminAppService) - { - ContentAdminAppService = contentAdminAppService; - } - - [HttpGet] - public virtual Task> GetWidgetsAsync() - { - return ContentAdminAppService.GetWidgetsAsync(); - } -} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs index 5b1e8e5ea7..135e9d9257 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs @@ -3,38 +3,48 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Options; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.CmsKit.Admin.Contents; using Volo.CmsKit.Contents; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents; public class AddWidgetModal : AbpPageModel { - protected IContentAdminAppService ContentAdminAppService { get; } [BindProperty] public ContentViewModel ViewModel { get; set; } public List Widgets { get; set; } = new(); - public AddWidgetModal(IContentAdminAppService contentAdminAppService) + private readonly CmsKitContentWidgetOptions _options; + + public AddWidgetModal(IOptions options) { - ContentAdminAppService = contentAdminAppService; + _options = options.Value; } public async Task OnGetAsync() { - var widgets = await ContentAdminAppService.GetWidgetsAsync(); + var widgets = _options.WidgetConfigs + .Select(n => + new ContentWidgetDto + { + Key = n.Key, + Details = new WidgetDetailDto() { EditorComponentName = n.Value.EditorComponentName, Name = n.Value.Name }, + + }).ToList(); + ViewModel = new ContentViewModel() { - Details = widgets.Items.Select(p => p.Details).ToList() + Details = widgets.Select(p => p.Details).ToList() }; Widgets = new List() { new(string.Empty, string.Empty) }; Widgets.AddRange(widgets - .Items .Select(w => new SelectListItem(w.Key, w.Details.Name)) .ToList()); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js index 94017ec7e2..3a61ef6a78 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js @@ -247,21 +247,6 @@ })(); - // controller volo.cmsKit.admin.contents.contentAdmin - - (function(){ - - abp.utils.createNamespace(window, 'volo.cmsKit.admin.contents.contentAdmin'); - - volo.cmsKit.admin.contents.contentAdmin.getWidgets = function(ajaxParams) { - return abp.ajax($.extend(true, { - url: abp.appPath + 'api/cms-kit-admin/contents', - type: 'GET' - }, ajaxParams)); - }; - - })(); - // controller volo.cmsKit.admin.comments.commentAdmin (function(){ diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/CmsKitContentWidgetOptions.cs similarity index 92% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/CmsKitContentWidgetOptions.cs index 34eb41d3a0..ad643f7770 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/CmsKitContentWidgetOptions.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class CmsKitContentWidgetOptions { diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentParser.cs similarity index 96% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentParser.cs index 617e7d61cc..290222a376 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentParser.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentParser.cs @@ -5,9 +5,10 @@ using System.Threading.Tasks; using Microsoft.Extensions.Options; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.CmsKit.Contents; using static Volo.CmsKit.Contents.ContentConsts; -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class ContentParser : ITransientDependency { @@ -28,10 +29,10 @@ public class ContentParser : ITransientDependency }); } - var parsedList = new List(); + List parsedList = new(); ParseContent(content, parsedList); - var contentFragments = new List(); + List contentFragments = new(); FillContentFragment(content, parsedList, contentFragments); return Task.FromResult(contentFragments); diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentWidgetConfig.cs similarity index 87% rename from modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs rename to modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentWidgetConfig.cs index e14c1888ac..69be0703fa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Contents/ContentWidgetConfig.cs @@ -1,4 +1,4 @@ -namespace Volo.CmsKit.Contents; +namespace Volo.CmsKit.Web.Contents; public class ContentWidgetConfig { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/BlogPostPublicDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/BlogPostPublicDto.cs index 695f50836e..8c6a6a01e9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/BlogPostPublicDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/BlogPostPublicDto.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using Volo.Abp.Application.Dtos; -using Volo.CmsKit.Contents; using Volo.CmsKit.Users; namespace Volo.CmsKit.Public.Blogs; @@ -17,8 +15,6 @@ public class BlogPostPublicDto : AuditedEntityDto public string ShortDescription { get; set; } - public List ContentFragments { get; set; } - public string Content { get; set; } public Guid? CoverImageMediaId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Pages/PageDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Pages/PageDto.cs index a336844289..6f18787a44 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Pages/PageDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Pages/PageDto.cs @@ -13,8 +13,6 @@ public class PageDto : EntityDto public string Slug { get; set; } public string Content { get; set; } - - public List ContentFragments { get; set; } public string Script { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs index ebdda3d293..5b16e41f4f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs @@ -1,11 +1,10 @@ -using JetBrains.Annotations; -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; +using JetBrains.Annotations; using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.Blogs; -using Volo.CmsKit.Contents; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Users; @@ -17,16 +16,13 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub protected IBlogRepository BlogRepository { get; } protected IBlogPostRepository BlogPostRepository { get; } - protected ContentParser ContentParser { get; } public BlogPostPublicAppService( IBlogRepository blogRepository, - IBlogPostRepository blogPostRepository, - ContentParser contentParser) + IBlogPostRepository blogPostRepository) { BlogRepository = blogRepository; BlogPostRepository = blogPostRepository; - ContentParser = contentParser; } public virtual async Task GetAsync( @@ -36,10 +32,7 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub var blogPost = await BlogPostRepository.GetBySlugAsync(blog.Id, blogPostSlug); - var blogPostDto = ObjectMapper.Map(blogPost); - blogPostDto.ContentFragments = await ContentParser.ParseAsync(blogPost.Content); - - return blogPostDto; + return ObjectMapper.Map(blogPost); } public virtual async Task> GetListAsync([NotNull] string blogSlug, BlogPostGetListInput input) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs index 2bae7c350f..258ef935ed 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Pages/PagePublicAppService.cs @@ -1,6 +1,5 @@ using System.Threading.Tasks; using Volo.Abp.GlobalFeatures; -using Volo.CmsKit.Contents; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Pages; @@ -10,12 +9,10 @@ namespace Volo.CmsKit.Public.Pages; public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppService { protected IPageRepository PageRepository { get; } - protected ContentParser ContentParser { get; } - public PagePublicAppService(IPageRepository pageRepository, ContentParser contentParser) + public PagePublicAppService(IPageRepository pageRepository) { PageRepository = pageRepository; - ContentParser = contentParser; } public virtual async Task FindBySlugAsync(string slug) @@ -27,8 +24,6 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe return null; } - var pageDto = ObjectMapper.Map(page); - pageDto.ContentFragments = await ContentParser.ParseAsync(page.Content); - return pageDto; + return ObjectMapper.Map(page); } } 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 704a03778c..d5a1b58445 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 @@ -30,11 +30,9 @@ public class PublicApplicationAutoMapperProfile : Profile CreateMap(); - CreateMap() - .Ignore(x => x.ContentFragments); + CreateMap(); - CreateMap() - .Ignore(x => x.ContentFragments); + CreateMap(); CreateMap(); diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml index d9f7ce7953..88d7398fcf 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml @@ -21,7 +21,7 @@ @{ - string dummyImageSource = "https://dummyimage.com/1280x720/a3a3a3/fff.png?text=" + Model.BlogPost.Title; + string dummyImageSource = "https://dummyimage.com/1280x720/a3a3a3/fff.png?text=" + Model.ViewModel.Title; var isScrollIndexEnabled = GlobalFeatureManager.Instance.IsEnabled() && Model.BlogPostScrollIndexFeature?.IsEnabled == true; } @@ -57,18 +57,18 @@
- +
-

@Model.BlogPost.Title

+

@Model.ViewModel.Title

- - @@@Model.BlogPost.Author?.UserName + + @@@Model.ViewModel.Author?.UserName - @Model.BlogPost.CreationTime + @Model.ViewModel.CreationTime

- @foreach (var contentFragment in Model.BlogPost.ContentFragments) + @foreach (var contentFragment in Model.ViewModel.ContentFragments) { if (contentFragment.Type == ContentConsts.Markdown) { @@ -80,9 +80,9 @@ } }

- @if (Model.BlogPost.LastModificationTime != null) + @if (Model.ViewModel.LastModificationTime != null) { - @L["LastModification"].Value : @Model.BlogPost.LastModificationTime + @L["LastModification"].Value : @Model.ViewModel.LastModificationTime }


@@ -94,7 +94,7 @@ @await Component.InvokeAsync(typeof(TagViewComponent), new { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString(), + entityId = Model.ViewModel.Id.ToString(), urlFormat = $"/blogs/{Model.BlogSlug}?tagId={{TagId}}" }) } @@ -111,7 +111,7 @@ @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent), new { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() + entityId = Model.ViewModel.Id.ToString() }) } } @@ -124,7 +124,7 @@ @await Component.InvokeAsync(typeof(RatingViewComponent), new { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() + entityId = Model.ViewModel.Id.ToString() }) } } @@ -161,7 +161,7 @@ @await Component.InvokeAsync(typeof(DefaultBlogPostCommentViewComponent), new { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, - entityId = Model.BlogPost.Id.ToString() + entityId = Model.ViewModel.Id.ToString() }) } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs index 6227190ab8..268528c4bc 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml.cs @@ -1,9 +1,11 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.GlobalFeatures; +using Volo.Abp.ObjectMapping; using Volo.CmsKit.Blogs; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Public.Blogs; +using Volo.CmsKit.Web.Contents; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs; @@ -15,7 +17,7 @@ public class BlogPostModel : CmsKitPublicPageModelBase [BindProperty(SupportsGet = true)] public string BlogPostSlug { get; set; } - public BlogPostPublicDto BlogPost { get; private set; } + public BlogPostViewModel ViewModel { get; private set; } public BlogFeatureDto CommentsFeature { get; private set; } @@ -24,48 +26,61 @@ public class BlogPostModel : CmsKitPublicPageModelBase public BlogFeatureDto RatingsFeature { get; private set; } public BlogFeatureDto TagsFeature { get; private set; } - + public BlogFeatureDto BlogPostScrollIndexFeature { get; private set; } protected IBlogPostPublicAppService BlogPostPublicAppService { get; } protected IBlogFeatureAppService BlogFeatureAppService { get; } + protected ContentParser ContentParser { get; } + public BlogPostModel( IBlogPostPublicAppService blogPostPublicAppService, - IBlogFeatureAppService blogFeaturePublicAppService) + IBlogFeatureAppService blogFeaturePublicAppService, + ContentParser contentParser) { BlogPostPublicAppService = blogPostPublicAppService; BlogFeatureAppService = blogFeaturePublicAppService; + ContentParser = contentParser; } - public virtual async Task OnGetAsync() + public virtual async Task OnGetAsync() { - BlogPost = await BlogPostPublicAppService.GetAsync(BlogSlug, BlogPostSlug); + var blogPostPublicDto = await BlogPostPublicAppService.GetAsync(BlogSlug, BlogPostSlug); + ViewModel = ObjectMapper.Map(blogPostPublicDto); + if (ViewModel == null) + { + return NotFound(); + } + + ViewModel.ContentFragments = await ContentParser.ParseAsync(blogPostPublicDto.Content); if (GlobalFeatureManager.Instance.IsEnabled()) { - CommentsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.CommentsFeature.Name); + CommentsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.CommentsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - ReactionsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.ReactionsFeature.Name); + ReactionsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.ReactionsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - RatingsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.RatingsFeature.Name); + RatingsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.RatingsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - TagsFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.TagsFeature.Name); + TagsFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.TagsFeature.Name); } if (GlobalFeatureManager.Instance.IsEnabled()) { - BlogPostScrollIndexFeature = await BlogFeatureAppService.GetOrDefaultAsync(BlogPost.BlogId, GlobalFeatures.BlogPostScrollIndexFeature.Name); + BlogPostScrollIndexFeature = await BlogFeatureAppService.GetOrDefaultAsync(ViewModel.BlogId, GlobalFeatures.BlogPostScrollIndexFeature.Name); } + + return Page(); } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs new file mode 100644 index 0000000000..ff154b6a7b --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPostViewModel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using AutoMapper; +using Volo.Abp.Application.Dtos; +using Volo.CmsKit.Contents; +using Volo.CmsKit.Public.Blogs; +using Volo.CmsKit.Users; + +namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs; + +[AutoMap(typeof(BlogPostPublicDto), ReverseMap = true)] +public class BlogPostViewModel : AuditedEntityDto +{ + public Guid BlogId { get; set; } + + public string Title { get; set; } + + public string Slug { get; set; } + + public string ShortDescription { get; set; } + + public string Content { get; set; } + + public List ContentFragments { get; set; } + + public Guid? CoverImageMediaId { get; set; } + + public CmsUserDto Author { get; set; } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml index 4ecfa480d0..6a8b7a6742 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml @@ -18,19 +18,19 @@ } @section scripts{ } - @foreach (ContentFragment contentFragment in Model.PageDto.ContentFragments) + @foreach (ContentFragment contentFragment in Model.ViewModel.ContentFragments) { if (contentFragment.Type == ContentConsts.Markdown) { @@ -40,7 +40,6 @@ { @await Component.InvokeAsync(contentFragment.GetProperty("Type"), contentFragment.ExtraProperties.ConvertToDynamicObject()) } - } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs index 1434eccb4b..98f1fb70c4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/Index.cshtml.cs @@ -1,6 +1,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.CmsKit.Public.Pages; +using Volo.CmsKit.Web.Contents; using Volo.CmsKit.Web.Pages; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages; @@ -12,21 +13,26 @@ public class IndexModel : CommonPageModel protected IPagePublicAppService PagePublicAppService { get; } - public PageDto PageDto{ get; private set; } + protected ContentParser ContentParser { get; } -public IndexModel(IPagePublicAppService pagePublicAppService) + public PageViewModel ViewModel { get; private set; } + + public IndexModel(IPagePublicAppService pagePublicAppService, ContentParser contentParser) { PagePublicAppService = pagePublicAppService; + ContentParser = contentParser; } - public async Task OnGetAsync() + public virtual async Task OnGetAsync() { - PageDto = await PagePublicAppService.FindBySlugAsync(Slug); - - if (PageDto == null) + var pageDto = await PagePublicAppService.FindBySlugAsync(Slug); + ViewModel = ObjectMapper.Map(pageDto); + if (ViewModel == null) { return NotFound(); } + + ViewModel.ContentFragments = await ContentParser.ParseAsync(pageDto.Content); return Page(); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs index 5e5df3e917..3195826093 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Pages/PageViewModel.cs @@ -1,9 +1,12 @@ using System; using System.Collections.Generic; +using AutoMapper; using Volo.CmsKit.Contents; +using Volo.CmsKit.Public.Pages; namespace Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Pages; +[AutoMap(typeof(PageDto), ReverseMap = true)] public class PageViewModel { public Guid Id { get; set; } @@ -11,4 +14,8 @@ public class PageViewModel public string Title { get; set; } public List ContentFragments { get; set; } + + public string Script { get; set; } + + public string Style { get; set; } } \ No newline at end of file