Browse Source

approval status of comments has been made

pull/19919/head
EmreKendirli 2 years ago
parent
commit
89aec58bd5
  1. BIN
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png
  2. BIN
      modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png
  3. 9
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs
  4. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs
  5. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj
  6. 26
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs
  7. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentAdminClientProxy.Generated.cs
  8. 32
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentApprovedAdminClientProxy.Generated.cs
  9. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentApprovedAdminClientProxy.cs
  10. 71
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs
  11. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.cs
  12. 55
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Comments/CommentPublicClientProxy.Generated.cs
  13. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Comments/CommentPublicClientProxy.cs
  14. 29
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/GlobalResources/GlobalResourcePublicClientProxy.Generated.cs
  15. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/GlobalResources/GlobalResourcePublicClientProxy.cs
  16. 25
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Menus/MenuItemPublicClientProxy.Generated.cs
  17. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Menus/MenuItemPublicClientProxy.cs
  18. 41
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Pages/PagesPublicClientProxy.Generated.cs
  19. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Pages/PagesPublicClientProxy.cs
  20. 47
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Ratings/RatingPublicClientProxy.Generated.cs
  21. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Ratings/RatingPublicClientProxy.cs
  22. 48
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Reactions/ReactionPublicClientProxy.Generated.cs
  23. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Reactions/ReactionPublicClientProxy.cs
  24. 37
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Tags/TagPublicClientProxy.Generated.cs
  25. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Tags/TagPublicClientProxy.cs
  26. 3273
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json
  27. 1901
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json
  28. 14
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Comments/CommentAdminController.cs
  29. 19
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs
  30. 12
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/CommentSettingViewComponent.cs
  31. 131
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/Index.cshtml
  32. 46
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/index.js
  33. 29
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Settings/BookStoreSettingPageContributor.cs
  34. 12
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj
  35. 18
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js
  36. 3
      modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs
  37. 1
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj
  38. 9
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Settings/AppSettings.cs
  39. 1
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/ICommentRepository.cs
  40. 3
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Settings/CmsKitSettingDefinitionProvider.cs
  41. 12
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Comments/EfCoreCommentRepository.cs
  42. 21
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Comments/MongoCommentRepository.cs
  43. 7
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj
  44. 17
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Public/Comments/CommentPublicAppService.cs

BIN
modules/cms-kit/host/Volo.CmsKit.IdentityServer/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
modules/cms-kit/host/Volo.CmsKit.Web.Host/wwwroot/libs/malihu-custom-scrollbar-plugin/mCSB_buttons.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

9
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs

@ -0,0 +1,9 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Volo.CmsKit.Admin.Comments;
public class SettingsDto
{
public bool RequireApprovement { get; set; }
}

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs

@ -14,4 +14,7 @@ public interface ICommentAdminAppService : IApplicationService
Task DeleteAsync(Guid id);
Task UpdateApprovalStatusAsync(Guid id, CommentApprovalDto commentApprovalDto);
Task SetSettings(SettingsDto settingsDto);
Task<SettingsDto> GetSettings();
}

6
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo.CmsKit.Admin.Application.csproj

@ -17,4 +17,10 @@
<Folder Include="Volo\CmsKit\Admin\Contents\" />
</ItemGroup>
<ItemGroup>
<Reference Include="Volo.Abp.SettingManagement.Domain">
<HintPath>..\..\..\setting-management\src\Volo.Abp.SettingManagement.Domain\obj\Debug\net8.0\ref\Volo.Abp.SettingManagement.Domain.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

26
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs

@ -5,10 +5,12 @@ using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.SettingManagement;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
using Volo.CmsKit.Settings;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.Admin.Comments;
@ -20,9 +22,11 @@ public class CommentAdminAppService : CmsKitAdminAppServiceBase, ICommentAdminAp
{
protected ICommentRepository CommentRepository { get; }
public CommentAdminAppService(ICommentRepository commentRepository)
private readonly ISettingManager _settingManager;
public CommentAdminAppService(ICommentRepository commentRepository, ISettingManager settingManager)
{
CommentRepository = commentRepository;
_settingManager = settingManager;
}
public virtual async Task<PagedResultDto<CommentWithAuthorDto>> GetListAsync(CommentGetListInput input)
@ -84,4 +88,24 @@ public class CommentAdminAppService : CmsKitAdminAppServiceBase, ICommentAdminAp
await CommentRepository.UpdateAsync(comment);
}
public async Task SetSettings(SettingsDto settingsDto)
{
await _settingManager.SetGlobalAsync(AppSettings.RequireApprovement, settingsDto.RequireApprovement.ToString());
}
public async Task<SettingsDto> GetSettings()
{
string approvalSettingValue = await _settingManager.GetOrNullGlobalAsync(AppSettings.RequireApprovement);
if (bool.TryParse(approvalSettingValue, out bool isApprovalRequired))
{
SettingsDto settings = new SettingsDto
{
RequireApprovement = isApprovalRequired
};
return settings;
}
return null;
}
}

