Browse Source

CmsKit - Draft design for Menu Appservices

pull/9261/head
enisn 5 years ago
parent
commit
623d6e3e10
  1. 15
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/IMenuAdminAppService.cs
  2. 13
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs
  3. 14
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs
  4. 40
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs
  5. 23
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemDto.cs
  6. 8
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs
  7. 10
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs
  8. 101
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuAdminAppService.cs
  9. 24
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json
  10. 4
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en-GB.json
  11. 10
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json
  12. 16
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json
  13. 4
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json
  14. 4
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json

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

@ -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>
{
}
}

13
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs

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

14
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuDto.cs

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

40
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs

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

23
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemDto.cs

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

8
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs

@ -52,5 +52,13 @@ namespace Volo.CmsKit.Permissions
public const string Update = Default + ".Update"; public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete"; public const string Delete = Default + ".Delete";
} }
public static class Menus
{
public const string Default = GroupName + ".Menus";
public const string Create = Default + ".Create";
public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete";
}
} }
} }

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

@ -11,6 +11,8 @@ using Volo.CmsKit.MediaDescriptors;
using Volo.CmsKit.Pages; using Volo.CmsKit.Pages;
using Volo.CmsKit.Tags; using Volo.CmsKit.Tags;
using Volo.CmsKit.Users; using Volo.CmsKit.Users;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Admin.Menus;
namespace Volo.CmsKit.Admin namespace Volo.CmsKit.Admin
{ {
@ -39,6 +41,14 @@ namespace Volo.CmsKit.Admin
CreateMap<Tag, TagDto>(); CreateMap<Tag, TagDto>();
CreateMap<MediaDescriptor, MediaDescriptorDto>(); CreateMap<MediaDescriptor, MediaDescriptorDto>();
CreateMap<Menu, MenuDto>();
CreateMap<MenuItem, MenuItemDto>();
CreateMap<MenuCreateInput, Menu>()
.Ignore(d => d.Items);
CreateMap<MenuItemCreateInput, MenuItem>();
} }
} }
} }

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

@ -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();
}
}
}

24
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/de-DE.json

@ -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"
} }
} }

4
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en-GB.json

@ -14,6 +14,10 @@
"Permission:TagManagement.Create": "Create Tag", "Permission:TagManagement.Create": "Create Tag",
"Permission:TagManagement.Delete": "Delete Tag", "Permission:TagManagement.Delete": "Delete Tag",
"Permission:TagManagement.Update": "Update Tag", "Permission:TagManagement.Update": "Update Tag",
"Permission:Menus": "Menu Management",
"Permission:Menus.Create": "Create",
"Permission:Menus.Delete": "Delete",
"Permission:Menus.Update": "Update",
"PickYourReaction": "Pick your reaction", "PickYourReaction": "Pick your reaction",
"RatingUndoMessage": "Your rating will be undone.", "RatingUndoMessage": "Your rating will be undone.",
"Reply": "Reply", "Reply": "Reply",

10
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json

@ -45,6 +45,7 @@
"Features": "Features", "Features": "Features",
"GenericDeletionConfirmationMessage": "Are you sure to delete '{0}'?", "GenericDeletionConfirmationMessage": "Are you sure to delete '{0}'?",
"LastModification": "Last Modification", "LastModification": "Last Modification",
"LastModificationTime": "Last Modification Time",
"LoginToAddComment": "Login to add comment", "LoginToAddComment": "Login to add comment",
"LoginToRate": "Login to rate", "LoginToRate": "Login to rate",
"LoginToReact": "Login to react", "LoginToReact": "Login to react",
@ -52,9 +53,9 @@
"Menu:CMS": "CMS", "Menu:CMS": "CMS",
"Message": "Message", "Message": "Message",
"MessageDeletionConfirmationMessage": "This comment will be deleted completely.", "MessageDeletionConfirmationMessage": "This comment will be deleted completely.",
"NewPage": "New Page",
"NewBlog": "New Blog", "NewBlog": "New Blog",
"NewBlogPost": "New Blog Post", "NewBlogPost": "New Blog Post",
"NewPage": "New Page",
"NewTag": "New Tag", "NewTag": "New Tag",
"OK": "OK", "OK": "OK",
"PageDeletionConfirmationMessage": "Are you sure to delete this page?", "PageDeletionConfirmationMessage": "Are you sure to delete this page?",
@ -79,6 +80,10 @@
"Permission:MediaDescriptorManagement": "Media Management", "Permission:MediaDescriptorManagement": "Media Management",
"Permission:MediaDescriptorManagement:Create": "Create", "Permission:MediaDescriptorManagement:Create": "Create",
"Permission:MediaDescriptorManagement:Delete": "Delete", "Permission:MediaDescriptorManagement:Delete": "Delete",
"Permission:Menus": "Menu Management",
"Permission:Menus.Create": "Create",
"Permission:Menus.Delete": "Delete",
"Permission:Menus.Update": "Update",
"Permission:PageManagement": "Page Management", "Permission:PageManagement": "Page Management",
"Permission:PageManagement:Create": "Create", "Permission:PageManagement:Create": "Create",
"Permission:PageManagement:Delete": "Delete", "Permission:PageManagement:Delete": "Delete",
@ -129,7 +134,6 @@
"YourEmailAddress": "Your e-mail address", "YourEmailAddress": "Your e-mail address",
"YourFullName": "Your full name", "YourFullName": "Your full name",
"YourMessage": "Your Message", "YourMessage": "Your Message",
"YourReply": "Your reply", "YourReply": "Your reply"
"LastModificationTime": "Last Modification Time"
} }
} }

