Merge pull request #15496 from abpframework/auto-merge/rel-7-0/1680

Merge branch dev with rel-7.0
pull/15506/head
Gizem Mutu Kurt 3 years ago committed by GitHub
commit e8228a6c43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Caching;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.Features; using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
@ -22,12 +23,16 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
protected PageManager PageManager { get; } protected PageManager PageManager { get; }
protected IDistributedCache<PageCacheItem> PageCache { get; }
public PageAdminAppService( public PageAdminAppService(
IPageRepository pageRepository, IPageRepository pageRepository,
PageManager pageManager) PageManager pageManager,
IDistributedCache<PageCacheItem> pageCache)
{ {
PageRepository = pageRepository; PageRepository = pageRepository;
PageManager = pageManager; PageManager = pageManager;
PageCache = pageCache;
} }
public virtual async Task<PageDto> GetAsync(Guid id) public virtual async Task<PageDto> GetAsync(Guid id)
@ -67,6 +72,10 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
public virtual async Task<PageDto> UpdateAsync(Guid id, UpdatePageInputDto input) public virtual async Task<PageDto> UpdateAsync(Guid id, UpdatePageInputDto input)
{ {
var page = await PageRepository.GetAsync(id); var page = await PageRepository.GetAsync(id);
if (page.IsHomePage)
{
await InvalidateDefaultHomePageCacheAsync(considerUow: true);
}
await PageManager.SetSlugAsync(page, input.Slug); await PageManager.SetSlugAsync(page, input.Slug);
@ -84,7 +93,13 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
[Authorize(CmsKitAdminPermissions.Pages.Delete)] [Authorize(CmsKitAdminPermissions.Pages.Delete)]
public virtual async Task DeleteAsync(Guid id) public virtual async Task DeleteAsync(Guid id)
{ {
await PageRepository.DeleteAsync(id); var page = await PageRepository.GetAsync(id);
if (page.IsHomePage)
{
await InvalidateDefaultHomePageCacheAsync(considerUow: true);
}
await PageRepository.DeleteAsync(page);
} }
[Authorize(CmsKitAdminPermissions.Pages.SetAsHomePage)] [Authorize(CmsKitAdminPermissions.Pages.SetAsHomePage)]
@ -93,5 +108,11 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
var page = await PageRepository.GetAsync(id); var page = await PageRepository.GetAsync(id);
await PageManager.SetHomePageAsync(page); await PageManager.SetHomePageAsync(page);
await InvalidateDefaultHomePageCacheAsync();
}
protected virtual async Task InvalidateDefaultHomePageCacheAsync(bool considerUow = false)
{
await PageCache.RemoveAsync(PageConsts.DefaultHomePageCacheKey, considerUow: considerUow);
} }
} }

@ -16,6 +16,8 @@ public static class PageConsts
public static int MaxStyleLength { get; set; } = int.MaxValue; public static int MaxStyleLength { get; set; } = int.MaxValue;
public static string DefaultHomePageCacheKey { get; set; } = "DefaultHomePage";
private static string _urlPrefix = "/"; private static string _urlPrefix = "/";
public static string UrlPrefix { public static string UrlPrefix {
get => _urlPrefix; get => _urlPrefix;

@ -0,0 +1,18 @@
using System;
namespace Volo.CmsKit.Pages;
public class PageCacheItem
{
public Guid Id { get; set; }
public string Title { get; set; }
public string Slug { get; set; }
public string Content { get; set; }
public string Script { get; set; }
public string Style { get; set; }
}

@ -18,9 +18,9 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
protected IPageRepository PageRepository { get; } protected IPageRepository PageRepository { get; }
protected PageManager PageManager { get; } protected PageManager PageManager { get; }
protected IDistributedCache<PageDto> PageCache { get; } protected IDistributedCache<PageCacheItem> PageCache { get; }
public PagePublicAppService(IPageRepository pageRepository, PageManager pageManager, IDistributedCache<PageDto> pageCache) public PagePublicAppService(IPageRepository pageRepository, PageManager pageManager, IDistributedCache<PageCacheItem> pageCache)
{ {
PageRepository = pageRepository; PageRepository = pageRepository;
PageManager = pageManager; PageManager = pageManager;
@ -30,7 +30,6 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindBySlugAsync(string slug) public virtual async Task<PageDto> FindBySlugAsync(string slug)
{ {
var page = await PageRepository.FindBySlugAsync(slug); var page = await PageRepository.FindBySlugAsync(slug);
if (page == null) if (page == null)
{ {
return null; return null;
@ -41,8 +40,8 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindDefaultHomePageAsync() public virtual async Task<PageDto> FindDefaultHomePageAsync()
{ {
var pageDto = await PageCache.GetAsync("DefaultHomePage"); var pageCacheItem = await PageCache.GetAsync(PageConsts.DefaultHomePageCacheKey);
if (pageDto is null) if (pageCacheItem is null)
{ {
var page = await PageManager.GetHomePageAsync(); var page = await PageManager.GetHomePageAsync();
if (page is null) if (page is null)
@ -50,12 +49,12 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
return null; return null;
} }
pageDto = ObjectMapper.Map<Page, PageDto>(page); pageCacheItem = ObjectMapper.Map<Page, PageCacheItem>(page);
await PageCache.SetAsync("DefaultHomePage", pageDto, await PageCache.SetAsync(PageConsts.DefaultHomePageCacheKey, pageCacheItem,
new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) }); new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.Now.AddHours(1) });
} }
return pageDto; return ObjectMapper.Map<PageCacheItem, PageDto>(pageCacheItem);
} }
} }

@ -30,6 +30,10 @@ public class PublicApplicationAutoMapperProfile : Profile
CreateMap<Rating, RatingDto>(); CreateMap<Rating, RatingDto>();
CreateMap<Page, PageCacheItem>();
CreateMap<PageCacheItem, PageDto>();
CreateMap<Page, PageDto>(); CreateMap<Page, PageDto>();
CreateMap<BlogPost, BlogPostCommonDto>(); CreateMap<BlogPost, BlogPostCommonDto>();

Loading…
Cancel
Save