6
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentAdminClientProxy.Generated.cs

@ -41,12 +41,12 @@ public partial class CommentAdminClientProxy : ClientProxyBase<ICommentAdminAppS
});
}
public virtual async Task UpdateCommentStatusAsync(Guid id, bool isApproved)
public virtual async Task UpdateApprovalStatusAsync(Guid id, CommentApprovalDto commentApprovalDto)
{
await RequestAsync(nameof(UpdateCommentStatusAsync), new ClientProxyRequestTypeValue
await RequestAsync(nameof(UpdateApprovalStatusAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id },
{ typeof(bool), isApproved }
{ typeof(CommentApprovalDto), commentApprovalDto }
});
}
}

32
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentApprovedAdminClientProxy.Generated.cs

@ -0,0 +1,32 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Admin.Comments;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Admin.Comments;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ICommentApprovedSettingService), typeof(CommentApprovedAdminClientProxy))]
public partial class CommentApprovedAdminClientProxy : ClientProxyBase<ICommentApprovedSettingService>, ICommentApprovedSettingService
{
public virtual async Task CreateCommentApprovedStateAsync(bool isApproved)
{
await RequestAsync(nameof(CreateCommentApprovedStateAsync), new ClientProxyRequestTypeValue
{
{ typeof(bool), isApproved }
});
}
public virtual async Task<bool?> GetAsync()
{
return await RequestAsync<bool?>(nameof(GetAsync));
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Admin/Comments/CommentApprovedAdminClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of CommentApprovedAdminClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Admin.Comments;
public partial class CommentApprovedAdminClientProxy
{
}

71
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.Generated.cs

@ -0,0 +1,71 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Public.Blogs;
using Volo.CmsKit.Users;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Blogs;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IBlogPostPublicAppService), typeof(BlogPostPublicClientProxy))]
public partial class BlogPostPublicClientProxy : ClientProxyBase<IBlogPostPublicAppService>, IBlogPostPublicAppService
{
public virtual async Task<BlogPostCommonDto> GetAsync(string blogSlug, string blogPostSlug)
{
return await RequestAsync<BlogPostCommonDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), blogSlug },
{ typeof(string), blogPostSlug }
});
}
public virtual async Task<PagedResultDto<BlogPostCommonDto>> GetListAsync(string blogSlug, BlogPostGetListInput input)
{
return await RequestAsync<PagedResultDto<BlogPostCommonDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), blogSlug },
{ typeof(BlogPostGetListInput), input }
});
}
public virtual async Task<PagedResultDto<CmsUserDto>> GetAuthorsHasBlogPostsAsync(BlogPostFilteredPagedAndSortedResultRequestDto input)
{
return await RequestAsync<PagedResultDto<CmsUserDto>>(nameof(GetAuthorsHasBlogPostsAsync), new ClientProxyRequestTypeValue
{
{ typeof(BlogPostFilteredPagedAndSortedResultRequestDto), input }
});
}
public virtual async Task<CmsUserDto> GetAuthorHasBlogPostAsync(Guid id)
{
return await RequestAsync<CmsUserDto>(nameof(GetAuthorHasBlogPostAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task DeleteAsync(Guid id)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task<string> GetTagNameAsync(Guid tagId)
{
return await RequestAsync<string>(nameof(GetTagNameAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), tagId }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Blogs/BlogPostPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of BlogPostPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Blogs;
public partial class BlogPostPublicClientProxy
{
}

55
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Comments/CommentPublicClientProxy.Generated.cs

@ -0,0 +1,55 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Public.Comments;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Comments;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ICommentPublicAppService), typeof(CommentPublicClientProxy))]
public partial class CommentPublicClientProxy : ClientProxyBase<ICommentPublicAppService>, ICommentPublicAppService
{
public virtual async Task<ListResultDto<CommentWithDetailsDto>> GetListAsync(string entityType, string entityId)
{
return await RequestAsync<ListResultDto<CommentWithDetailsDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId }
});
}
public virtual async Task<CommentDto> CreateAsync(string entityType, string entityId, CreateCommentInput input)
{
return await RequestAsync<CommentDto>(nameof(CreateAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId },
{ typeof(CreateCommentInput), input }
});
}
public virtual async Task<CommentDto> UpdateAsync(Guid id, UpdateCommentInput input)
{
return await RequestAsync<CommentDto>(nameof(UpdateAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id },
{ typeof(UpdateCommentInput), input }
});
}
public virtual async Task DeleteAsync(Guid id)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Comments/CommentPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of CommentPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Comments;
public partial class CommentPublicClientProxy
{
}