16
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json

@ -9,9 +9,6 @@
"Blogs": "Bloglar", "Blogs": "Bloglar",
"ChoosePreference": "Tercih seçiniz...", "ChoosePreference": "Tercih seçiniz...",
"Cms": "CMS", "Cms": "CMS",
"Content": "İçerik",
"Script": "Script Kodları",
"Style": "Stil Kodları",
"CmsKit.Comments": "Yorumlar", "CmsKit.Comments": "Yorumlar",
"CmsKit.Ratings": "Puanlama", "CmsKit.Ratings": "Puanlama",
"CmsKit.Reactions": "Tepkiler", "CmsKit.Reactions": "Tepkiler",
@ -28,6 +25,7 @@
"CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir.", "CommentAuthorizationExceptionMessage": "Bu yorumları görebilmek için yetki gerekir.",
"CommentDeletionConfirmationMessage": "Bu yorum ve buna yapılan tüm yorumlan silinecektir!", "CommentDeletionConfirmationMessage": "Bu yorum ve buna yapılan tüm yorumlan silinecektir!",
"Comments": "Yorumlar", "Comments": "Yorumlar",
"Content": "İçerik",
"ContentDeletionConfirmationMessage": "Bu içeriği gerçekten silmek istediğinize emin misiniz?", "ContentDeletionConfirmationMessage": "Bu içeriği gerçekten silmek istediğinize emin misiniz?",
"Contents": "İçerikler", "Contents": "İçerikler",
"CoverImage": "Kapak Resmi", "CoverImage": "Kapak Resmi",
@ -46,6 +44,7 @@
"Features": "Özellikler", "Features": "Özellikler",
"GenericDeletionConfirmationMessage": "'{0}' kaydını silmek istediğinize emin misiniz?", "GenericDeletionConfirmationMessage": "'{0}' kaydını silmek istediğinize emin misiniz?",
"LastModification": "Son Güncellenme", "LastModification": "Son Güncellenme",
"LastModificationTime": "Son Güncelleme Zamanı",
"LoginToAddComment": "Yorum yapmak için giriş yap", "LoginToAddComment": "Yorum yapmak için giriş yap",
"LoginToRate": "Oylamak için giriş yapın", "LoginToRate": "Oylamak için giriş yapın",
"LoginToReact": "Reaksiyon vermek için giriş yap", "LoginToReact": "Reaksiyon vermek için giriş yap",
@ -54,9 +53,9 @@
"Message": "Mesaj", "Message": "Mesaj",
"MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir", "MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir",
"Name": "Ad", "Name": "Ad",
"NewPage": "Yeni Sayfa",
"NewBlog": "Yeni Blog", "NewBlog": "Yeni Blog",
"NewBlogPost": "Yeni Blog Yazısı", "NewBlogPost": "Yeni Blog Yazısı",
"NewPage": "Yeni Sayfa",
"NewTag": "Yeni Etiket", "NewTag": "Yeni Etiket",
"OK": "Tamam", "OK": "Tamam",
"PageDeletionConfirmationMessage": "Bu sayfayı silmek istediğinize emin misiniz?", "PageDeletionConfirmationMessage": "Bu sayfayı silmek istediğinize emin misiniz?",
@ -75,6 +74,10 @@
"Permission:Contents.Create": "İçerik Oluşturma", "Permission:Contents.Create": "İçerik Oluşturma",
"Permission:Contents.Delete": "İçerik Silme", "Permission:Contents.Delete": "İçerik Silme",
"Permission:Contents.Update": "İçerik Güncelleme", "Permission:Contents.Update": "İçerik Güncelleme",
"Permission:Menus": "Menü Yönetimi",
"Permission:Menus.Create": "Menü Oluşturma",
"Permission:Menus.Delete": "Menü Silme",
"Permission:Menus.Update": "Menü Güncelleme",
"Permission:TagManagement": "Etiket Yönetimi", "Permission:TagManagement": "Etiket Yönetimi",
"Permission:TagManagement.Create": "Etiket Oluşturma", "Permission:TagManagement.Create": "Etiket Oluşturma",
"Permission:TagManagement.Delete": "Etiket Silme", "Permission:TagManagement.Delete": "Etiket Silme",
@ -89,6 +92,7 @@
"ReplyTo": "Cevap", "ReplyTo": "Cevap",
"SamplePageMessage": "Pro modulünden örnek bir sayfa", "SamplePageMessage": "Pro modulünden örnek bir sayfa",
"SaveChanges": "Değişiklikleri Kaydet", "SaveChanges": "Değişiklikleri Kaydet",
"Script": "Script Kodları",
"SelectAll": "Hepsini seç", "SelectAll": "Hepsini seç",
"Send": "Gönder", "Send": "Gönder",
"SendMessage": "Mesajı Gönder", "SendMessage": "Mesajı Gönder",
@ -98,6 +102,7 @@
"SourceUrl": "Kaynak Link", "SourceUrl": "Kaynak Link",
"Star": "Yıldız", "Star": "Yıldız",
"StartDate": "Başlangıç Tarihi", "StartDate": "Başlangıç Tarihi",
"Style": "Stil Kodları",
"Subject": "Konu", "Subject": "Konu",
"SubjectPlaceholder": "Lütfen bir konu yazınız", "SubjectPlaceholder": "Lütfen bir konu yazınız",
"Submit": "Kaydet", "Submit": "Kaydet",
@ -120,7 +125,6 @@
"YourEmailAddress": "Email adresiniz", "YourEmailAddress": "Email adresiniz",
"YourFullName": "Tam adınız", "YourFullName": "Tam adınız",
"YourMessage": "Mesajınız", "YourMessage": "Mesajınız",
"YourReply": "Cevabınız", "YourReply": "Cevabınız"
"LastModificationTime": "Son Güncelleme Zamanı"
} }
} }

