diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentApprovalDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentApprovalDto.cs index 79c2813beb..e0ef1be356 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentApprovalDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentApprovalDto.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Text; namespace Volo.CmsKit.Admin.Comments; + +[Serializable] public class CommentApprovalDto { - public bool IsApproved { get; set; } + public bool IsApproved { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs index 4a51749fdb..9dfc34211d 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs @@ -19,6 +19,7 @@ public class CommentDto : ExtensibleObject public Guid CreatorId { get; set; } public DateTime CreationTime { get; set; } + public bool? IsApproved { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs index cbfb7b0e3d..7b72f7a8e1 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentSettingsDto.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Text; namespace Volo.CmsKit.Admin.Comments; + +[Serializable] public class SettingsDto { public bool RequireApprovement { get; set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs index 9e9f29453c..4b47c6d153 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs @@ -23,6 +23,7 @@ public class CommentWithAuthorDto : ExtensibleObject public CmsUserDto Author { get; set; } public string Url { get; set; } + public bool? IsApproved { get; set; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs index 23c21bde00..b770594e9a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/ICommentAdminAppService.cs @@ -12,14 +12,15 @@ public interface ICommentAdminAppService : IApplicationService Task GetAsync(Guid id); Task DeleteAsync(Guid id); + Task UpdateApprovalStatusAsync(Guid id, CommentApprovalDto commentApprovalDto); Task SetSettings(SettingsDto settingsDto); + Task GetSettings(); + Task GetWaitingCommentCount(); Task> GetWaitingCommentsWithRepliesAsync(CommentGetListInput input); - - } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs index 65d43957bc..38a18f7b2a 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Comments/CommentAdminAppService.cs @@ -128,7 +128,7 @@ public class CommentAdminAppService : CmsKitAdminAppServiceBase, ICommentAdminAp input.Author, input.CreationStartDate, input.CreationEndDate, - CommentApproveStateType.Waiting + CommentApproveStateType.Waiting ); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs index 05e041dfdb..c9bdd3eecf 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs @@ -3,6 +3,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.Packages.Prismjs; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.PageToolbars; using Volo.Abp.AutoMapper; using Volo.Abp.Http.ProxyScripting.Generators.JQuery; @@ -16,6 +17,7 @@ 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.Pages.CmsKit.Comments.Approve; using Volo.CmsKit.Admin.Web.Pages.CmsKit.Shared.Components.Comments; using Volo.CmsKit.Localization; using Volo.CmsKit.Permissions; @@ -58,7 +60,7 @@ public class CmsKitAdminWebModule : AbpModule Configure(options => { options.ScriptBundles - .Configure(typeof(IndexModel).FullName, + .Configure(typeof(Abp.SettingManagement.Web.Pages.SettingManagement.IndexModel).FullName, configuration => { configuration.AddFiles("/client-proxies/cms-kit-admin-proxy.js"); @@ -175,8 +177,23 @@ public class CmsKitAdminWebModule : AbpModule requiredPolicyName: CmsKitAdminPermissions.Menus.Update ); }); - }); + }); + //Configure(options => + //{ + // options + // .Extensions() + // .Add(); + //}); + Configure(options => + { + options.ScriptBundles.Configure( + "Volo.Abp.AspNetCore.Mvc.UI.Packages.MarkdownIt.MarkdownItScriptContributor", + bundle => + { + bundle.AddFiles("/libs/markdown-it/markdown-it.min.js"); + }); + }); Configure(options => { options.DisableModule(CmsKitAdminRemoteServiceConsts.ModuleName); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/Index.cshtml index a268a8770c..89c1478b19 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/Index.cshtml +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/Index.cshtml @@ -5,6 +5,7 @@ @using Volo.CmsKit.Admin.Web.Pages.CmsKit.Comments @using Volo.CmsKit.Admin.Web.Menus @using Volo.CmsKit.Localization +@using Volo.Abp.AspNetCore.Mvc.UI.Packages.MarkdownIt @inject IPageLayout PageLayout @inject IHtmlLocalizer L @@ -29,7 +30,8 @@ - + + @* *@ } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/PrismjsScriptBundleContributorDocsExtension.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/PrismjsScriptBundleContributorDocsExtension.cs new file mode 100644 index 0000000000..0d96b7e544 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/PrismjsScriptBundleContributorDocsExtension.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; + +namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Comments.Approve; + +public class PrismjsScriptBundleContributorDocsExtension : BundleContributor +{ + public override void ConfigureBundle(BundleConfigurationContext context) + { + //AddPlugins(context); + context.Files.Add("~/libs/markdown-it/markdown-it.min.js"); + } + //private static void AddPlugins(IBundleConfigurationContext context) + //{ + // context.Files.AddIfNotContains("/libs/markdown-it/markdown-it.min.js"); + //} +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/index.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/index.js index 3e3dc8edf9..fdf11c27f7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/index.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Approve/index.js @@ -136,10 +136,14 @@ title: l("Text"), data: "text", orderable: false, + + render: function (data) { - var converter = new showdown.Converter(); - var htmlContent = converter.makeHtml(data); + //var converter = new showdown.Converter(); + //var htmlContent = converter.makeHtml(data); + var md = window.markdownit(); + var htmlContent = md.render(data); return (htmlContent); } }, diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml.cs index b14c16431e..150c2b3c4c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/Details.cshtml.cs @@ -16,9 +16,8 @@ public class DetailsModel : CmsKitAdminPageModel public DateTime? CreationStartDate { get; set; } public DateTime? CreationEndDate { get; set; } - public CommentApproveStateType commentApproveStateType { get; set; } - //public string IsApproved { get; set; } + public CommentApproveStateType commentApproveStateType { get; set; } public CommentWithAuthorDto CommentWithAuthorDto { get; protected set; } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js index 6bf5fb31cf..9ef9839280 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Comments/details.js @@ -32,10 +32,7 @@ $(function (){ }); var filterForm = $('#CmsKitCommentsFilterForm'); - $('.singledatepicker').on('apply.daterangepicker', function (ev, picker) { - $(this).val(picker.startDate.format('l')); - $(this).data('date', picker.startDate.locale('en').format('YYYY-MM-DD')); - }); + var getFilter = function () { var filterObj = filterForm.serializeFormToObject(); diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Shared/Components/Comments/CommentSettingPageContributor.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Shared/Components/Comments/CommentSettingPageContributor.cs index 3ac869481e..18357d2529 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Shared/Components/Comments/CommentSettingPageContributor.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Shared/Components/Comments/CommentSettingPageContributor.cs @@ -26,7 +26,6 @@ public class CommentSettingPageContributor : ISettingPageContributor public Task CheckPermissionsAsync(SettingPageCreationContext context) { - // You can check the permissions here return Task.FromResult(true); } } \ No newline at end of file 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 312e65d02c..5c74a32813 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 @@ -26,6 +26,7 @@ public class Comment : AggregateRoot, IHasCreationTime, IMustHaveCreator, public virtual string Url { get; set; } public virtual string IdempotencyToken { get; set; } + public virtual bool? IsApproved { get; set; } protected Comment() 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 7abe574065..27929767f7 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 @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; @@ -131,8 +132,12 @@ public class MongoCommentRepository : MongoDbRepository c.EntityId == entityId && c.EntityType == entityType); - - commentsQuery = (IMongoQueryable)FilterCommentsByApprovalState(commentsQuery, commentApproveStateType); + commentsQuery = commentApproveStateType switch + { + CommentApproveStateType.Approved => commentsQuery.Where(c => c.IsApproved == true), + CommentApproveStateType.Disapproved => commentsQuery.Where(c => c.IsApproved == true || c.IsApproved == null), + _ => commentsQuery + }; var comments = await commentsQuery .OrderBy(c => c.CreationTime) @@ -207,18 +212,18 @@ public class MongoCommentRepository : MongoDbRepository c.IsApproved == false) .WhereIf(CommentApproveStateType.Waiting == commentApproveStateType, c => c.IsApproved == null); } - public IQueryable FilterCommentsByApprovalState(IQueryable commentsQuery, CommentApproveStateType approveState) - { - switch (approveState) - { - case CommentApproveStateType.Approved: - commentsQuery = commentsQuery.Where(c => c.IsApproved == true); - break; - case CommentApproveStateType.Disapproved: - commentsQuery = commentsQuery.Where(c => c.IsApproved == true || c.IsApproved == null); - break; - } - - return commentsQuery; - } + //public IQueryable FilterCommentsByApprovalState(IQueryable commentsQuery, CommentApproveStateType approveState) + //{ + // switch (approveState) + // { + // case CommentApproveStateType.Approved: + // commentsQuery = commentsQuery.Where(c => c.IsApproved == true); + // break; + // case CommentApproveStateType.Disapproved: + // commentsQuery = commentsQuery.Where(c => c.IsApproved == true || c.IsApproved == null); + // break; + // } + + // return commentsQuery; + //} }