From 94526a3f40e87702baea8e9624bb2e7321f1d4bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enis=20Necipo=C4=9Flu?= Date: Thu, 10 Jun 2021 12:02:29 +0300 Subject: [PATCH] CmsKit - Refactoring & Page lookup improvement --- .../Admin/Menus/IMenuAdminAppService.cs | 3 ++ .../CmsKit/Admin/Menus/MenuCreateInput.cs | 1 + .../Volo/CmsKit/Admin/Menus/MenuDto.cs | 1 + .../CmsKit/Admin/Menus/MenuItemCreateInput.cs | 1 + .../CmsKit/Admin/Menus/MenuItemMoveInput.cs | 1 + .../CmsKit/Admin/Menus/MenuItemUpdateInput.cs | 1 + .../CmsKit/Admin/Menus/MenuUpdateInput.cs | 1 + .../Admin/{Pages => Menus}/PageLookupDto.cs | 2 +- .../CmsKit/Admin/Menus/PageLookupInputDto.cs | 11 +++++ .../CmsKit/Admin/Menus/UpdateMainMenuInput.cs | 3 ++ .../Admin/Pages/IPageAdminAppService.cs | 1 - .../CmsKit/Admin/Menus/MenuAdminAppService.cs | 40 ++++++++++++++----- .../CmsKit/Admin/Pages/PageAdminAppService.cs | 18 +-------- .../CmsKit/Admin/Menus/MenuAdminController.cs | 8 ++++ .../CmsKit/Admin/Pages/PageAdminController.cs | 9 +---- .../CmsKit/Menus/MenuItems/createModal.js | 2 +- .../CmsKit/Menus/MenuItems/updateModal.js | 2 +- .../Volo/CmsKit/Pages/PageConsts.cs | 8 ++-- .../Menus/CmsKitPublicMenuContributor.cs | 2 +- 19 files changed, 70 insertions(+), 45 deletions(-) rename modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/{Pages => Menus}/PageLookupDto.cs (84%) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupInputDto.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs index 0e8beaccee..be56196e46 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs @@ -31,5 +31,8 @@ namespace Volo.CmsKit.Admin.Menus Task MoveMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemMoveInput input); Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input); + + + Task> GetPageLookupAsync(PageLookupInputDto input); } } 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 9788f98b84..80cb3ada61 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 @@ -6,6 +6,7 @@ using System.Threading.Tasks; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuCreateInput { public string Name { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs index 23c245449e..9852ebe83e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs @@ -7,6 +7,7 @@ using Volo.Abp.Application.Dtos; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuDto : EntityDto { 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 690bb366e7..8092eec631 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 @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuItemCreateInput { public Guid MenuId { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemMoveInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemMoveInput.cs index b2344a9a67..4d2d31d70c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemMoveInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemMoveInput.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuItemMoveInput { public Guid? NewParentId { 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 864d7fc129..f78d4b27af 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 @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuItemUpdateInput { [Required] 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 e063a25121..cd41ca427a 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 @@ -6,6 +6,7 @@ using System.Threading.Tasks; namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class MenuUpdateInput { public string Name { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageLookupDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupDto.cs similarity index 84% rename from modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageLookupDto.cs rename to modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupDto.cs index 3b1f458a1e..ee9fb17f2b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageLookupDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupDto.cs @@ -1,7 +1,7 @@ using System; using Volo.Abp.Application.Dtos; -namespace Volo.CmsKit.Admin.Pages +namespace Volo.CmsKit.Admin.Menus { public class PageLookupDto : EntityDto { diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupInputDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupInputDto.cs new file mode 100644 index 0000000000..19523ac14e --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupInputDto.cs @@ -0,0 +1,11 @@ +using System; +using Volo.Abp.Application.Dtos; + +namespace Volo.CmsKit.Admin.Menus +{ + [Serializable] + public class PageLookupInputDto: PagedAndSortedResultRequestDto + { + public string Filter { get; set; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/UpdateMainMenuInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/UpdateMainMenuInput.cs index eb04610146..3fbc3de080 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/UpdateMainMenuInput.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/UpdateMainMenuInput.cs @@ -1,5 +1,8 @@ +using System; + namespace Volo.CmsKit.Admin.Menus { + [Serializable] public class UpdateMainMenuInput { public bool IsMainMenu { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs index 861a0cc1a0..f01dc07c5c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs @@ -8,6 +8,5 @@ namespace Volo.CmsKit.Admin.Pages { public interface IPageAdminAppService : ICrudAppService { - Task> GetLookupAsync(GetPagesInputDto input); } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs index 4952645b73..c1b9c5f018 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs @@ -37,9 +37,9 @@ namespace Volo.CmsKit.Admin.Menus var menus = await MenuRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, input.Sorting); return new PagedResultDto( - await MenuRepository.GetCountAsync(), - ObjectMapper.Map, List>(menus) - ); + await MenuRepository.GetCountAsync(), + ObjectMapper.Map, List>(menus) + ); } public async Task GetAsync(Guid id) @@ -87,7 +87,7 @@ namespace Volo.CmsKit.Admin.Menus var menu = await MenuRepository.GetAsync(menuId); var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) - ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); + ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); return ObjectMapper.Map(menuItem); } @@ -117,23 +117,24 @@ namespace Volo.CmsKit.Admin.Menus var page = await PageRepository.GetAsync(input.PageId.Value); MenuManager.SetPageUrl(menuItem, page); } - + menu.Items.Add(menuItem); MenuManager.OrganizeTreeOrderForMenuItem(menu, menuItem); - + await MenuRepository.UpdateAsync(menu); return ObjectMapper.Map(menuItem); } [Authorize(CmsKitAdminPermissions.Menus.MenuItems.Update)] - public virtual async Task UpdateMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemUpdateInput input) + public virtual async Task UpdateMenuItemAsync(Guid menuId, Guid menuItemId, + MenuItemUpdateInput input) { var menu = await MenuRepository.GetAsync(menuId, includeDetails: true); var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) - ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); + ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); if (input.PageId.HasValue) { @@ -163,7 +164,7 @@ namespace Volo.CmsKit.Admin.Menus var menu = await MenuRepository.GetAsync(menuId, includeDetails: true); var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) - ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); + ?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId); menu.Items.Remove(menuItem); @@ -176,7 +177,7 @@ namespace Volo.CmsKit.Admin.Menus return MenuManager.MoveAsync(menuId, menuItemId, input.NewParentId, input.Position); } - public virtual async Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input) + public virtual async Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input) { if (input.IsMainMenu) { @@ -187,5 +188,22 @@ namespace Volo.CmsKit.Admin.Menus await MenuManager.UnSetMainMenuAsync(menuId); } } + + public virtual async Task> GetPageLookupAsync(PageLookupInputDto input) + { + var count = await PageRepository.GetCountAsync(input.Filter); + + var pages = await PageRepository.GetListAsync( + input.Filter, + input.MaxResultCount, + input.SkipCount, + input.Sorting + ); + + return new PagedResultDto( + count, + ObjectMapper.Map, List>(pages) + ); + } } -} +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs index a37e489a58..5247c09ab1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs @@ -5,6 +5,7 @@ using AutoMapper; using Microsoft.AspNetCore.Authorization; using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; +using Volo.CmsKit.Admin.Menus; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Pages; using Volo.CmsKit.Permissions; @@ -82,22 +83,5 @@ namespace Volo.CmsKit.Admin.Pages { await PageRepository.DeleteAsync(id); } - - public virtual async Task> GetLookupAsync(GetPagesInputDto input) - { - var count = await PageRepository.GetCountAsync(input.Filter); - - var pages = await PageRepository.GetListAsync( - input.Filter, - input.MaxResultCount, - input.SkipCount, - input.Sorting - ); - - return new PagedResultDto( - count, - ObjectMapper.Map, List>(pages) - ); - } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs index a3a66a7a04..9e860e3f2c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs @@ -119,5 +119,13 @@ namespace Volo.CmsKit.Admin.Menus { return MenuAdminAppService.UpdateMenuItemAsync(menuId, menuItemId, input); } + + + [HttpGet] + [Route("lookup/pages")] + public virtual Task> GetPageLookupAsync([FromQuery]PageLookupInputDto input) + { + return MenuAdminAppService.GetPageLookupAsync(input); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs index 5b46ebc17a..8f8d10e39d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs @@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; +using Volo.CmsKit.Admin.Menus; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Permissions; @@ -59,13 +60,5 @@ namespace Volo.CmsKit.Admin.Pages { return PageAdminAppService.DeleteAsync(id); } - - [HttpGet] - [Route("lookup")] - [AllowAnonymous] // TODO: Find a way to get lookup - public virtual Task> GetLookupAsync(GetPagesInputDto input) - { - return PageAdminAppService.GetLookupAsync(input); - } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js index 6f74dbf0d6..ae4e1db8c6 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js @@ -35,7 +35,7 @@ $(function () { }) function initSelectPageId() { - $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/pages/lookup'); + $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menus/lookup/pages'); $pageId.data('autocompleteDisplayProperty', 'title'); $pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteItemsProperty', 'items'); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js index b5c4c1da1c..6005387a6f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js @@ -35,7 +35,7 @@ $(function () { }); function initSelectPageId() { - $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/pages/lookup'); + $pageId.data('autocompleteApiUrl', '/api/cms-kit-admin/menus/lookup/pages'); $pageId.data('autocompleteDisplayProperty', 'title'); $pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteItemsProperty', 'items'); diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs index 084f5e3b68..d347de2328 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs @@ -5,15 +5,15 @@ namespace Volo.CmsKit.Pages public class PageConsts { public const string EntityType = "Page"; - + public static int MaxTitleLength { get; set; } = 256; - + public static int MaxSlugLength { get; set; } = 256; public static int MaxContentLength { get; set; } = int.MaxValue; - + public static int MaxScriptLength { get; set; } = int.MaxValue; - + public static int MaxStyleLength { get; set; } = int.MaxValue; private static string _urlPrefix = "/pages/"; diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs index 6f90a74d7c..9398eeb485 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs @@ -31,7 +31,7 @@ namespace Volo.CmsKit.Public.Web.Menus if (mainMenu != null) { // TODO: Consider about not to remove existing static menus. - context.Menu.Items.Clear(); + // context.Menu.Items.Clear(); foreach (var menuItemDto in mainMenu.Items.Where(x => x.ParentId == null)) {