29
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/GlobalResources/GlobalResourcePublicClientProxy.Generated.cs

@ -0,0 +1,29 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Public.GlobalResources;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.GlobalResources;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IGlobalResourcePublicAppService), typeof(GlobalResourcePublicClientProxy))]
public partial class GlobalResourcePublicClientProxy : ClientProxyBase<IGlobalResourcePublicAppService>, IGlobalResourcePublicAppService
{
public virtual async Task<GlobalResourceDto> GetGlobalScriptAsync()
{
return await RequestAsync<GlobalResourceDto>(nameof(GetGlobalScriptAsync));
}
public virtual async Task<GlobalResourceDto> GetGlobalStyleAsync()
{
return await RequestAsync<GlobalResourceDto>(nameof(GetGlobalStyleAsync));
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/GlobalResources/GlobalResourcePublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of GlobalResourcePublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.GlobalResources;
public partial class GlobalResourcePublicClientProxy
{
}

25
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Menus/MenuItemPublicClientProxy.Generated.cs

@ -0,0 +1,25 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Public.Menus;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Menus;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IMenuItemPublicAppService), typeof(MenuItemPublicClientProxy))]
public partial class MenuItemPublicClientProxy : ClientProxyBase<IMenuItemPublicAppService>, IMenuItemPublicAppService
{
public virtual async Task<List<MenuItemDto>> GetListAsync()
{
return await RequestAsync<List<MenuItemDto>>(nameof(GetListAsync));
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Menus/MenuItemPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of MenuItemPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Menus;
public partial class MenuItemPublicClientProxy
{
}

41
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Pages/PagesPublicClientProxy.Generated.cs

@ -0,0 +1,41 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Contents;
using Volo.CmsKit.Public.Pages;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Pages;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IPagePublicAppService), typeof(PagesPublicClientProxy))]
public partial class PagesPublicClientProxy : ClientProxyBase<IPagePublicAppService>, IPagePublicAppService
{
public virtual async Task<PageDto> FindBySlugAsync(string slug)
{
return await RequestAsync<PageDto>(nameof(FindBySlugAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), slug }
});
}
public virtual async Task<PageDto> FindDefaultHomePageAsync()
{
return await RequestAsync<PageDto>(nameof(FindDefaultHomePageAsync));
}
public virtual async Task<bool> DoesSlugExistAsync(string slug)
{
return await RequestAsync<bool>(nameof(DoesSlugExistAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), slug }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Pages/PagesPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of PagesPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Pages;
public partial class PagesPublicClientProxy
{
}

47
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Ratings/RatingPublicClientProxy.Generated.cs

@ -0,0 +1,47 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Public.Ratings;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Ratings;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IRatingPublicAppService), typeof(RatingPublicClientProxy))]
public partial class RatingPublicClientProxy : ClientProxyBase<IRatingPublicAppService>, IRatingPublicAppService
{
public virtual async Task<RatingDto> CreateAsync(string entityType, string entityId, CreateUpdateRatingInput input)
{
return await RequestAsync<RatingDto>(nameof(CreateAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId },
{ typeof(CreateUpdateRatingInput), input }
});
}
public virtual async Task DeleteAsync(string entityType, string entityId)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId }
});
}
public virtual async Task<List<RatingWithStarCountDto>> GetGroupedStarCountsAsync(string entityType, string entityId)
{
return await RequestAsync<List<RatingWithStarCountDto>>(nameof(GetGroupedStarCountsAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Ratings/RatingPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of RatingPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Ratings;
public partial class RatingPublicClientProxy
{
}

48
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Reactions/ReactionPublicClientProxy.Generated.cs

@ -0,0 +1,48 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Public.Reactions;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Reactions;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IReactionPublicAppService), typeof(ReactionPublicClientProxy))]
public partial class ReactionPublicClientProxy : ClientProxyBase<IReactionPublicAppService>, IReactionPublicAppService
{
public virtual async Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(string entityType, string entityId)
{
return await RequestAsync<ListResultDto<ReactionWithSelectionDto>>(nameof(GetForSelectionAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId }
});
}
public virtual async Task CreateAsync(string entityType, string entityId, string reaction)
{
await RequestAsync(nameof(CreateAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId },
{ typeof(string), reaction }
});
}
public virtual async Task DeleteAsync(string entityType, string entityId, string reaction)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId },
{ typeof(string), reaction }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Reactions/ReactionPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of ReactionPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Reactions;
public partial class ReactionPublicClientProxy
{
}

