Browse Source

cmskit - implement concurrency stamp

pull/9838/head
enisn 5 years ago
parent
commit
aab8498f24
  1. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs
  2. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs
  3. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs
  4. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs
  5. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs
  6. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs
  7. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs
  8. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs
  9. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs
  10. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs
  11. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs
  12. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs
  13. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs
  14. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs
  15. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs
  16. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml
  17. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs
  18. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml
  19. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml.cs
  20. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml.cs
  21. 15
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs
  22. 5
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs
  23. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/Comment.cs
  24. 10
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs
  25. 5
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs
  26. 5
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs
  27. 5
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs
  28. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs
  29. 7
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml
  30. 3
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs

@ -1,13 +1,15 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Blogs
{
[Serializable]
public class BlogDto : EntityDto<Guid>
public class BlogDto : EntityDto<Guid>, IHasConcurrencyStamp
{
public string Name { get; set; }
public string Slug { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs

@ -1,11 +1,12 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Auditing;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Blogs
{
[Serializable]
public class BlogPostDto : EntityDto<Guid>, IHasCreationTime, IHasModificationTime
public class BlogPostDto : EntityDto<Guid>, IHasCreationTime, IHasModificationTime, IHasConcurrencyStamp
{
public Guid BlogId { get; set; }
@ -22,5 +23,7 @@ namespace Volo.CmsKit.Admin.Blogs
public DateTime CreationTime { get; set; }
public DateTime? LastModificationTime { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs

@ -1,10 +1,11 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs
{
public class UpdateBlogDto
public class UpdateBlogDto : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]
@ -13,5 +14,7 @@ namespace Volo.CmsKit.Admin.Blogs
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxSlugLength))]
public string Slug { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs

@ -1,12 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs
{
[Serializable]
public class UpdateBlogPostDto
public class UpdateBlogPostDto : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogPostConsts), nameof(BlogPostConsts.MaxTitleLength))]
@ -23,5 +24,7 @@ namespace Volo.CmsKit.Admin.Blogs
public string Content { get; set; }
public Guid? CoverImageMediaId { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs

@ -1,10 +1,11 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Menus
{
[Serializable]
public class MenuItemUpdateInput
public class MenuItemUpdateInput : IHasConcurrencyStamp
{
[Required]
public string DisplayName { get; set; }
@ -22,5 +23,7 @@ namespace Volo.CmsKit.Admin.Menus
public string CssClass { get; set; }
public Guid? PageId { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs

@ -1,10 +1,11 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Pages
{
[Serializable]
public class PageDto : AuditedEntityDto<Guid>
public class PageDto : AuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public string Title { get; set; }
@ -15,5 +16,7 @@ namespace Volo.CmsKit.Admin.Pages
public string Script { get; set; }
public string Style { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs

@ -1,12 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Admin.Pages
{
[Serializable]
public class UpdatePageInputDto
public class UpdatePageInputDto : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]
@ -15,7 +16,7 @@ namespace Volo.CmsKit.Admin.Pages
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxSlugLength))]
public string Slug { get; set; }
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxContentLength))]
public string Content { get; set; }
@ -24,5 +25,7 @@ namespace Volo.CmsKit.Admin.Pages
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxStyleLength))]
public string Style { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs

@ -1,15 +1,18 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Admin.Tags
{
[Serializable]
public class TagUpdateDto
public class TagUpdateDto : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))]
public string Name { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs

@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Blogs;
using Volo.CmsKit.GlobalFeatures;
@ -67,6 +68,8 @@ namespace Volo.CmsKit.Admin.Blogs
blog = await BlogManager.UpdateAsync(blog, input.Name, input.Slug);
blog.SetConcurrencyStamp(input.ConcurrencyStamp);
await BlogRepository.UpdateAsync(blog);
return ObjectMapper.Map<Blog, BlogDto>(blog);

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

@ -1,9 +1,9 @@
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Users;
using Volo.CmsKit.Blogs;
@ -63,6 +63,7 @@ namespace Volo.CmsKit.Admin.Blogs
blogPost.SetTitle(input.Title);
blogPost.SetShortDescription(input.ShortDescription);
blogPost.SetContent(input.Content);
blogPost.SetConcurrencyStamp(input.ConcurrencyStamp);
blogPost.CoverImageMediaId = input.CoverImageMediaId;
if (blogPost.Slug != input.Slug)

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs

@ -5,6 +5,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
@ -87,6 +88,7 @@ namespace Volo.CmsKit.Admin.Menus
menuItem.Target = input.Target;
menuItem.ElementId = input.ElementId;
menuItem.CssClass = input.CssClass;
menuItem.SetConcurrencyStamp(input.ConcurrencyStamp);
await MenuItemRepository.UpdateAsync(menuItem);

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.GlobalFeatures;
@ -72,6 +73,7 @@ namespace Volo.CmsKit.Admin.Pages
page.SetContent(input.Content);
page.SetScript(input.Script);
page.SetStyle(input.Style);
input.SetConcurrencyStamp(input.ConcurrencyStamp);
await PageRepository.UpdateAsync(page);

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs

@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.GlobalFeatures;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
@ -53,6 +54,8 @@ namespace Volo.CmsKit.Admin.Tags
id,
input.Name);
tag.SetConcurrencyStamp(input.ConcurrencyStamp);
await Repository.UpdateAsync(tag);
return ObjectMapper.Map<Tag, TagDto>(tag);

