Browse Source

CmsKit - Update feature for MenuItem

pull/9261/head
Enis Necipoğlu 5 years ago
parent
commit
f208558dc9
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs
  2. 10
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs
  3. 8
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs
  4. 14
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml
  5. 25
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml
  6. 72
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs

@ -19,6 +19,8 @@ namespace Volo.CmsKit.Admin.Menus
Task DeleteAsync(Guid menuId);
Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId);
Task<MenuItemDto> CreateMenuItemAsync(Guid menuId, MenuItemCreateInput input);
Task<MenuItemDto> UpdateMenuItemAsync(Guid menuId, Guid menuItemId, MenuItemUpdateInput input);

10
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs

@ -83,6 +83,16 @@ namespace Volo.CmsKit.Admin.Menus
return MenuRepository.DeleteAsync(menuId);
}
public async Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId)
{
var menu = await MenuRepository.GetAsync(menuId);
var menuItem = menu.Items.FirstOrDefault(x => x.Id == menuItemId)
?? throw new EntityNotFoundException(typeof(MenuItem), menuItemId);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
}
[Authorize(CmsKitAdminPermissions.Menus.MenuItems.Create)]
public virtual async Task<MenuItemDto> CreateMenuItemAsync(Guid menuId, MenuItemCreateInput input)
{

8
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Menus/MenuAdminController.cs

@ -34,6 +34,14 @@ namespace Volo.CmsKit.Admin.Menus
return MenuAdminAppService.CreateAsync(input);
}
[Route("{menuId}/menu-items/{menuItemId}")]
[Authorize(CmsKitAdminPermissions.Menus.MenuItems.Default)]
[HttpGet]
public Task<MenuItemDto> GetMenuItemAsync(Guid menuId, Guid menuItemId)
{
return MenuAdminAppService.GetMenuItemAsync(menuId, menuItemId);
}
[Route("{menuId}/menu-items")]
[HttpPost]
[Authorize(CmsKitAdminPermissions.Menus.MenuItems.Create)]

14
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/Index.cshtml

@ -11,7 +11,7 @@
@model IndexModel
@{
PageLayout.Content.Title = L["MenuItems"].Value;
PageLayout.Content.Title = @Model.Menu.Name + " - " + L["MenuItems"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:CMS"].Value);
PageLayout.Content.BreadCrumb.Add(L["Menu:Menus"].Value, "/Cms/Menus");
PageLayout.Content.MenuItemName = CmsKitAdminMenus.Menus.MenusMenu;
@ -19,27 +19,27 @@
@section styles {
<abp-style-bundle name="@typeof(IndexModel).FullName">
<abp-style type="typeof(JsTreeStyleContributor)" />
<abp-script src="/Pages/CmsKit/Menus/MenuItems/index.css" />
<abp-style type="typeof(JsTreeStyleContributor)"/>
<abp-script src="/Pages/CmsKit/Menus/MenuItems/index.css"/>
</abp-style-bundle>
}
@section scripts {
<abp-script-bundle name="@typeof(IndexModel).FullName">
<abp-style type="typeof(JsTreeScriptContributor)" />
<abp-script src="/Pages/CmsKit/Menus/MenuItems/index.js" />
<abp-style type="typeof(JsTreeScriptContributor)"/>
<abp-script src="/Pages/CmsKit/Menus/MenuItems/index.js"/>
</abp-script-bundle>
}
@section content_toolbar {
@await Component.InvokeAsync(typeof(AbpPageToolbarViewComponent), new { pageName = typeof(IndexModel).FullName })
@await Component.InvokeAsync(typeof(AbpPageToolbarViewComponent), new {pageName = typeof(IndexModel).FullName})
}
<div id="CmsKitMenuItemsWrapper" data-menu-id="@Model.Id">
<abp-card>
<abp-card-body>
<abp-card-title>
@Model.Menu.Name @L["MenuItems"]
@Model.Menu.Name
</abp-card-title>
<div id="MenuItemsEditTree"></div>

25
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml

@ -0,0 +1,25 @@
@page
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@inherits CmsKitAdminPageBase
@model UpdateModalModel
@{
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/Menus/MenuItems/UpdateModal">
<abp-modal>
<abp-modal-header title="@L["New"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="MenuId"/>
<abp-input asp-for="Id"/>
<abp-form-content/>
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>

72
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs

@ -0,0 +1,72 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Volo.CmsKit.Admin.Menus;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
{
public class UpdateModalModel : CmsKitAdminPageModel
{
protected IMenuAdminAppService MenuAdminAppService { get; }
public UpdateModalModel(IMenuAdminAppService menuAdminAppService)
{
MenuAdminAppService = menuAdminAppService;
}
[BindProperty]
public MenuItemUpdateViewModel ViewModel { get; set; }
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid MenuId { get; set; }
[HiddenInput]
[BindProperty(SupportsGet = true)]
public Guid Id { get; set; }
public async Task OnGetAsync()
{
var menuItemDto = await MenuAdminAppService.GetMenuItemAsync(MenuId, Id);
ViewModel = ObjectMapper.Map<MenuItemDto, MenuItemUpdateViewModel>(menuItemDto);
}
public async Task<IActionResult> OnPostAsync()
{
var input = ObjectMapper.Map<MenuItemUpdateViewModel, MenuItemUpdateInput>(ViewModel);
var result = await MenuAdminAppService.UpdateMenuItemAsync(MenuId, Id, input);
return new OkObjectResult(result);
}
[AutoMap(typeof(MenuItemDto))]
[AutoMap(typeof(MenuItemUpdateInput), ReverseMap = true)]
public class MenuItemUpdateViewModel
{
[Required]
public string DisplayName { get; set; }
public bool IsActive { get; set; }
[Required]
public string Url { get; set; }
public string Icon { get; set; }
public string Target { get; set; }
public string ElementId { get; set; }
public string CssClass { get; set; }
public string RequiredPermissionName { get; set; }
public Guid? PageId { get; set; }
}
}
}
Loading…
Cancel
Save