37
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Tags/TagPublicClientProxy.Generated.cs

@ -0,0 +1,37 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
using Volo.CmsKit.Tags;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Tags;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ITagAppService), typeof(TagPublicClientProxy))]
public partial class TagPublicClientProxy : ClientProxyBase<ITagAppService>, ITagAppService
{
public virtual async Task<List<TagDto>> GetAllRelatedTagsAsync(string entityType, string entityId)
{
return await RequestAsync<List<TagDto>>(nameof(GetAllRelatedTagsAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(string), entityId }
});
}
public virtual async Task<List<PopularTagDto>> GetPopularTagsAsync(string entityType, int maxCount)
{
return await RequestAsync<List<PopularTagDto>>(nameof(GetPopularTagsAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), entityType },
{ typeof(int), maxCount }
});
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/Volo/CmsKit/Public/Tags/TagPublicClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of TagPublicClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Public.Tags;
public partial class TagPublicClientProxy
{
}

3273
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json

File diff suppressed because it is too large

1901
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-generate-proxy.json

File diff suppressed because it is too large

14
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Comments/CommentAdminController.cs

@ -22,6 +22,7 @@ public class CommentAdminController : CmsKitAdminController, ICommentAdminAppSer
{
protected ICommentAdminAppService CommentAdminAppService { get; }
public CommentAdminController(ICommentAdminAppService commentAdminAppService)
{
CommentAdminAppService = commentAdminAppService;
@ -55,4 +56,17 @@ public class CommentAdminController : CmsKitAdminController, ICommentAdminAppSer
return CommentAdminAppService.UpdateApprovalStatusAsync(id, commentApprovalDto);
}
[HttpPost]
[Route("settings")]
public Task SetSettings(SettingsDto settingsDto)
{
return CommentAdminAppService.SetSettings(settingsDto);
}
[HttpGet]
[Route("settings")]
public Task<SettingsDto> GetSettings()
{
return CommentAdminAppService.GetSettings();
}
}

19
modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs

@ -2,6 +2,7 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.PageToolbars;
using Volo.Abp.AutoMapper;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
@ -9,11 +10,13 @@ using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectExtending.Modularity;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement;
using Volo.Abp.Threading;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Admin.MediaDescriptors;
using Volo.CmsKit.Admin.Web.Menus;
using Volo.CmsKit.Admin.Web.Settings;
using Volo.CmsKit.Localization;
using Volo.CmsKit.Permissions;
using Volo.CmsKit.Web;
@ -52,7 +55,15 @@ public class CmsKitAdminWebModule : AbpModule
{
options.MenuContributors.Add(new CmsKitAdminMenuContributor());
});
Configure<AbpBundlingOptions>(options =>
{
options.ScriptBundles
.Configure(typeof(IndexModel).FullName,
configuration =>
{
configuration.AddFiles("/client-proxies/cms-kit-admin-proxy.js");
});
});
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<CmsKitAdminWebModule>("Volo.CmsKit.Admin.Web");
@ -173,6 +184,12 @@ public class CmsKitAdminWebModule : AbpModule
{
options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateMediaInputWithStream));
});
Configure<SettingManagementPageOptions>(options =>
{
options.Contributors.Add(new BookStoreSettingPageContributor());
});
}
public override void PostConfigureServices(ServiceConfigurationContext context)

