Browse Source

blogging - implement concurrency stamp

pull/9838/head
enisn 5 years ago
parent
commit
c6f504af71
  1. 5
      modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/UpdateBlogDto.cs
  2. 2
      modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs
  3. 8
      modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs
  4. 5
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/CommentWithDetailsDto.cs
  5. 4
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/UpdateCommentDto.cs
  6. 5
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/PostWithDetailsDto.cs
  7. 6
      modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/UpdatePostDto.cs
  8. 2
      modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Comments/CommentAppService.cs
  9. 2
      modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs
  10. 1
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml
  11. 3
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml
  12. 7
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs
  13. 3
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js

5
modules/blogging/src/Volo.Blogging.Admin.Application.Contracts/Volo/Blogging/Admin/Blogs/UpdateBlogDto.cs

@ -1,8 +1,9 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Volo.Blogging.Admin.Blogs
{
public class UpdateBlogDto
public class UpdateBlogDto : IHasConcurrencyStamp
{
[Required]
public string Name { get; set; }
@ -11,5 +12,7 @@ namespace Volo.Blogging.Admin.Blogs
public string ShortName { get; set; }
public string Description { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

2
modules/blogging/src/Volo.Blogging.Admin.Application/Volo/Blogging/Admin/Blogs/BlogManagementAppService.cs

@ -4,6 +4,7 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Caching;
using Volo.Abp.Data;
using Volo.Blogging.Blogs;
using Volo.Blogging.Blogs.Dtos;
using Volo.Blogging.Posts;
@ -58,6 +59,7 @@ namespace Volo.Blogging.Admin.Blogs
blog.SetName(input.Name);
blog.SetShortName(input.ShortName);
blog.Description = input.Description;
blog.SetConcurrencyStamp(input.ConcurrencyStamp);
return ObjectMapper.Map<Blog, BlogDto>(blog);
}

8
modules/blogging/src/Volo.Blogging.Admin.Web/Pages/Blogging/Admin/Blogs/Edit.cshtml.cs

@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.Blogging.Admin.Blogs;
using Volo.Blogging.Blogs;
@ -53,7 +54,7 @@ namespace Volo.Blogging.Admin.Pages.Blogging.Admin.Blogs
return Page();
}
public class BlogEditViewModel
public class BlogEditViewModel : IHasConcurrencyStamp
{
[HiddenInput]
[Required]
@ -69,8 +70,9 @@ namespace Volo.Blogging.Admin.Pages.Blogging.Admin.Blogs
[DynamicStringLength(typeof(BlogConsts), nameof(BlogConsts.MaxDescriptionLength))]
public string Description { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}
}

5
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/CommentWithDetailsDto.cs

@ -1,15 +1,18 @@
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Blogging.Posts;
namespace Volo.Blogging.Comments.Dtos
{
public class CommentWithDetailsDto : FullAuditedEntityDto<Guid>
public class CommentWithDetailsDto : FullAuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public Guid? RepliedCommentId { get; set; }
public string Text { get; set; }
public BlogUserDto Writer { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

4
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Comments/Dtos/UpdateCommentDto.cs

@ -1,10 +1,12 @@
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace Volo.Blogging.Comments.Dtos
{
public class UpdateCommentDto
public class UpdateCommentDto : IHasConcurrencyStamp
{
[Required]
public string Text { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

5
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/PostWithDetailsDto.cs

@ -2,11 +2,12 @@
using System.Collections.Generic;
using JetBrains.Annotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
using Volo.Blogging.Tagging.Dtos;
namespace Volo.Blogging.Posts
{
public class PostWithDetailsDto : FullAuditedEntityDto<Guid>
public class PostWithDetailsDto : FullAuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public Guid BlogId { get; set; }
@ -28,5 +29,7 @@ namespace Volo.Blogging.Posts
public BlogUserDto Writer { get; set; }
public List<TagDto> Tags { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

6
modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Posts/UpdatePostDto.cs

@ -1,10 +1,10 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Reflection;
using Volo.Abp.Domain.Entities;
namespace Volo.Blogging.Posts
{
public class UpdatePostDto
public class UpdatePostDto : IHasConcurrencyStamp
{
public Guid BlogId { get; set; }
@ -23,5 +23,7 @@ namespace Volo.Blogging.Posts
public string Description { get; set; }
public string Tags { get; set; }
public string ConcurrencyStamp { get; set; }
}
}

2
modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Comments/CommentAppService.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Data;
using Volo.Abp.Guids;
using Volo.Blogging.Comments.Dtos;
using Volo.Blogging.Posts;
@ -99,6 +100,7 @@ namespace Volo.Blogging.Comments
await AuthorizationService.CheckAsync(comment, CommonOperations.Update);
comment.SetText(input.Text);
comment.SetConcurrencyStamp(input.ConcurrencyStamp);
comment = await _commentRepository.UpdateAsync(comment);

2
modules/blogging/src/Volo.Blogging.Application/Volo/Blogging/Posts/PostAppService.cs

@ -11,6 +11,7 @@ using Volo.Blogging.Comments;
using Volo.Blogging.Tagging;
using Volo.Blogging.Tagging.Dtos;
using Volo.Blogging.Users;
using Volo.Abp.Data;
namespace Volo.Blogging.Posts
{
@ -173,6 +174,7 @@ namespace Volo.Blogging.Posts
post.SetTitle(input.Title);
post.SetUrl(input.Url);
post.SetConcurrencyStamp(input.ConcurrencyStamp);
post.Content = input.Content;
post.Description = input.Description;
post.CoverImage = input.CoverImage;

1
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml

@ -230,6 +230,7 @@
<div>
<form class="editFormClass">
<input name="commentId" value="@commentWithRepliesDto.Comment.Id" hidden />
<input name="concurrencyStamp" value="@commentWithRepliesDto.Comment.ConcurrencyStamp" hidden />
<div class="form-group">
<textarea class="form-control" name="text" id="textBoxId" rows="4">@commentWithRepliesDto.Comment.Text</textarea>
</div>

3
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml

@ -28,6 +28,9 @@
<div class="card">
<div class="card-body">
<form method="post" id="edit-post-form">
<abp-input asp-for="Post.ConcurrencyStamp" />
<abp-input asp-for="Post.Title" auto-focus="true" />
<abp-alert

7
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Edit.cshtml.cs

@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.Abp.Domain.Entities;
using Volo.Abp.Validation;
using Volo.Blogging.Blogs;
using Volo.Blogging.Pages.Blogs.Shared.Helpers;
@ -75,7 +76,8 @@ namespace Volo.Blogging.Pages.Blog.Posts
}
}
public class EditPostViewModel
public class EditPostViewModel : IHasConcurrencyStamp
{
[Required]
[HiddenInput]
@ -106,5 +108,8 @@ namespace Volo.Blogging.Pages.Blog.Posts
public string Description { get; set; }
public string Tags { get; set; }
[HiddenInput]
public string ConcurrencyStamp { get; set; }
}
}

3
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.js

@ -60,11 +60,14 @@
id: form.commentId,
commentDto: {
text: form.text,
// TODO: Implement concurrencyStamp here:
//concurrencyStamp: form.concurrencyStamp
},
},
success: function (response) {
$('div .editForm').hide();
$('#' + form.commentId).text(form.text);
//$(this).find('[name=concurrencyStamp]').val(response.concurrencyStamp);
},
});
});

Loading…
Cancel
Save