diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs index e992ae8b1d..42383d8b83 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs +++ b/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 + public class BlogDto : EntityDto, IHasConcurrencyStamp { public string Name { get; set; } public string Slug { get; set; } + public string ConcurrencyStamp { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs index 809fcf3c23..02e1c5810d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs +++ b/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, IHasCreationTime, IHasModificationTime + public class BlogPostDto : EntityDto, 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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs index 832c1b7214..da4601503c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs +++ b/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; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs index d0619288fe..aadf648a25 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs +++ b/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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs index 8450d79b34..d9a7b17a92 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs +++ b/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; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs index a996ebb584..8ffbc4791c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs +++ b/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 + public class PageDto : AuditedEntityDto, 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; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs index 1c4d8373fa..615485e418 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs +++ b/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; } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs index b28df94b8a..4785c9fac2 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs +++ b/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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs index a803ea8695..1a1124160b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs +++ b/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); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs index 92db8e9902..7fbc623741 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs +++ b/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) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs index 32458ecb90..dde50cda0d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs +++ b/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); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs index 5247c09ab1..95ff9bec16 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs +++ b/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); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs index 2977aab185..de01d101ed 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs +++ b/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); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs index e862c34d43..e49aa4d5a1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs +++ b/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; } } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs index 40d0c58e76..02bb9b7c0b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs +++ b/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; } } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml index e556e72f1f..653e42eb94 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml @@ -17,6 +17,7 @@ + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs index a696c6bef1..e2d171b0e4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs +++ b/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; } } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml index d8868cf5a1..f0e833ecb4 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml @@ -40,6 +40,8 @@
+ + diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml.cs index 8f7fae6b11..797c97eb64 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml.cs +++ b/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; } } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml.cs index 7845a1b474..05471b9a15 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Tags/EditModal.cshtml.cs +++ b/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; } } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs index 374229ab48..f40a1ad344 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Menus/MenuItemDto.cs +++ b/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 + public class MenuItemDto : AuditedEntityDto, 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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs index b9bffe880b..38f89f61a3 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Tags/TagDto.cs +++ b/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 + public class TagDto : EntityDto, IHasConcurrencyStamp { public string EntityType { get; set; } public string Name { get; set; } + + public string ConcurrencyStamp { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/Comment.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/Comment.cs index ea37b5ebdc..813d25a39a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/Comment.cs +++ b/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, IHasCreationTime, IMustHaveCreator, IMultiTenant + public class Comment: AggregateRoot, IHasCreationTime, IMustHaveCreator, IMultiTenant { public virtual Guid? TenantId { get; protected set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs index 8cfab1bfd5..4d542ca9c8 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs +++ b/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> GetListQueryAsync( diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs index 0c6e2a21bf..b5b3cbf1d2 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentDto.cs +++ b/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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs index 3c5b074a86..453de6752f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/CommentWithDetailsDto.cs +++ b/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 Replies { get; set; } public CmsUserDto Author { get; set; } + + public string ConcurrencyStamp { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs index 13b7b9804a..0b60ba8681 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Comments/UpdateCommentInput.cs +++ b/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; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs index f3341a8e7e..e2e7617772 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs +++ b/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); diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml index 062afddc4d..c3a59b839a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/Default.cshtml @@ -89,7 +89,7 @@ ; } @{ - Func GetEditArea(Guid id, string text) => + Func GetEditArea(Guid id, string text, string concurrencyStamp) => @ - @GetEditArea(comment.Id, comment.Text).Invoke(null) + @GetEditArea(comment.Id, comment.Text, comment.ConcurrencyStamp).Invoke(null) @if (comment.Replies.Any()) { @@ -181,7 +182,7 @@ - @GetEditArea(reply.Id, reply.Text).Invoke(null) + @GetEditArea(reply.Id, reply.Text, reply.ConcurrencyStamp).Invoke(null) } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js index 1c08e38538..3e34d8f25e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Commenting/default.js +++ b/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);