12
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/CommentSettingViewComponent.cs

@ -0,0 +1,12 @@
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.CmsKit.Admin.Web.Components.MySettingGroup;
public class CommentSettingViewComponent: AbpViewComponent
{
public virtual IViewComponentResult Invoke()
{
return View("~/Components/CommentsSetting/Index.cshtml");
}
}

131
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/Index.cshtml

@ -0,0 +1,131 @@
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@section scripts {
<abp-script-bundle>
<abp-script src="/client-proxies/cms-kit-admin-proxy.js" />
<abp-script src="/client-proxies/cms-kit-common-proxy.js" />
@* <abp-script src="" /> *@
<script src="/Components/CommentsSetting/index.js"></script>
</abp-script-bundle>
}
@{
// <p>sdf</p>
// <input type="checkbox" id="checkbox" />
// <button id="save">Save</button>
<abp-form #form="ngForm">
<h4>Checkbox Ayarları</h4>
<hr />
<div class="form-group">
<div class="form-check">
<input type="checkbox" id="checkbox" class="form-check-input" name="checkbox" ngModel />
<label for="checkbox" class="form-check-label">Açıklama:</label>
</div>
<small id="checkboxHelp" class="form-text text-muted">Checkbox açıklama metni buraya gelecek.</small>
</div>
<div style="float:right" class="text-right mt-3">
<abp-button id="save" type="submit" class="btn btn-primary">
Kaydet
</abp-button>
</div>
</abp-form>
}
@* <script>
var service = volo.cmsKit.admin.comments.commentAdmin;
$(document).ready(function () {
service.getSettings().done(function (response) {
var isChecked = response.requireApprovement
$('#checkbox').prop('checked', isChecked);
console.log('CheckBox durumu başarıyla güncellendi:', response.requireApprovement);
}).fail(function (error) {
console.error('CheckBox durumu alınırken bir hata oluştu:', error);
});
$('#save').click(function () {
var isChecked = $('#checkbox').prop('checked');
service.setSettings({ RequireApprovement: isChecked }).done(function (response) {
console.log('CheckBox durumu başarıyla güncellendi:', response);
alert('CheckBox durumu başarıyla kaydedildi.');
}).fail(function (error) {
console.error('CheckBox durumu güncellenirken bir hata oluştu:', error);
alert('CheckBox durumu kaydedilirken bir hata oluştu.');
});
});
});
</script> *@
@* <script>
var _service = volo.cmsKit.admin.comments.commentAdmin;
$(document).ready(function () {
_service.getSettings().done(function (response) {
var isChecked = response.requireApprovement;
$('#checkbox').prop('checked', isChecked);
console.log('CheckBox durumu başarıyla güncellendi:', response.requireApprovement);
}).fail(function (error) {
console.error('CheckBox durumu alınırken bir hata oluştu:', error);
});
$('#save').click(function () {
var isChecked = $('#checkbox').prop('checked');
_service.setSettings({ requireApprovement: isChecked }).done(function (response) {
console.log('CheckBox durumu başarıyla güncellendi:', response);
abp.notify.success('CheckBox durumu başarıyla kaydedildi.');
}).fail(function (error) {
console.error('CheckBox durumu güncellenirken bir hata oluştu:', error);
abp.notify.error('CheckBox durumu kaydedilirken bir hata oluştu.');
});
});
})
</script> *@
<script>
var app = app || {};
app.commentAdmin = (function () {
var _service = volo.cmsKit.admin.comments.commentAdmin;
var _init = function () {
_getSettings();
_bindEvents();
};
var _getSettings = function () {
_service.getSettings().done(function (response) {
var isChecked = response.requireApprovement;
$('#checkbox').prop('checked', isChecked);
console.log('CheckBox durumu başarıyla güncellendii:', response.requireApprovement);
}).fail(function (error) {
console.error('CheckBox durumu alınırken bir hata oluştu:', error);
});
};
var _bindEvents = function () {
$('#save').click(function () {
var isChecked = $('#checkbox').prop('checked');
_service.setSettings({ requireApprovement: isChecked }).done(function (response) {
console.log('CheckBox durumu başarıyla güncellendi:', response);
abp.notify.success('CheckBox durumu başarıyla kaydedildi.');
}).fail(function (error) {
console.error('CheckBox durumu güncellenirken bir hata oluştu:', error);
abp.notify.error('CheckBox durumu kaydedilirken bir hata oluştu.');
});
});
};
return {
init: _init
};
})();
$(document).ready(function () {
app.commentAdmin.init();
});
</script>