4
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hans.json

@ -72,6 +72,10 @@
"Permission:MediaDescriptorManagement": "媒体管理", "Permission:MediaDescriptorManagement": "媒体管理",
"Permission:MediaDescriptorManagement:Create": "创建", "Permission:MediaDescriptorManagement:Create": "创建",
"Permission:MediaDescriptorManagement:Delete": "删除", "Permission:MediaDescriptorManagement:Delete": "删除",
"Permission:Menus": "Menu Management",
"Permission:Menus.Create": "Create",
"Permission:Menus.Delete": "Delete",
"Permission:Menus.Update": "Update",
"Permission:PageManagement": "页面管理", "Permission:PageManagement": "页面管理",
"Permission:PageManagement:Create": "创建", "Permission:PageManagement:Create": "创建",
"Permission:PageManagement:Delete": "删除", "Permission:PageManagement:Delete": "删除",

4
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/zh-Hant.json

@ -73,6 +73,10 @@
"Permission:MediaDescriptorManagement": "媒體管理", "Permission:MediaDescriptorManagement": "媒體管理",
"Permission:MediaDescriptorManagement:Create": "創建", "Permission:MediaDescriptorManagement:Create": "創建",
"Permission:MediaDescriptorManagement:Delete": "刪除", "Permission:MediaDescriptorManagement:Delete": "刪除",
"Permission:Menus": "Menu Management",
"Permission:Menus.Create": "Create",
"Permission:Menus.Delete": "Delete",
"Permission:Menus.Update": "Update",
"Permission:PageManagement": "頁面管理", "Permission:PageManagement": "頁面管理",
"Permission:PageManagement:Create": "創建", "Permission:PageManagement:Create": "創建",
"Permission:PageManagement:Delete": "刪除", "Permission:PageManagement:Delete": "刪除",

Loading…
Cancel
Save