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", |
"culture": "de-DE", |
||||
"texts": { |
"texts": { |
||||
"PickYourReaction": "Wählen Sie Ihre Reaktion", |
"CommentAuthorizationExceptionMessage": "Diese Kommentare dürfen nicht öffentlich angezeigt werden.", |
||||
"YourComment": "Ihr Kommentar", |
|
||||
"YourReply": "Ihre Antwort", |
|
||||
"Comments": "Kommentare", |
"Comments": "Kommentare", |
||||
"Send": "Senden", |
|
||||
"Delete": "Löschen", |
"Delete": "Löschen", |
||||
"Reply": "Antworten", |
|
||||
"Update": "Aktualisieren", |
|
||||
"Edit": "Bearbeiten", |
"Edit": "Bearbeiten", |
||||
"LoginToAddComment": "Melden Sie sich an, um zu Kommentieren", |
"LoginToAddComment": "Melden Sie sich an, um zu Kommentieren", |
||||
|
"LoginToRate": "Melden Sie sich an, um zu Bewerten", |
||||
"LoginToReply": "Melden Sie sich an, um zu Antworten", |
"LoginToReply": "Melden Sie sich an, um zu Antworten", |
||||
"MessageDeletionConfirmationMessage": "Dieser Kommentar wird vollständig gelöscht.", |
"MessageDeletionConfirmationMessage": "Dieser Kommentar wird vollständig gelöscht.", |
||||
"CommentAuthorizationExceptionMessage": "Diese Kommentare dürfen nicht öffentlich angezeigt werden.", |
"Permission:Menus": "Menüverwaltung", |
||||
"Undo": "Rüchkängig machen", |
"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.", |
"RatingUndoMessage": "Ihre Bewertung wird rückgängig gemacht.", |
||||
"LoginToRate": "Melden Sie sich an, um zu Bewerten", |
"Reply": "Antworten", |
||||
"Star": "Stern" |
"Send": "Senden", |
||||
|
"Star": "Stern", |
||||
|
"Undo": "Rüchkängig machen", |
||||
|
"Update": "Aktualisieren", |
||||
|
"YourComment": "Ihr Kommentar", |
||||
|
"YourReply": "Ihre Antwort" |
||||
} |
} |
||||
} |
} |
||||
Loading…
Reference in new issue