Browse Source

CmsKit - Refactoring & Page lookup improvement

pull/9261/head
Enis Necipoğlu 5 years ago
parent
commit
94526a3f40
  1. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs
  2. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs
  3. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs
  4. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs
  5. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemMoveInput.cs
  6. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs
  7. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs
  8. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupDto.cs
  9. 11
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupInputDto.cs
  10. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/UpdateMainMenuInput.cs
  11. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/IPageAdminAppService.cs
  12. 40
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs
  13. 18
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs
  14. 8
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs
  15. 9
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Pages/PageAdminController.cs
  16. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js
  17. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js
  18. 8
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Pages/PageConsts.cs
  19. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs

3
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 MoveMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemMoveInput input);
Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input); Task UpdateMainMenuAsync(Guid menuId, UpdateMainMenuInput input);
Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync(PageLookupInputDto input);
} }
} }

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuCreateInput public class MenuCreateInput
{ {
public string Name { get; set; } public string Name { get; set; }

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuDto : EntityDto<Guid> public class MenuDto : EntityDto<Guid>
{ {
public string Name { get; set; } public string Name { get; set; }

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuItemCreateInput public class MenuItemCreateInput
{ {
public Guid MenuId { get; set; } public Guid MenuId { get; set; }

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuItemMoveInput public class MenuItemMoveInput
{ {
public Guid? NewParentId { get; set; } public Guid? NewParentId { get; set; }

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuItemUpdateInput public class MenuItemUpdateInput
{ {
[Required] [Required]

1
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class MenuUpdateInput public class MenuUpdateInput
{ {
public string Name { get; set; } public string Name { get; set; }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageLookupDto.cs → modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/PageLookupDto.cs

@ -1,7 +1,7 @@
using System; using System;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.Pages namespace Volo.CmsKit.Admin.Menus
{ {
public class PageLookupDto : EntityDto<Guid> public class PageLookupDto : EntityDto<Guid>
{ {

11
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; }
}
}

3
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 namespace Volo.CmsKit.Admin.Menus
{ {
[Serializable]
public class UpdateMainMenuInput public class UpdateMainMenuInput
{ {
public bool IsMainMenu { get; set; } public bool IsMainMenu { get; set; }

1
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<PageDto, PageDto, Guid, GetPagesInputDto, CreatePageInputDto, UpdatePageInputDto> public interface IPageAdminAppService : ICrudAppService<PageDto, PageDto, Guid, GetPagesInputDto, CreatePageInputDto, UpdatePageInputDto>
{ {
Task<PagedResultDto<PageLookupDto>> GetLookupAsync(GetPagesInputDto input);
} }
} }

40
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); var menus = await MenuRepository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, input.Sorting);
return new PagedResultDto<MenuDto>( return new PagedResultDto<MenuDto>(
await MenuRepository.GetCountAsync(), await MenuRepository.GetCountAsync(),
ObjectMapper.Map<List<Menu>, List<MenuDto>>(menus) ObjectMapper.Map<List<Menu>, List<MenuDto>>(menus)
); );
} }
public async Task<MenuWithDetailsDto> GetAsync(Guid id) public async Task<MenuWithDetailsDto> GetAsync(Guid id)
@ -87,7 +87,7 @@ namespace Volo.CmsKit.Admin.Menus
var menu = await MenuRepository.GetAsync(menuId); var menu = await MenuRepository.GetAsync(menuId);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) 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, MenuItemDto>(menuItem); return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
} }
@ -117,23 +117,24 @@ namespace Volo.CmsKit.Admin.Menus
var page = await PageRepository.GetAsync(input.PageId.Value); var page = await PageRepository.GetAsync(input.PageId.Value);
MenuManager.SetPageUrl(menuItem, page); MenuManager.SetPageUrl(menuItem, page);
} }
menu.Items.Add(menuItem); menu.Items.Add(menuItem);
MenuManager.OrganizeTreeOrderForMenuItem(menu, menuItem); MenuManager.OrganizeTreeOrderForMenuItem(menu, menuItem);
await MenuRepository.UpdateAsync(menu); await MenuRepository.UpdateAsync(menu);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem); return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
} }
[Authorize(CmsKitAdminPermissions.Menus.MenuItems.Update)] [Authorize(CmsKitAdminPermissions.Menus.MenuItems.Update)]
public virtual async Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemUpdateInput input) public virtual async Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId,
MenuItemUpdateInput input)
{ {
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true); var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) 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) if (input.PageId.HasValue)
{ {
@ -163,7 +164,7 @@ namespace Volo.CmsKit.Admin.Menus
var menu = await MenuRepository.GetAsync(menuId, includeDetails: true); var menu = await MenuRepository.GetAsync(menuId, includeDetails: true);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId) 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); menu.Items.Remove(menuItem);
@ -176,7 +177,7 @@ namespace Volo.CmsKit.Admin.Menus
return MenuManager.MoveAsync(menuId, menuItemId, input.NewParentId, input.Position); 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) if (input.IsMainMenu)
{ {
@ -187,5 +188,22 @@ namespace Volo.CmsKit.Admin.Menus
await MenuManager.UnSetMainMenuAsync(menuId); await MenuManager.UnSetMainMenuAsync(menuId);
} }
} }
public virtual async Task<PagedResultDto<PageLookupDto>> 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<PageLookupDto>(
count,
ObjectMapper.Map<List<Page>, List<PageLookupDto>>(pages)
);
}
} }
} }

