From 1f2e5e74cf107d80c841f20456c78e70e69b104e Mon Sep 17 00:00:00 2001 From: Enis Necipoglu Date: Wed, 18 Oct 2023 17:59:56 +0300 Subject: [PATCH] Add filtered tags to UI --- .../Public/Blogs/IBlogPostPublicAppService.cs | 3 + .../Public/Blogs/BlogPostPublicAppService.cs | 14 +++- .../Public/Blogs/BlogPostPublicController.cs | 8 +++ .../Shared/Components/Tags/Default.cshtml | 4 +- .../Pages/Public/CmsKit/Blogs/BlogPost.cshtml | 5 +- .../Pages/Public/CmsKit/Blogs/Index.cshtml | 71 +++++++++++-------- .../Pages/Public/CmsKit/Blogs/Index.cshtml.cs | 9 ++- 7 files changed, 80 insertions(+), 34 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs index dd21e2c903..c679420902 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Blogs/IBlogPostPublicAppService.cs @@ -17,5 +17,8 @@ public interface IBlogPostPublicAppService : IApplicationService Task> GetAuthorsHasBlogPostsAsync(BlogPostFilteredPagedAndSortedResultRequestDto input); Task GetAuthorHasBlogPostAsync(Guid id); + Task DeleteAsync(Guid id); + + Task GetTagNameAsync([NotNull] Guid tagId); } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs index cd346f9a21..4a9875990d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Blogs/BlogPostPublicAppService.cs @@ -12,6 +12,7 @@ using Volo.CmsKit.Blogs; using Volo.CmsKit.Contents; using Volo.CmsKit.Features; using Volo.CmsKit.GlobalFeatures; +using Volo.CmsKit.Tags; using Volo.CmsKit.Users; namespace Volo.CmsKit.Public.Blogs; @@ -24,12 +25,16 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub protected IBlogPostRepository BlogPostRepository { get; } + protected ITagRepository TagRepository { get; } + public BlogPostPublicAppService( IBlogRepository blogRepository, - IBlogPostRepository blogPostRepository) + IBlogPostRepository blogPostRepository, + ITagRepository tagRepository) { BlogRepository = blogRepository; BlogPostRepository = blogPostRepository; + TagRepository = tagRepository; } public virtual async Task GetAsync( @@ -85,4 +90,11 @@ public class BlogPostPublicAppService : CmsKitPublicAppServiceBase, IBlogPostPub await BlogPostRepository.DeleteAsync(id); } + + public async Task GetTagNameAsync([NotNull] Guid tagId) + { + var tag = await TagRepository.GetAsync(tagId); + + return tag.Name; + } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs index 4d2a336fca..d5b5768d34 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Public/Blogs/BlogPostPublicController.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using JetBrains.Annotations; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Application.Dtos; @@ -60,4 +61,11 @@ public class BlogPostPublicController : CmsKitPublicControllerBase, IBlogPostPub { return BlogPostPublicAppService.DeleteAsync(id); } + + [HttpGet] + [Route("tags/{id}")] + public Task GetTagNameAsync([NotNull] Guid tagId) + { + return BlogPostPublicAppService.GetTagNameAsync(tagId); + } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml index e9567b8b3e..27ad1fa5ac 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Tags/Default.cshtml @@ -10,14 +10,14 @@ { if (Model.UrlFormat.IsNullOrWhiteSpace()) { - + @tag.Name } else { var formattedUrl = Model.UrlFormat.Replace("{TagId}", tag.Id.ToString()).Replace("{TagName}", tag.Name); - @tag.Name + @tag.Name } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml index 319d6ad2f2..160a732359 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/BlogPost.cshtml @@ -10,6 +10,7 @@ @using Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Tags @using Volo.Abp.AspNetCore.Mvc.UI.Packages.HighlightJs @using Volo.CmsKit.Contents +@using Volo.CmsKit.Web @using Volo.CmsKit.Web.Pages.CmsKit.Components.Contents @inherits CmsKitPublicPageBase @@ -62,7 +63,7 @@

@Model.ViewModel.Title

- + @@@Model.ViewModel.Author?.UserName @Model.ViewModel.CreationTime @@ -89,7 +90,7 @@ { entityType = Volo.CmsKit.Blogs.BlogPostConsts.EntityType, entityId = Model.ViewModel.Id.ToString(), - urlFormat = $"/blogs/{Model.BlogSlug}?tagId={{TagId}}" + urlFormat = $"/{CmsBlogsWebConsts.BlogsRoutePrefix}/{Model.BlogSlug}?tagId={{TagId}}" }) } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml index 060f0c5c95..54211d7c40 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml @@ -2,18 +2,19 @@ @using Volo.CmsKit.Public.Web.Pages @using Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs +@using Volo.CmsKit.Web @inherits CmsKitPublicPageBase @model IndexModel -@section styles{ - +@section styles { + } @section scripts { - + } @@ -21,29 +22,43 @@ const string dummyImageSource = "https://dummyimage.com/320x180/a3a3a3/fff.png"; } - - -

- +@if (Model.AuthorId.HasValue) +{ + + +
+ - + + @if (Model.SelectedAuthor != null) + { + + } + +
+
+
+
+} + +@if (Model.TagId.HasValue) +{ +

@L["Tags"]

+ @Model.FilteredTagName + + +
+} - @if(Model.SelectedAuthor != null) - { - - } - -
- - @foreach (var blog in Model.Blogs.Items) { @@ -51,11 +66,11 @@ @if (blog.CoverImageMediaId != null) { - + } else { - + }
@blog.Title
@@ -65,7 +80,7 @@

@blog.ShortDescription

@@ -76,6 +91,6 @@
- + diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs index 7feab76946..e47dd40816 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKit/Blogs/Index.cshtml.cs @@ -31,6 +31,8 @@ public class IndexModel : CmsKitPublicPageModelBase public CmsUserDto SelectedAuthor { get; protected set; } + public string FilteredTagName { get; protected set; } + protected IBlogPostPublicAppService BlogPostPublicAppService { get; } public IndexModel(IBlogPostPublicAppService blogPostPublicAppService) @@ -54,7 +56,12 @@ public class IndexModel : CmsKitPublicPageModelBase { SelectedAuthor = await BlogPostPublicAppService.GetAuthorHasBlogPostAsync(AuthorId.Value); } - + + if (TagId is not null) + { + FilteredTagName = await BlogPostPublicAppService.GetTagNameAsync(TagId.Value); + } + return Page(); } }