Open Source Web Application Framework for ASP.NET Core
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

81 lines
2.3 KiB

using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems;
public class CreateModalModel : CmsKitAdminPageModel
{
protected IMenuItemAdminAppService MenuAdminAppService { get; }
protected IFeatureChecker FeatureChecker { get; }
[BindProperty]
public MenuItemCreateViewModel ViewModel { get; set; }
public bool IsPageFeatureEnabled { get; set; }
public CreateModalModel(IMenuItemAdminAppService menuAdminAppService, IFeatureChecker featureChecker)
{
MenuAdminAppService = menuAdminAppService;
FeatureChecker = featureChecker;
ViewModel = new MenuItemCreateViewModel();
}
public virtual async Task OnGetAsync(Guid? parentId)
{
ViewModel.ParentId = parentId;
IsPageFeatureEnabled = GlobalFeatureManager.Instance.IsEnabled<PagesFeature>()
&& await FeatureChecker.IsEnabledAsync(CmsKitFeatures.PageEnable);
}
public virtual async Task<IActionResult> OnPostAsync()
{
ViewModel.Order = await MenuAdminAppService.GetAvailableMenuOrderAsync(ViewModel.ParentId);
var input = ObjectMapper.Map<MenuItemCreateViewModel, MenuItemCreateInput>(ViewModel);
var dto = await MenuAdminAppService.CreateAsync(input);
return new OkObjectResult(dto);
}
[AutoMap(typeof(MenuItemCreateInput), ReverseMap = true)]
public class MenuItemCreateViewModel : ExtensibleObject
{
[HiddenInput]
public Guid? ParentId { get; set; }
[Required]
public string DisplayName { get; set; }
public bool IsActive { get; set; } = true;
[Required]
public string Url { get; set; }
public Guid? PageId { get; set; }
public string Icon { get; set; }
[HiddenInput]
public int Order { get; set; }
public string Target { get; set; }
public string ElementId { get; set; }
public string CssClass { get; set; }
public string RequiredPermissionName { get; set; }
}
}