46
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Components/CommentsSetting/index.js

@ -0,0 +1,46 @@

//$(document).ready(function () {
// var service = volo.cmsKit.admin.comments.commentAdmin;
// service.getSettings().done(function (response) {
// var isChecked = response.requireApprovement
// $('#checkbox').prop('checked', isChecked);
// console.log('CheckBox durumu başarıyla güncellendi:', response.requireApprovement);
// }).fail(function (error) {
// console.error('CheckBox durumu alınırken bir hata oluştu:', error);
// });
// $('#save').click(function () {
// var isChecked = $('#checkbox').prop('checked');
// service.setSettings({ RequireApprovement: isChecked }).done(function (response) {
// console.log('CheckBox durumu başarıyla güncellendi:', response);
// alert('CheckBox durumu başarıyla kaydedildi.');
// }).fail(function (error) {
// console.error('CheckBox durumu güncellenirken bir hata oluştu:', error);
// alert('CheckBox durumu kaydedilirken bir hata oluştu.');
// });
// });
//});
var service = volo.cmsKit.admin.comments.commentAdmin;
$(document).ready(function () {
service.getSettings().done(function (response) {
var isChecked = response.requireApprovement
$('#checkbox').prop('checked', isChecked);
console.log('CheckBox durumu başarıyla güncellendi:', response.requireApprovement);
}).fail(function (error) {
console.error('CheckBox durumu alınırken bir hata oluştu:', error);
});
$('#save').click(function () {
var isChecked = $('#checkbox').prop('checked');
service.setSettings({ RequireApprovement: isChecked }).done(function (response) {
console.log('CheckBox durumu başarıyla güncellendi:', response);
alert('CheckBox durumu başarıyla kaydedildi.');
}).fail(function (error) {
console.error('CheckBox durumu güncellenirken bir hata oluştu:', error);
alert('CheckBox durumu kaydedilirken bir hata oluştu.');
});
});
});

29
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Settings/BookStoreSettingPageContributor.cs

@ -0,0 +1,29 @@
using System.Threading.Tasks;
using Volo.Abp.SettingManagement.Web.Pages.SettingManagement;
using Volo.CmsKit.Admin.Web.Components.MySettingGroup;
namespace Volo.CmsKit.Admin.Web.Settings;
public class BookStoreSettingPageContributor : ISettingPageContributor
{
public Task ConfigureAsync(SettingPageCreationContext context)
{
context.Groups.Add(
new SettingPageGroup(
"Volo.Abp.MySettingGroup",
"MySettingGroup",
typeof(CommentSettingViewComponent),
order: 1
)
);
return Task.CompletedTask;
}
public Task<bool> CheckPermissionsAsync(SettingPageCreationContext context)
{
// You can check the permissions here
return Task.FromResult(true);
}
}

12
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj

@ -30,15 +30,23 @@
<EmbeddedResource Include="wwwroot\**\*.css" />
<Content Remove="Pages\**\*.css" />
<Content Remove="Pages\**\*.js" />
<Content Remove="Components\**\*.js" />
<Content Remove="Components\**\*.css" />
<Content Remove="wwwroot\**\*.js" />
<Content Remove="wwwroot\**\*.css" />
</ItemGroup>
<ItemGroup>
<None Remove="Components\CommentsSetting\Index.js" />
</ItemGroup>
<ItemGroup>
<_ContentIncludedByDefault Remove="Pages\Admin\Index.cshtml" />
<_ContentIncludedByDefault Remove="Pages\Admin\_ViewImports.cshtml" />
</ItemGroup>
<ItemGroup>
<Reference Include="Volo.Abp.SettingManagement.Web">
<HintPath>..\..\..\setting-management\src\Volo.Abp.SettingManagement.Web\obj\Debug\net8.0\ref\Volo.Abp.SettingManagement.Web.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

