mirror of https://github.com/abpframework/abp.git
14 changed files with 267 additions and 19 deletions
@ -0,0 +1,15 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.Application.Services; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public interface IMenuAdminAppService : ICrudAppService<MenuDto, Guid, PagedAndSortedResultRequestDto, MenuCreateInput> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public class MenuCreateInput |
|||
{ |
|||
public List<MenuItemCreateInput> Items { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public class MenuDto : FullAuditedEntityDto<Guid> |
|||
{ |
|||
public List<MenuItemDto> Items { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,40 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public class MenuItemCreateInput |
|||
{ |
|||
public Guid MenuId { get; set; } |
|||
|
|||
public Guid? ParentMenuId { get; set; } |
|||
|
|||
[Required] |
|||
public string DisplayName { get; set; } |
|||
|
|||
public bool IsActive { get; set; } |
|||
|
|||
[Required] |
|||
public string Url { get; set; } |
|||
|
|||
public string Icon { get; set; } |
|||
|
|||
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; } |
|||
|
|||
public Guid? PageId { get; set; } |
|||
|
|||
public List<MenuItemCreateInput> MenuItems { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using Volo.Abp.Application.Dtos; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public class MenuItemDto : AuditedEntityDto<Guid> |
|||
{ |
|||
public Guid MenuId { get; set; } |
|||
public Guid? ParentMenuId { get; set; } |
|||
public string DisplayName { get; set; } |
|||
public bool IsActive { get; set; } |
|||
public string Url { get; set; } |
|||
public string Icon { get; set; } |
|||
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; } |
|||
|
|||
public List<MenuItemDto> SubMenuItems { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,101 @@ |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Runtime.InteropServices.ComTypes; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Dtos; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.CmsKit.GlobalFeatures; |
|||
using Volo.CmsKit.Menus; |
|||
using Volo.CmsKit.Pages; |
|||
using Volo.CmsKit.Permissions; |
|||
|
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
[RequiresGlobalFeature(typeof(MenuFeature))] |
|||
[Authorize(CmsKitAdminPermissions.Menus.Default)] |
|||
public class MenuAdminAppService : CmsKitAdminAppServiceBase, IMenuAdminAppService |
|||
{ |
|||
protected MenuManager MenuManager { get; } |
|||
protected IMenuRepository MenuRepository { get; } |
|||
protected IPageRepository PageRepository { get; } |
|||
|
|||
public MenuAdminAppService( |
|||
MenuManager menuManager, |
|||
IMenuRepository menuRepository, |
|||
IPageRepository pageRepository) |
|||
{ |
|||
MenuManager = menuManager; |
|||
MenuRepository = menuRepository; |
|||
PageRepository = pageRepository; |
|||
} |
|||
|
|||
|
|||
[Authorize(CmsKitAdminPermissions.Menus.Create)] |
|||
public async Task<MenuDto> CreateAsync(MenuCreateInput input) |
|||
{ |
|||
var menu = ObjectMapper.Map<MenuCreateInput, Menu>(input); |
|||
|
|||
foreach (var item in input.Items) |
|||
{ |
|||
menu.Items.Add(await MapToMenuItemAsync(item)); |
|||
} |
|||
|
|||
await MenuRepository.InsertAsync(menu); |
|||
|
|||
return ObjectMapper.Map<Menu, MenuDto>(menu); |
|||
} |
|||
|
|||
private async Task<MenuItem> MapToMenuItemAsync(MenuItemCreateInput dto) |
|||
{ |
|||
var menuItem = new MenuItem( |
|||
GuidGenerator.Create(), |
|||
dto.MenuId, |
|||
dto.DisplayName, |
|||
dto.Url, |
|||
dto.IsActive, |
|||
dto.ParentMenuId) |
|||
|
|||
menuItem.SetDisplayName(dto.DisplayName); |
|||
menuItem.SetUrl(dto.Url); |
|||
|
|||
if (dto.PageId.HasValue) |
|||
{ |
|||
var page = await PageRepository.GetAsync(dto.PageId.Value, includeDetails: false); |
|||
|
|||
MenuManager.SetPageUrl(menuItem, page); |
|||
} |
|||
|
|||
foreach (var item in dto.MenuItems) |
|||
{ |
|||
menuItem.MenuItems.Add(await MapToMenuItemAsync(item)); |
|||
} |
|||
|
|||
return menuItem; |
|||
} |
|||
|
|||
[Authorize(CmsKitAdminPermissions.Menus.Delete)] |
|||
public Task DeleteAsync(Guid id) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
|
|||
public Task<MenuDto> GetAsync(Guid id) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
|
|||
public Task<PagedResultDto<MenuDto>> GetListAsync(PagedAndSortedResultRequestDto input) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
|
|||
[Authorize(CmsKitAdminPermissions.Menus.Update)] |
|||
public Task<MenuDto> UpdateAsync(Guid id, MenuCreateInput input) |
|||
{ |
|||
throw new NotImplementedException(); |
|||
} |
|||
} |
|||
} |
|||
@ -1,22 +1,26 @@ |
|||
{ |
|||
"culture": "de-DE", |
|||
"texts": { |
|||
"PickYourReaction": "Wählen Sie Ihre Reaktion", |
|||
"YourComment": "Ihr Kommentar", |
|||
"YourReply": "Ihre Antwort", |
|||
"CommentAuthorizationExceptionMessage": "Diese Kommentare dürfen nicht öffentlich angezeigt werden.", |
|||
"Comments": "Kommentare", |
|||
"Send": "Senden", |
|||
"Delete": "Löschen", |
|||
"Reply": "Antworten", |
|||
"Update": "Aktualisieren", |
|||
"Edit": "Bearbeiten", |
|||
"LoginToAddComment": "Melden Sie sich an, um zu Kommentieren", |
|||
"LoginToRate": "Melden Sie sich an, um zu Bewerten", |
|||
"LoginToReply": "Melden Sie sich an, um zu Antworten", |
|||
"MessageDeletionConfirmationMessage": "Dieser Kommentar wird vollständig gelöscht.", |
|||
"CommentAuthorizationExceptionMessage": "Diese Kommentare dürfen nicht öffentlich angezeigt werden.", |
|||
"Undo": "Rüchkängig machen", |
|||
"Permission:Menus": "Menüverwaltung", |
|||
"Permission:Menus.Create": "Erstellen", |
|||
"Permission:Menus.Delete": "Löschen", |
|||
"Permission:Menus.Update": "Aktualisieren", |
|||
"PickYourReaction": "Wählen Sie Ihre Reaktion", |
|||
"RatingUndoMessage": "Ihre Bewertung wird rückgängig gemacht.", |
|||
"LoginToRate": "Melden Sie sich an, um zu Bewerten", |
|||
"Star": "Stern" |
|||
"Reply": "Antworten", |
|||
"Send": "Senden", |
|||
"Star": "Stern", |
|||
"Undo": "Rüchkängig machen", |
|||
"Update": "Aktualisieren", |
|||
"YourComment": "Ihr Kommentar", |
|||
"YourReply": "Ihre Antwort" |
|||
} |
|||
} |
|||
Loading…
Reference in new issue