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 Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Caching;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
@ -21,13 +22,17 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
protected IPageRepository PageRepository { get; }
protected PageManager PageManager { get; }
protected IDistributedCache<PageCacheItem> PageCache { get; }
public PageAdminAppService(
IPageRepository pageRepository,
PageManager pageManager)
PageManager pageManager,
IDistributedCache<PageCacheItem> pageCache)
{
PageRepository = pageRepository;
PageManager = pageManager;
PageCache = pageCache;
}
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)
{
var page = await PageRepository.GetAsync(id);
if (page.IsHomePage)
{
await InvalidateDefaultHomePageCacheAsync(considerUow: true);
}
await PageManager.SetSlugAsync(page, input.Slug);
@ -84,7 +93,13 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
[Authorize(CmsKitAdminPermissions.Pages.Delete)]
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)]
@ -93,5 +108,11 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
var page = await PageRepository.GetAsync(id);
await PageManager.SetHomePageAsync(page);
await InvalidateDefaultHomePageCacheAsync();
}
protected virtual async Task InvalidateDefaultHomePageCacheAsync(bool considerUow = false)
{
await PageCache.RemoveAsync(PageConsts.DefaultHomePageCacheKey, considerUow: considerUow);
}
}

@ -15,6 +15,8 @@ public static class PageConsts
public static int MaxScriptLength { get; set; } = int.MaxValue;
public static int MaxStyleLength { get; set; } = int.MaxValue;
public static string DefaultHomePageCacheKey { get; set; } = "DefaultHomePage";
private static string _urlPrefix = "/";
public static string 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 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;
PageManager = pageManager;
@ -30,7 +30,6 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindBySlugAsync(string slug)
{
var page = await PageRepository.FindBySlugAsync(slug);
if (page == null)
{
return null;
@ -41,8 +40,8 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
public virtual async Task<PageDto> FindDefaultHomePageAsync()
{
var pageDto = await PageCache.GetAsync("DefaultHomePage");
if (pageDto is null)
var pageCacheItem = await PageCache.GetAsync(PageConsts.DefaultHomePageCacheKey);
if (pageCacheItem is null)
{
var page = await PageManager.GetHomePageAsync();
if (page is null)
@ -50,12 +49,12 @@ public class PagePublicAppService : CmsKitPublicAppServiceBase, IPagePublicAppSe
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) });
}
return pageDto;
return ObjectMapper.Map<PageCacheItem, PageDto>(pageCacheItem);
}
}

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

Loading…
Cancel
Save