18
modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js

@ -176,7 +176,7 @@
volo.cmsKit.admin.comments.commentAdmin.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-admin/comments' + abp.utils.buildQueryString([{ name: 'entityType', value: input.entityType }, { name: 'text', value: input.text }, { name: 'repliedCommentId', value: input.repliedCommentId }, { name: 'author', value: input.author }, { name: 'creationStartDate', value: input.creationStartDate }, { name: 'creationEndDate', value: input.creationEndDate }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
url: abp.appPath + 'api/cms-kit-admin/comments' + abp.utils.buildQueryString([{ name: 'entityType', value: input.entityType }, { name: 'text', value: input.text }, { name: 'repliedCommentId', value: input.repliedCommentId }, { name: 'author', value: input.author }, { name: 'creationStartDate', value: input.creationStartDate }, { name: 'creationEndDate', value: input.creationEndDate }, { name: 'isApproved', value: input.isApproved }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
@ -205,6 +205,22 @@
}, ajaxParams));
};
volo.cmsKit.admin.comments.commentAdmin.setSettings = function(settingsDto, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-admin/comments/settings',
type: 'POST',
dataType: null,
data: JSON.stringify(settingsDto)
}, ajaxParams));
};
volo.cmsKit.admin.comments.commentAdmin.getSettings = function(ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-admin/comments/settings',
type: 'GET'
}, ajaxParams));
};
})();
// controller volo.cmsKit.admin.globalResources.globalResourceAdmin

3
modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs

@ -7,6 +7,8 @@ using Volo.CmsKit.Reactions;
using Volo.CmsKit.Web.Icons;
using Markdig;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Settings;
using Volo.CmsKit.Settings;
namespace Volo.CmsKit.Web;
@ -52,6 +54,7 @@ public class CmsKitCommonWebModule : AbpModule
{
options.DisableModule(CmsKitCommonRemoteServiceConsts.ModuleName);
});
}
}

1
modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj

@ -16,6 +16,7 @@
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Common.Application.Contracts\Volo.CmsKit.Common.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Domain\Volo.CmsKit.Domain.csproj" />
</ItemGroup>
<ItemGroup>

9
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Settings/AppSettings.cs

@ -0,0 +1,9 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Volo.CmsKit.Settings;
public static class AppSettings
{
public const string RequireApprovement = "Comments.RequireApprovement";
}

1
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Comments/ICommentRepository.cs

@ -41,6 +41,7 @@ public interface ICommentRepository : IBasicRepository<Comment, Guid>
Task<List<CommentWithAuthorQueryResultItem>> GetListWithAuthorsAsync(
[NotNull] string entityType,
[NotNull] string entityId,
bool? isApproved = null,
CancellationToken cancellationToken = default
);

3
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Settings/CmsKitSettingDefinitionProvider.cs

@ -9,5 +9,8 @@ public class CmsKitSettingDefinitionProvider : SettingDefinitionProvider
/* Define module settings here.
* Use names from CmsKitSettings class.
*/
context.Add(
new SettingDefinition(AppSettings.RequireApprovement, "true")
) ;
}
}

12
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Comments/EfCoreCommentRepository.cs

