Merge pull request #7335 from abpframework/cotur/cms-kit/page

Added Routing to Cms-Kit Page
pull/7363/head
İlkay İlknur 5 years ago committed by GitHub
commit 3741d3557d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -5,6 +5,6 @@ namespace Volo.CmsKit.Public.Pages
{
public interface IPageAppService
{
Task<PageDto> GetByUrlAsync([NotNull] string url);
Task<PageDto> FindByUrlAsync([NotNull] string url);
}
}

@ -12,9 +12,14 @@ namespace Volo.CmsKit.Public.Pages
PageRepository = pageRepository;
}
public virtual async Task<PageDto> GetByUrlAsync(string url)
public virtual async Task<PageDto> FindByUrlAsync(string url)
{
var page = await PageRepository.GetByUrlAsync(url);
var page = await PageRepository.FindByUrlAsync(url);
if (page == null)
{
return null;
}
return ObjectMapper.Map<Page, PageDto>(page);
}

@ -7,7 +7,7 @@ namespace Volo.CmsKit.Public.Pages
[RemoteService(Name = CmsKitPublicRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
[Route("api/cms-kit-public/comments")]
public class PagesPublicController
public class PagesPublicController : IPageAppService
{
protected readonly IPageAppService PageAppService;
@ -18,9 +18,9 @@ namespace Volo.CmsKit.Public.Pages
[HttpGet]
[Route("url/{url}")]
public Task<PageDto> GetByUrlAsync(string url)
public Task<PageDto> FindByUrlAsync(string url)
{
return PageAppService.GetByUrlAsync(url);
return PageAppService.FindByUrlAsync(url);
}
}
}

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Linq;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AutoMapper;
@ -56,7 +57,7 @@ namespace Volo.CmsKit.Public.Web
Configure<RazorPagesOptions>(options =>
{
//...
options.Conventions.AddPageRoute("/CmsKit/Pages/Index", "/{*pageUrl}");
});
}
}

@ -1,4 +1,4 @@
@page "{pageUrl}"
@page "{*pageUrl}"
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.CmsKit.Localization
@using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Pages

@ -19,9 +19,16 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Pages
PageAppService = pageAppService;
}
public async Task OnGetAsync()
public async Task<IActionResult> OnGetAsync()
{
Page = await PageAppService.GetByUrlAsync(PageUrl);
Page = await PageAppService.FindByUrlAsync(PageUrl);
if (Page == null)
{
return NotFound();
}
return Page();
}
}
}

@ -2,6 +2,7 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Domain.Entities;
using Volo.CmsKit.Public.Contents;
using Volo.CmsKit.Web.Contents;
@ -25,18 +26,26 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Contents
string entityType,
string entityId)
{
var content = await contentAppService.GetAsync(new GetContentInput
var content = string.Empty;
try
{
EntityId = entityId,
EntityType = entityType
});
var contentDto = await contentAppService.GetAsync(new GetContentInput
{
EntityId = entityId,
EntityType = entityType
});
content = contentDto.Value;
}
catch (EntityNotFoundException e)
{
// ContentDto can be null, we will render empty content.
}
var viewModel = new ContentViewModel
{
EntityId = entityId,
EntityType = entityType,
ContentId = content.Id,
Rendered = await contentRenderer.RenderAsync(content.Value)
Value = await contentRenderer.RenderAsync(content)
};
return View("~/Pages/CmsKit/Shared/Components/Contents/Default.cshtml", viewModel);
@ -44,12 +53,7 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Contents
public class ContentViewModel
{
public Guid ContentId { get; set; }
public string EntityType { get; set; }
public string EntityId { get; set; }
public string Rendered { get; set; }
public string Value { get; set; }
}
}
}

@ -1,3 +1,3 @@
@model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Contents.ContentViewComponent.ContentViewModel
@Html.Raw(Model.Rendered)
@Html.Raw(Model.Value)

@ -1,16 +1,16 @@
@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap
@using Microsoft.AspNetCore.Mvc.RazorPages
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Contents
@model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Pages.PageViewModel
@inject IPageLayout PageLayout
@{
PageLayout.Content.Title = Model.Title;
}
<abp-card>
<abp-card-header>
<h3>
@Model.Title
</h3>
</abp-card-header>
<abp-card-body>
@await Component.InvokeAsync(typeof(ContentViewComponent),
new

@ -18,15 +18,20 @@ namespace Volo.CmsKit.Pages
}
[Fact]
public async Task ShouldGetByUrlAsync()
public async Task ShouldFindByUrlAsync()
{
await Should.NotThrowAsync(async () => await _pageAppService.GetByUrlAsync(_data.Page_1_Url));
var page = await _pageAppService.FindByUrlAsync(_data.Page_1_Url);
page.ShouldNotBeNull();
page.Title.ShouldBe(_data.Page_1_Title);
}
[Fact]
public async Task ShouldNotGetByUrlAsync()
{
await Should.ThrowAsync<Exception>(async () => await _pageAppService.GetByUrlAsync("not-exist-url"));
var page = await _pageAppService.FindByUrlAsync("not-exist-url");
page.ShouldBeNull();
}
}
}
Loading…
Cancel
Save