5
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs

@ -8,6 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -56,7 +57,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts
[AutoMap(typeof(BlogPostDto))]
[AutoMap(typeof(UpdateBlogPostDto), ReverseMap = true)]
public class UpdateBlogPostViewModel
public class UpdateBlogPostViewModel : IHasConcurrencyStamp
{
[DynamicMaxLength(typeof(BlogPostConsts), nameof(BlogPostConsts.MaxTitleLength))]
[Required]
@ -79,6 +80,8 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts
[HiddenInput]
public Guid? CoverImageMediaId { get; set; }
public string ConcurrencyStamp { get; set; }
}
}
}

6
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -43,7 +44,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs
[AutoMap(typeof(BlogDto))]
[AutoMap(typeof(UpdateBlogDto), ReverseMap = true)]
public class UpdateBlogViewModel
public class UpdateBlogViewModel : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]
@ -52,6 +53,9 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxSlugLength))]
[Required]
public string Slug { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}
}

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml

@ -17,6 +17,7 @@
<abp-modal-header title="@L["New"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="Id"/>
<abp-input asp-for="ViewModel.ConcurrencyStamp"/>
<abp-tabs tab-style="Tab">
<abp-tab name="url" title="@L["Url"]">

6
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs

@ -4,6 +4,7 @@ using System.Threading.Tasks;
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Volo.Abp.Domain.Entities;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Menus;
@ -43,7 +44,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
[AutoMap(typeof(MenuItemDto))]
[AutoMap(typeof(MenuItemUpdateInput), ReverseMap = true)]
public class MenuItemUpdateViewModel
public class MenuItemUpdateViewModel : IHasConcurrencyStamp
{
[Required]
public string DisplayName { get; set; }
@ -61,6 +62,9 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
public string CssClass { get; set; }
public Guid? PageId { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}
}

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml

@ -40,6 +40,8 @@
<form asp-page="/CmsKit/Pages/Update" id="form-page-update">
<abp-input asp-for="@Model.Id" />
<abp-input asp-for="@Model.ViewModel.ConcurrencyStamp" />
<abp-input asp-for="@Model.ViewModel.Title" />
<abp-input asp-for="ViewModel.Slug" title="@L["PageSlugInformation"]" data-toggle="tooltip" />

6
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml.cs

@ -4,6 +4,7 @@ using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Pages;
using Volo.CmsKit.Pages;
@ -44,7 +45,7 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages
[AutoMap(typeof(PageDto))]
[AutoMap(typeof(UpdatePageInputDto), ReverseMap = true)]
public class UpdatePageViewModel
public class UpdatePageViewModel : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]
@ -65,6 +66,9 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages
[TextArea(Rows = 6)]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxStyleLength))]
public string Style { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}
}

6
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml.cs

@ -6,6 +6,7 @@ using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Tags;
using Volo.CmsKit.Tags;
@ -44,11 +45,14 @@ namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags
[AutoMap(typeof(TagDto))]
[AutoMap(typeof(TagUpdateDto), ReverseMap = true)]
public class TagEditViewModel
public class TagEditViewModel : IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))]
public string Name { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}
}

15
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs

@ -1,21 +1,32 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Menus
{
[Serializable]
public class MenuItemDto : AuditedEntityDto<Guid>
public class MenuItemDto : AuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public Guid? ParentId { 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 Guid? PageId { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs

@ -1,13 +1,16 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Tags
{
[Serializable]
public class TagDto : EntityDto<Guid>
public class TagDto : EntityDto<Guid>, IHasConcurrencyStamp
{
public string EntityType { get; set; }
public string Name { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/Comment.cs

@ -7,7 +7,7 @@ using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Comments
{
public class Comment: BasicAggregateRoot<Guid>, IHasCreationTime, IMustHaveCreator, IMultiTenant
public class Comment: AggregateRoot<Guid>, IHasCreationTime, IMustHaveCreator, IMultiTenant
{
public virtual Guid? TenantId { get; protected set; }

10
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs

@ -156,6 +156,11 @@ namespace Volo.CmsKit.MongoDB.Comments
.Where(x => x.RepliedCommentId == comment.Id)
.ToListAsync(GetCancellationToken(cancellationToken));
await base.DeleteAsync(
comment,
cancellationToken: GetCancellationToken(cancellationToken)
);
foreach (var reply in replies)
{
await base.DeleteAsync(
@ -163,11 +168,6 @@ namespace Volo.CmsKit.MongoDB.Comments
cancellationToken: GetCancellationToken(cancellationToken)
);
}
await base.DeleteAsync(
comment,
cancellationToken: GetCancellationToken(cancellationToken)
);
}
protected virtual async Task<IQueryable<Comment>> GetListQueryAsync(

5
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Public.Comments
{
[Serializable]
public class CommentDto
public class CommentDto : IHasConcurrencyStamp
{
public Guid Id { get; set; }
@ -20,5 +21,7 @@ namespace Volo.CmsKit.Public.Comments
public DateTime CreationTime { get; set; }
public CmsUserDto Author { get; set; } //TODO: Should only have AuthorId for the basic dto. see https://docs.abp.io/en/abp/latest/Best-Practices/Application-Services
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs

@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Public.Comments
{
[Serializable]
public class CommentWithDetailsDto
public class CommentWithDetailsDto : IHasConcurrencyStamp
{
public Guid Id { get; set; }
@ -21,5 +22,7 @@ namespace Volo.CmsKit.Public.Comments
public List<CommentDto> Replies { get; set; }
public CmsUserDto Author { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs

@ -1,15 +1,18 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.CmsKit.Comments;
namespace Volo.CmsKit.Public.Comments
{
[Serializable]
public class UpdateCommentInput
public class UpdateCommentInput : IHasConcurrencyStamp
{
[Required]
[DynamicStringLength(typeof(CommentConsts), nameof(CommentConsts.MaxTextLength))]
public string Text { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

2
modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs

@ -5,6 +5,7 @@ using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Authorization;
using Volo.Abp.Data;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.Users;
@ -86,6 +87,7 @@ namespace Volo.CmsKit.Public.Comments
}
comment.SetText(input.Text);
comment.SetConcurrencyStamp(input.ConcurrencyStamp);
var updatedComment = await CommentRepository.UpdateAsync(comment);

7
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml

@ -89,7 +89,7 @@
</div>;
}
@{
Func<dynamic, IHtmlContent> GetEditArea(Guid id, string text) =>
Func<dynamic, IHtmlContent> GetEditArea(Guid id, string text, string concurrencyStamp) =>
@<div class="cms-comment-edit-area" id="@($"cms-comment_{Model.EntityType}_{Model.EntityId}_{id}")" data-id="@id.ToString()" style="display:none">
<div class="card bg-light p-3 mx-0 mt-3">
<form class="cms-comment-update-form">
@ -98,6 +98,7 @@
<div class="col">
<div class="form-group m-0">
<textarea class="form-control" name="commentText" rows="3">@text</textarea>
<input name="commentConcurrencyStamp" value="@concurrencyStamp" type="hidden" />
</div>
</div>
<div class="col-auto">
@ -151,7 +152,7 @@
</div>
</div>
</div>
@GetEditArea(comment.Id, comment.Text).Invoke(null)
@GetEditArea(comment.Id, comment.Text, comment.ConcurrencyStamp).Invoke(null)
@if (comment.Replies.Any())
{
@ -181,7 +182,7 @@
</div>
</div>
@GetEditArea(reply.Id, reply.Text).Invoke(null)
@GetEditArea(reply.Id, reply.Text, reply.ConcurrencyStamp).Invoke(null)
</div>
</div>
}

3
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js

@ -106,7 +106,8 @@
volo.cmsKit.public.comments.commentPublic.update(
formAsObject.id,
{
text: formAsObject.commentText
text: formAsObject.commentText,
concurrencyStamp: formAsObject.commentConcurrencyStamp
}
).then(function () {
widgetManager.refresh($widget);

Loading…
Cancel
Save