@ -109,6 +109,7 @@ public class EfCoreCommentRepository : EfCoreRepository<ICmsKitDbContext, Commen
public virtual async Task<List<CommentWithAuthorQueryResultItem>> GetListWithAuthorsAsync(
string entityType,
string entityId,
bool ? isApproved = null,
CancellationToken cancellationToken = default)
{
Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
@ -116,15 +117,20 @@ public class EfCoreCommentRepository : EfCoreRepository<ICmsKitDbContext, Commen
var query = from comment in (await GetDbSetAsync())
join user in (await GetDbContextAsync()).Set<CmsUser>() on comment.CreatorId equals user.Id
where entityType == comment.EntityType && entityId == comment.EntityId
orderby comment.CreationTime
where entityType == comment.EntityType && entityId == comment.EntityId
orderby comment.CreationTime
select new CommentWithAuthorQueryResultItem
{
Comment = comment,
Author = user
};
return await query.ToListAsync(GetCancellationToken(cancellationToken));
if (isApproved.HasValue)
{
query = query.Where(c => c.Comment.IsApproved == isApproved.Value);
}
return await query.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task DeleteWithRepliesAsync(

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

@ -113,6 +113,7 @@ public class MongoCommentRepository : MongoDbRepository<ICmsKitMongoDbContext, C
public virtual async Task<List<CommentWithAuthorQueryResultItem>> GetListWithAuthorsAsync(
string entityType,
string entityId,
bool? isApproved = null,
CancellationToken cancellationToken = default)
{
Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
@ -126,10 +127,22 @@ public class MongoCommentRepository : MongoDbRepository<ICmsKitMongoDbContext, C
var authors = await ApplyDataFilters<IMongoQueryable<CmsUser>, CmsUser>(authorsQuery).ToListAsync(GetCancellationToken(cancellationToken));
var comments = await (await GetMongoQueryableAsync(cancellationToken))
.Where(c => c.EntityId == entityId && c.EntityType == entityType)
.OrderBy(c => c.CreationTime)
.ToListAsync(GetCancellationToken(cancellationToken));
var commentsQuery = (await GetMongoQueryableAsync(cancellationToken))
.Where(c => c.EntityId == entityId && c.EntityType == entityType);
if (isApproved.HasValue)
{
commentsQuery = commentsQuery.Where(c => c.IsApproved == isApproved.Value);
}
var comments = await commentsQuery
.OrderBy(c => c.CreationTime)
.ToListAsync(GetCancellationToken(cancellationToken));
// var comments = await (await GetMongoQueryableAsync(cancellationToken))
//.Where(c => c.EntityId == entityId && c.EntityType == entityType )
// .OrderBy(c => c.CreationTime)
//.ToListAsync(GetCancellationToken(cancellationToken));
return comments
.Select(

7
modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo.CmsKit.Public.Application.csproj

@ -9,8 +9,15 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.CmsKit.Admin.Application.Contracts\Volo.CmsKit.Admin.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Common.Application\Volo.CmsKit.Common.Application.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Public.Application.Contracts\Volo.CmsKit.Public.Application.Contracts.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Volo.Abp.SettingManagement.Domain">
<HintPath>..\..\..\setting-management\src\Volo.Abp.SettingManagement.Domain\obj\Debug\net8.0\ref\Volo.Abp.SettingManagement.Domain.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

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

@ -12,11 +12,13 @@ using Volo.Abp.Data;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.SettingManagement;
using Volo.Abp.Users;
using Volo.CmsKit.Comments;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
using Volo.CmsKit.Settings;
using Volo.CmsKit.Users;
namespace Volo.CmsKit.Public.Comments;
@ -32,27 +34,34 @@ public class CommentPublicAppService : CmsKitPublicAppServiceBase, ICommentPubli
protected ICmsUserLookupService CmsUserLookupService { get; }
public IDistributedEventBus DistributedEventBus { get; }
protected CommentManager CommentManager { get; }
protected CmsKitCommentOptions CmsCommentOptions { get; }
private readonly ISettingManager SettingManager;
public CommentPublicAppService(
ICommentRepository commentRepository,
ICmsUserLookupService cmsUserLookupService,
IDistributedEventBus distributedEventBus,
CommentManager commentManager,
IOptionsSnapshot<CmsKitCommentOptions> cmsCommentOptions)
IOptionsSnapshot<CmsKitCommentOptions> cmsCommentOptions,
ISettingManager settingManager
)
{
CommentRepository = commentRepository;
CmsUserLookupService = cmsUserLookupService;
DistributedEventBus = distributedEventBus;
CommentManager = commentManager;
CmsCommentOptions = cmsCommentOptions.Value;
SettingManager = settingManager;
}
public virtual async Task<ListResultDto<CommentWithDetailsDto>> GetListAsync(string entityType, string entityId)
{
var commentsWithAuthor = await CommentRepository
.GetListWithAuthorsAsync(entityType, entityId);
string checkboxState = await SettingManager.GetOrNullGlobalAsync(AppSettings.RequireApprovement);
var commentsWithAuthor = bool.Parse(checkboxState) ?
await CommentRepository.GetListWithAuthorsAsync(entityType, entityId, true) :
await CommentRepository.GetListWithAuthorsAsync(entityType, entityId);
return new ListResultDto<CommentWithDetailsDto>(
ConvertCommentsToNestedStructure(commentsWithAuthor)

Loading…
Cancel
Save