18
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 Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Pages; using Volo.CmsKit.Pages;
using Volo.CmsKit.Permissions; using Volo.CmsKit.Permissions;
@ -82,22 +83,5 @@ namespace Volo.CmsKit.Admin.Pages
{ {
await PageRepository.DeleteAsync(id); await PageRepository.DeleteAsync(id);
} }
public virtual async Task<PagedResultDto<PageLookupDto>> 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<PageLookupDto>(
count,
ObjectMapper.Map<List<Page>, List<PageLookupDto>>(pages)
);
}
} }
} }

8
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); return MenuAdminAppService.UpdateMenuItemAsync(menuId, menuItemId, input);
} }
[HttpGet]
[Route("lookup/pages")]
public virtual Task<PagedResultDto<PageLookupDto>> GetPageLookupAsync([FromQuery]PageLookupInputDto input)
{
return MenuAdminAppService.GetPageLookupAsync(input);
}
} }
} }

9
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;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions; using Volo.CmsKit.Permissions;
@ -59,13 +60,5 @@ namespace Volo.CmsKit.Admin.Pages
{ {
return PageAdminAppService.DeleteAsync(id); return PageAdminAppService.DeleteAsync(id);
} }
[HttpGet]
[Route("lookup")]
[AllowAnonymous] // TODO: Find a way to get lookup
public virtual Task<PagedResultDto<PageLookupDto>> GetLookupAsync(GetPagesInputDto input)
{
return PageAdminAppService.GetLookupAsync(input);
}
} }
} }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/createModal.js

@ -35,7 +35,7 @@ $(function () {
}) })
function initSelectPageId() { 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('autocompleteDisplayProperty', 'title');
$pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteValueProperty', 'id');
$pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteItemsProperty', 'items');

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/updateModal.js

@ -35,7 +35,7 @@ $(function () {
}); });
function initSelectPageId() { 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('autocompleteDisplayProperty', 'title');
$pageId.data('autocompleteValueProperty', 'id'); $pageId.data('autocompleteValueProperty', 'id');
$pageId.data('autocompleteItemsProperty', 'items'); $pageId.data('autocompleteItemsProperty', 'items');

8
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 class PageConsts
{ {
public const string EntityType = "Page"; public const string EntityType = "Page";
public static int MaxTitleLength { get; set; } = 256; public static int MaxTitleLength { get; set; } = 256;
public static int MaxSlugLength { get; set; } = 256; public static int MaxSlugLength { get; set; } = 256;
public static int MaxContentLength { get; set; } = int.MaxValue; public static int MaxContentLength { get; set; } = int.MaxValue;
public static int MaxScriptLength { get; set; } = int.MaxValue; public static int MaxScriptLength { get; set; } = int.MaxValue;
public static int MaxStyleLength { get; set; } = int.MaxValue; public static int MaxStyleLength { get; set; } = int.MaxValue;
private static string _urlPrefix = "/pages/"; private static string _urlPrefix = "/pages/";

2
modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs

@ -31,7 +31,7 @@ namespace Volo.CmsKit.Public.Web.Menus
if (mainMenu != null) if (mainMenu != null)
{ {
// TODO: Consider about not to remove existing static menus. // 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)) foreach (var menuItemDto in mainMenu.Items.Where(x => x.ParentId == null))
{ {

Loading…
Cancel
Save