Browse Source

Merge pull request #13242 from abpframework/adding-widget-to-editor

Adding widget to editor
pull/13253/head
Enis Necipoglu 4 years ago
committed by GitHub
parent
commit
6b51245c20
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 54
      modules/cms-kit/Volo.CmsKit.sln
  2. 12
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/ContentWidgetDto.cs
  3. 9
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs
  4. 32
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs
  5. 22
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs
  6. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.cs
  7. 41
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/cms-kit-admin-generate-proxy.json
  8. 25
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs
  9. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml
  10. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml
  11. 29
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js
  12. 29
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js
  13. 39
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml
  14. 49
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs
  15. 69
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/addWidgetModal.js
  16. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml
  17. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Update.cshtml
  18. 33
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js
  19. 29
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js
  20. 17
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/wwwroot/client-proxies/cms-kit-admin-proxy.js
  21. 10
      modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/WidgetDetailDto.cs
  22. 5
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs
  23. 5
      modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs
  24. 5
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json
  25. 5
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json

54
modules/cms-kit/Volo.CmsKit.sln

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29001.49
# Visual Studio Version 17
VisualStudioVersion = 17.2.32616.157
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Domain.Shared", "src\Volo.CmsKit.Domain.Shared\Volo.CmsKit.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}"
EndProject
@ -57,37 +57,37 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "public", "public", "{3C74B8
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "admin", "admin", "{E737206B-FA99-4460-861D-82902ECE93DB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Admin.Application", "src\Volo.CmsKit.Admin.Application\Volo.CmsKit.Admin.Application.csproj", "{A5363215-BF61-467F-80D0-40D93590F509}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Admin.Application", "src\Volo.CmsKit.Admin.Application\Volo.CmsKit.Admin.Application.csproj", "{A5363215-BF61-467F-80D0-40D93590F509}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Admin.Application.Contracts", "src\Volo.CmsKit.Admin.Application.Contracts\Volo.CmsKit.Admin.Application.Contracts.csproj", "{AE000591-86E3-4AD4-AA86-C47FED4A3ACB}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Admin.Application.Contracts", "src\Volo.CmsKit.Admin.Application.Contracts\Volo.CmsKit.Admin.Application.Contracts.csproj", "{AE000591-86E3-4AD4-AA86-C47FED4A3ACB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Admin.HttpApi", "src\Volo.CmsKit.Admin.HttpApi\Volo.CmsKit.Admin.HttpApi.csproj", "{A402371A-B714-4BBC-AC22-9C0BD7679F25}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Admin.HttpApi", "src\Volo.CmsKit.Admin.HttpApi\Volo.CmsKit.Admin.HttpApi.csproj", "{A402371A-B714-4BBC-AC22-9C0BD7679F25}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Admin.HttpApi.Client", "src\Volo.CmsKit.Admin.HttpApi.Client\Volo.CmsKit.Admin.HttpApi.Client.csproj", "{97D7BB7A-1D45-4E54-B327-3718F62E8A86}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Admin.HttpApi.Client", "src\Volo.CmsKit.Admin.HttpApi.Client\Volo.CmsKit.Admin.HttpApi.Client.csproj", "{97D7BB7A-1D45-4E54-B327-3718F62E8A86}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Admin.Web", "src\Volo.CmsKit.Admin.Web\Volo.CmsKit.Admin.Web.csproj", "{CA6A7FAF-0EF9-42D9-B7A3-5CA690687045}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Admin.Web", "src\Volo.CmsKit.Admin.Web\Volo.CmsKit.Admin.Web.csproj", "{CA6A7FAF-0EF9-42D9-B7A3-5CA690687045}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.Application", "src\Volo.CmsKit.Public.Application\Volo.CmsKit.Public.Application.csproj", "{E3963E05-9645-4AFD-AC99-C5E9F9153B61}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Public.Application", "src\Volo.CmsKit.Public.Application\Volo.CmsKit.Public.Application.csproj", "{E3963E05-9645-4AFD-AC99-C5E9F9153B61}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.Application.Contracts", "src\Volo.CmsKit.Public.Application.Contracts\Volo.CmsKit.Public.Application.Contracts.csproj", "{50147423-F37D-46D3-A25D-C51CD48A7DA7}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Public.Application.Contracts", "src\Volo.CmsKit.Public.Application.Contracts\Volo.CmsKit.Public.Application.Contracts.csproj", "{50147423-F37D-46D3-A25D-C51CD48A7DA7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.HttpApi", "src\Volo.CmsKit.Public.HttpApi\Volo.CmsKit.Public.HttpApi.csproj", "{37C03B72-5FD8-4B67-8090-8A20CD8095A6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Public.HttpApi", "src\Volo.CmsKit.Public.HttpApi\Volo.CmsKit.Public.HttpApi.csproj", "{37C03B72-5FD8-4B67-8090-8A20CD8095A6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.HttpApi.Client", "src\Volo.CmsKit.Public.HttpApi.Client\Volo.CmsKit.Public.HttpApi.Client.csproj", "{E790C2C6-39AC-4068-AA7D-309DC9AA1437}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Public.HttpApi.Client", "src\Volo.CmsKit.Public.HttpApi.Client\Volo.CmsKit.Public.HttpApi.Client.csproj", "{E790C2C6-39AC-4068-AA7D-309DC9AA1437}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.Web", "src\Volo.CmsKit.Public.Web\Volo.CmsKit.Public.Web.csproj", "{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Public.Web", "src\Volo.CmsKit.Public.Web\Volo.CmsKit.Public.Web.csproj", "{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Web", "src\Volo.CmsKit.Common.Web\Volo.CmsKit.Common.Web.csproj", "{4B2C2431-7351-41F0-B5E1-F8A9859FA838}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Common.Web", "src\Volo.CmsKit.Common.Web\Volo.CmsKit.Common.Web.csproj", "{4B2C2431-7351-41F0-B5E1-F8A9859FA838}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Application.Contracts", "src\Volo.CmsKit.Common.Application.Contracts\Volo.CmsKit.Common.Application.Contracts.csproj", "{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Common.Application.Contracts", "src\Volo.CmsKit.Common.Application.Contracts\Volo.CmsKit.Common.Application.Contracts.csproj", "{A0D38C5B-047F-49C1-9A6D-B41E4FB9B323}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.Application", "src\Volo.CmsKit.Common.Application\Volo.CmsKit.Common.Application.csproj", "{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Common.Application", "src\Volo.CmsKit.Common.Application\Volo.CmsKit.Common.Application.csproj", "{5D9BD65D-353E-4618-BE49-E1DF4CFF2393}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi", "src\Volo.CmsKit.Common.HttpApi\Volo.CmsKit.Common.HttpApi.csproj", "{E8CC280A-D049-4564-9C71-2F5657C17937}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Common.HttpApi", "src\Volo.CmsKit.Common.HttpApi\Volo.CmsKit.Common.HttpApi.csproj", "{E8CC280A-D049-4564-9C71-2F5657C17937}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Common.HttpApi.Client", "src\Volo.CmsKit.Common.HttpApi.Client\Volo.CmsKit.Common.HttpApi.Client.csproj", "{EC98F006-2002-4CE2-AA62-5EBB589ACD79}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Common.HttpApi.Client", "src\Volo.CmsKit.Common.HttpApi.Client\Volo.CmsKit.Common.HttpApi.Client.csproj", "{EC98F006-2002-4CE2-AA62-5EBB589ACD79}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Installer", "src\Volo.CmsKit.Installer\Volo.CmsKit.Installer.csproj", "{908C157E-2352-4373-BF5D-E5DA19913390}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.CmsKit.Installer", "src\Volo.CmsKit.Installer\Volo.CmsKit.Installer.csproj", "{908C157E-2352-4373-BF5D-E5DA19913390}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -244,28 +244,28 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D64C1577-4929-4B60-939E-96DE1534891A} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{78040F9E-3501-4A40-82DF-00A597710F35} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{F1C58097-4C08-4D88-8976-6B3389391481} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{527F645C-C1FC-406E-8479-81386C8ECF13} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{D0AD9179-125C-40B2-A8EE-CD4C1EE24BB6} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{90CB5DC4-C040-45C7-8900-9688B26405BC} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{3B7B6317-1B85-4164-8E11-75574F80AE17} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}
{73513786-B6C6-4A21-89C5-0FBDD0A46107} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{690203F4-3CD5-4569-88D9-EE831EEA5F5F} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{F6AC8D4A-EDD7-4514-8E8A-5BCB019864DB} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{3D872C41-E226-45C8-89C1-9D3DBD7C73F2} = {E400416D-2895-4512-9D17-90681EEC7E0A}
{DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{D64C1577-4929-4B60-939E-96DE1534891A} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{F1C58097-4C08-4D88-8976-6B3389391481} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
{963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{78040F9E-3501-4A40-82DF-00A597710F35} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{3B7B6317-1B85-4164-8E11-75574F80AE17} = {963FBC0A-1FBA-47DA-8A61-8F57D3EC8D49}
{3C74B8E8-CB34-49C8-B02A-05E959601FEE} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{E737206B-FA99-4460-861D-82902ECE93DB} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545}
{A5363215-BF61-467F-80D0-40D93590F509} = {E737206B-FA99-4460-861D-82902ECE93DB}

12
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/ContentWidgetDto.cs

@ -0,0 +1,12 @@
using System;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Admin.Contents;
[Serializable]
public class ContentWidgetDto
{
public string Key { get; set; }
public WidgetDetailDto Details { get; set; }
}

9
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Contents/IContentAdminAppService.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Volo.CmsKit.Admin.Contents;
public interface IContentAdminAppService : IApplicationService
{
Task<ListResultDto<ContentWidgetDto>> GetWidgetsAsync();
}

32
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Contents/ContentAdminAppService.cs

@ -0,0 +1,32 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Volo.Abp.Application.Dtos;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Admin.Contents;
public class ContentAdminAppService : CmsKitAdminAppServiceBase, IContentAdminAppService
{
private readonly CmsKitContentWidgetOptions _options;
public ContentAdminAppService(IOptions<CmsKitContentWidgetOptions> options)
{
_options = options.Value;
}
public virtual Task<ListResultDto<ContentWidgetDto>> GetWidgetsAsync()
{
return Task.FromResult(new ListResultDto<ContentWidgetDto>()
{
Items = _options.WidgetConfigs
.Select(n =>
new ContentWidgetDto
{
Key = n.Key,
Details = new WidgetDetailDto() { EditorComponentName = n.Value.EditorComponentName, Name = n.Value.Name },
}).ToList()
});
}
}

22
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/ClientProxies/ContentAdminClientProxy.Generated.cs

@ -0,0 +1,22 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Modeling;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.CmsKit.Admin.Contents;
// ReSharper disable once CheckNamespace
namespace Volo.CmsKit.Admin.Contents.ClientProxies;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IContentAdminAppService), typeof(ContentAdminClientProxy))]
public partial class ContentAdminClientProxy : ClientProxyBase<IContentAdminAppService>, IContentAdminAppService
{
public virtual async Task<ListResultDto<ContentWidgetDto>> GetWidgetsAsync()
{
return await RequestAsync<ListResultDto<ContentWidgetDto>>(nameof(GetWidgetsAsync));
}
}

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

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

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

@ -1191,6 +1191,35 @@
}
}
},
"Volo.CmsKit.Admin.Contents.ContentAdminController": {
"controllerName": "ContentAdmin",
"controllerGroupName": "ContentAdmin",
"isRemoteService": true,
"apiVersion": null,
"type": "Volo.CmsKit.Admin.Contents.ContentAdminController",
"interfaces": [
{
"type": "Volo.CmsKit.Admin.Contents.IContentAdminAppService"
}
],
"actions": {
"GetWidgetsAsync": {
"uniqueName": "GetWidgetsAsync",
"name": "GetWidgetsAsync",
"httpMethod": "GET",
"url": "api/cms-kit-admin/contents",
"supportedVersions": [],
"parametersOnMethod": [],
"parameters": [],
"returnValue": {
"type": "Volo.Abp.Application.Dtos.ListResultDto<Volo.CmsKit.Admin.Contents.ContentWidgetDto>",
"typeSimple": "Volo.Abp.Application.Dtos.ListResultDto<Volo.CmsKit.Admin.Contents.ContentWidgetDto>"
},
"allowAnonymous": null,
"implementFrom": "Volo.CmsKit.Admin.Contents.IContentAdminAppService"
}
}
},
"Volo.CmsKit.Admin.Comments.CommentAdminController": {
"controllerName": "CommentAdmin",
"controllerGroupName": "CommentAdmin",
@ -1953,6 +1982,18 @@
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "TagId",
"jsonName": null,
"type": "System.Guid?",
"typeSimple": "string?",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "input"
},
{
"nameOnMethod": "input",
"name": "Status",

25
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/Admin/Contents/ContentAdminController.cs

@ -0,0 +1,25 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.Contents;
[RemoteService(Name = CmsKitAdminRemoteServiceConsts.RemoteServiceName)]
[Area(CmsKitAdminRemoteServiceConsts.ModuleName)]
[Route("api/cms-kit-admin/contents")]
public class ContentAdminController : CmsKitAdminController, IContentAdminAppService
{
protected IContentAdminAppService ContentAdminAppService { get; }
public ContentAdminController(IContentAdminAppService contentAdminAppService)
{
ContentAdminAppService = contentAdminAppService;
}
[HttpGet]
public virtual Task<ListResultDto<ContentWidgetDto>> GetWidgetsAsync()
{
return ContentAdminAppService.GetWidgetsAsync();
}
}

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml

@ -31,6 +31,7 @@
<abp-script src="/client-proxies/cms-kit-common-proxy.js"/>
<abp-script src="/client-proxies/cms-kit-admin-proxy.js"/>
<abp-script src="/Pages/CmsKit/BlogPosts/create.js"/>
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
</abp-script-bundle>
}

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

@ -29,6 +29,7 @@
<abp-script src="/client-proxies/cms-kit-common-proxy.js"/>
<abp-script src="/client-proxies/cms-kit-admin-proxy.js"/>
<abp-script src="/Pages/CmsKit/BlogPosts/update.js"/>
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
</abp-script-bundle>
}

29
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js

@ -22,6 +22,7 @@ $(function () {
var $tagsInput = $('.tag-editor-form input[name=tags]');
var $fileInput = $('#BlogPostCoverImage');
var $tagsWrapper = $('#blog-post-tags-wrapper');
var widgetModal = new abp.ModalManager({ viewUrl: abp.appPath + "CmsKit/Contents/AddWidgetModal", modalClass: "addWidgetModal" });
var UPPY_FILE_ID = "uppy-upload-file";
@ -274,6 +275,19 @@ $(function () {
minHeight: "25em",
initialEditType: 'markdown',
language: $editorContainer.data("language"),
toolbarItems: [
['heading', 'bold', 'italic', 'strike'],
['hr', 'quote'],
['ul', 'ol', 'task', 'indent', 'outdent'],
['table', 'image', 'link'],
['code', 'codeblock'],
// Using Option: Customize the last button
[{
el: createAddWidgetButton(),
command: 'bold',
tooltip: 'Add Widget'
}]
],
hooks: {
addImageBlobHook: uploadFile,
},
@ -318,4 +332,19 @@ $(function () {
}
});
}
function createAddWidgetButton() {
const button = document.createElement('button');
button.className = 'toastui-editor-toolbar-icons last dropdown';
button.style.backgroundImage = 'none';
button.style.margin = '0';
button.innerHTML = `AW`;
button.addEventListener('click', (event) => {
event.preventDefault();
widgetModal.open();
});
return button;
}
});

29
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js

@ -11,6 +11,7 @@ $(function () {
var $tagsInput = $('.tag-editor-form input[name=tags]');
var $fileInput = $('#BlogPostCoverImage');
var $buttonRemoveCoverImage = $('#button-remove-cover-image');
var widgetModal = new abp.ModalManager({ viewUrl: abp.appPath + "CmsKit/Contents/AddWidgetModal", modalClass: "addWidgetModal" });
var UPPY_FILE_ID = "uppy-upload-file";
@ -185,6 +186,19 @@ $(function () {
minHeight: "25em",
initialEditType: 'markdown',
language: $editorContainer.data("language"),
toolbarItems: [
['heading', 'bold', 'italic', 'strike'],
['hr', 'quote'],
['ul', 'ol', 'task', 'indent', 'outdent'],
['table', 'image', 'link'],
['code', 'codeblock'],
// Using Option: Customize the last button
[{
el: createAddWidgetButton(),
command: 'bold',
tooltip: 'Add Widget'
}]
],
hooks: {
addImageBlobHook: uploadFile,
},
@ -240,4 +254,19 @@ $(function () {
}
);
});
function createAddWidgetButton() {
const button = document.createElement('button');
button.className = 'toastui-editor-toolbar-icons last dropdown';
button.style.backgroundImage = 'none';
button.style.margin = '0';
button.innerHTML = `AW`;
button.addEventListener('click', (event) => {
event.preventDefault();
widgetModal.open();
});
return button;
}
});

39
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml

@ -0,0 +1,39 @@
@page
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Localization
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents;
@inject IHtmlLocalizer<CmsKitResource> L
@model AddWidgetModal;
@{
Layout = null;
}
@section scripts {
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
}
<abp-modal size="Large" id="addWidgetModal">
<abp-modal-header title="@L["AddWidget"].Value"></abp-modal-header>
<abp-modal-body>
<div class="container">
@if (Model.Widgets.Count() > 1)
{
<abp-select asp-for="ViewModel.Widget" />
foreach (var item in Model.ViewModel.Details)
{
<div hidden id="editor-@item.Name">@await Component.InvokeAsync(@item.EditorComponentName)</div>
}
<div class="mb-3" id="PropertySideId">
</div>
<button class="btn btn-primary float-end" type="submit" id="save-changes">@L["Add"]</button>
}
else
{
<p>@L["PleaseConfigureWidgets"].Value</p>
}
</div>
</abp-modal-body>
</abp-modal>

49
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/AddWidgetModal.cshtml.cs

@ -0,0 +1,49 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.CmsKit.Admin.Contents;
using Volo.CmsKit.Contents;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Contents;
public class AddWidgetModal : AbpPageModel
{
protected IContentAdminAppService ContentAdminAppService { get; }
[BindProperty]
public ContentViewModel ViewModel { get; set; }
public List<SelectListItem> Widgets { get; set; } = new();
public AddWidgetModal(IContentAdminAppService contentAdminAppService)
{
ContentAdminAppService = contentAdminAppService;
}
public async Task OnGetAsync()
{
var widgets = await ContentAdminAppService.GetWidgetsAsync();
ViewModel = new ContentViewModel()
{
Details = widgets.Items.Select(p => p.Details).ToList()
};
Widgets = new List<SelectListItem>() { new(string.Empty, string.Empty) };
Widgets.AddRange(widgets
.Items
.Select(w => new SelectListItem(w.Key, w.Details.Name))
.ToList());
}
public class ContentViewModel
{
[SelectItems(nameof(Widgets))]
public string Widget { get; set; }
public List<WidgetDetailDto> Details { get; set; }
}
}

69
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Contents/addWidgetModal.js

@ -0,0 +1,69 @@
var abp = abp || {};
$(function () {
abp.modals.addWidgetModal = function () {
var initModal = function () {
let widgetType;
$("#ViewModel_Widget").change(function () {
widgetType = $("#ViewModel_Widget").val();
$('.widget-detail').attr('hidden', 'true');
$('#editor-' + widgetType).removeAttr('hidden');
});
$("#save-changes").click(function () {
var widgetKey = $("#WidgetCode").val();
if (widgetKey != undefined) {
let html = " <input hidden class=\"properties form-control\" value=\"" + widgetKey + "\" id=\"Code\" type=\"text\" />"
$("#PropertySideId").append(html);
}
var keys = [];
var values = [];
$(".properties").each(function () {
if (($.trim($(this).val()).length > 0)) {
keys.push(this.id);
values.push($(this).val());
}
});
var contentEditorText = $("#ContentEditor")[0].innerText
.replace('WritePreview', '')
.replace('MarkdownWYSIWYG', '')
.replace('AW', '');
let updatedText = '';
if (widgetType != undefined) {
updatedText = "[Widget Type=\"" + widgetType + "\" ";
for (var i = 0; i < keys.length; i++) {
updatedText += keys[i] + "=\"" + values[i];
updatedText += i == (keys.length - 1) ? "\"" : "\" ";
}
updatedText += "]";
}
if (contentEditorText == '\n\n\n') {
//TODO fails event
var fixedData = "<div>" + updatedText + "</div>";
var innerHtml = $("#ContentEditor")[0].innerHTML;
var replacedInnerHtml = innerHtml.replace('<div><br></div>', fixedData);
$("#ContentEditor")[0].innerHTML = replacedInnerHtml;
}
else {
$('.ProseMirror div').contents()[0].data = contentEditorText + updatedText;
}
$('#addWidgetModal').modal('hide');
});
};
return {
initModal: initModal
};
};
});

1
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml

@ -29,6 +29,7 @@
<abp-script src="/client-proxies/cms-kit-common-proxy.js"/>
<abp-script src="/client-proxies/cms-kit-admin-proxy.js"/>
<abp-script src="/Pages/CmsKit/Pages/create.js" />
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
</abp-script-bundle>
}

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

@ -30,6 +30,7 @@
<abp-script src="/client-proxies/cms-kit-common-proxy.js"/>
<abp-script src="/client-proxies/cms-kit-admin-proxy.js"/>
<abp-script src="/Pages/CmsKit/Pages/update.js" />
<abp-script src="/Pages/CmsKit/Contents/addWidgetModal.js" />
</abp-script-bundle>
}

33
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js

@ -6,6 +6,8 @@ $(function () {
var $slug = $('#ViewModel_Slug');
var $buttonSubmit = $('#button-page-create');
var widgetModal = new abp.ModalManager({ viewUrl: abp.appPath + "CmsKit/Contents/AddWidgetModal", modalClass: "addWidgetModal" });
var scriptEditor = CodeMirror.fromTextArea(document.getElementById("ViewModel_Script"), {
mode: "javascript",
lineNumbers: true
@ -25,7 +27,7 @@ $(function () {
$createForm.on('submit', function (e) {
e.preventDefault();
if ($createForm.valid()) {
abp.ui.setBusy();
@ -112,6 +114,19 @@ $(function () {
minHeight: "25em",
initialEditType: 'markdown',
language: $editorContainer.data("language"),
toolbarItems: [
['heading', 'bold', 'italic', 'strike'],
['hr', 'quote'],
['ul', 'ol', 'task', 'indent', 'outdent'],
['table', 'image', 'link'],
['code', 'codeblock'],
// Using Option: Customize the last button
[{
el: createAddWidgetButton(),
command: 'bold',
tooltip: 'Add Widget'
}]
],
hooks: {
addImageBlobHook: uploadFile,
},
@ -155,4 +170,20 @@ $(function () {
}
});
}
function createAddWidgetButton() {
//TODO add auth
const button = document.createElement('button');
button.className = 'toastui-editor-toolbar-icons last dropdown';
button.style.backgroundImage = 'none';
button.style.margin = '0';
button.innerHTML = `AW`;
button.addEventListener('click', (event) => {
event.preventDefault();
widgetModal.open();
});
return button;
}
});

29
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js

@ -4,6 +4,7 @@ $(function () {
var $formUpdate = $('#form-page-update');
var $buttonSubmit = $('#button-page-update');
var widgetModal = new abp.ModalManager({ viewUrl: abp.appPath + "CmsKit/Contents/AddWidgetModal", modalClass: "addWidgetModal" });
$formUpdate.data('validator').settings.ignore = ":hidden, [contenteditable='true']:not([name]), .tui-popup-wrapper";
@ -83,6 +84,19 @@ $(function () {
minHeight: "25em",
initialEditType: 'markdown',
language: $editorContainer.data("language"),
toolbarItems: [
['heading', 'bold', 'italic', 'strike'],
['hr', 'quote'],
['ul', 'ol', 'task', 'indent', 'outdent'],
['table', 'image', 'link'],
['code', 'codeblock'],
// Using Option: Customize the last button
[{
el: createAddWidgetButton(),
command: 'bold',
tooltip: 'Add Widget'
}]
],
hooks: {
addImageBlobHook: uploadFile,
},
@ -126,4 +140,19 @@ $(function () {
}
});
}
function createAddWidgetButton() {
const button = document.createElement('button');
button.className = 'toastui-editor-toolbar-icons last dropdown';
button.style.backgroundImage = 'none';
button.style.margin = '0';
button.innerHTML = `AW`;
button.addEventListener('click', (event) => {
event.preventDefault();
widgetModal.open();
});
return button;
}
});

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

@ -247,6 +247,21 @@
})();
// controller volo.cmsKit.admin.contents.contentAdmin
(function(){
abp.utils.createNamespace(window, 'volo.cmsKit.admin.contents.contentAdmin');
volo.cmsKit.admin.contents.contentAdmin.getWidgets = function(ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-admin/contents',
type: 'GET'
}, ajaxParams));
};
})();
// controller volo.cmsKit.admin.comments.commentAdmin
(function(){
@ -378,7 +393,7 @@
volo.cmsKit.admin.blogs.blogPostAdmin.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/cms-kit-admin/blogs/blog-posts' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'blogId', value: input.blogId }, { name: 'authorId', value: input.authorId }, { name: 'status', value: input.status }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
url: abp.appPath + 'api/cms-kit-admin/blogs/blog-posts' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'blogId', value: input.blogId }, { name: 'authorId', value: input.authorId }, { name: 'tagId', value: input.tagId }, { name: 'status', value: input.status }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};

10
modules/cms-kit/src/Volo.CmsKit.Common.Application.Contracts/Volo/CmsKit/Contents/WidgetDetailDto.cs

@ -0,0 +1,10 @@
using System;
namespace Volo.CmsKit.Contents;
[Serializable]
public class WidgetDetailDto
{
public string Name { get; set; }
public string EditorComponentName { get; set; }
}

5
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/CmsKitContentWidgetOptions.cs

@ -11,8 +11,9 @@ public class CmsKitContentWidgetOptions
WidgetConfigs = new();
}
public void AddWidget(string widgetName, string widgetKey)
public void AddWidget(string widgetKey, string widgetName, string editorWidgetName = null)
{
WidgetConfigs.Add(widgetName, new ContentWidgetConfig(widgetKey));
var config = new ContentWidgetConfig(widgetName, editorWidgetName);
WidgetConfigs.Add(widgetKey, config);
}
}

5
modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/Contents/ContentWidgetConfig.cs

@ -3,9 +3,12 @@
public class ContentWidgetConfig
{
public string Name { get; }
public string EditorComponentName { get; }
public ContentWidgetConfig(string widgetName)
public ContentWidgetConfig(string widgetName, string editorComponentName)
{
Name = widgetName;
EditorComponentName = editorComponentName;
}
}

5
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/en.json

@ -181,6 +181,9 @@
"HasBlogPostWaitingForReviewMessage": "You have a blog post waiting for review. Click to list.",
"SelectAStatus": "Select a status",
"Status": "Status",
"CmsKit.BlogPost.ScrollIndex": "Quick navigation bar in blog posts"
"CmsKit.BlogPost.ScrollIndex": "Quick navigation bar in blog posts",
"Add": "Add",
"AddWidget": "Add Widget",
"PleaseConfigureWidgets": "Please configure widgets"
}
}

5
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/Resources/tr.json

@ -187,6 +187,9 @@
"InThisDocument": "Bu belgede",
"RemoveCoverImageConfirmationMessage": "Kapak resmini kaldırmak istediğinize emin misiniz?",
"RemoveCoverImage": "Kapak resmini kaldır",
"CmsKit.BlogPost.ScrollIndex": "Blog yazılarında hızlı gezinme çubuğu"
"CmsKit.BlogPost.ScrollIndex": "Blog yazılarında hızlı gezinme çubuğu",
"Add": "Ekle",
"AddWidget": "Widget Ekle",
"PleaseConfigureWidgets": "Lütfen widget'leri yapılandırın"
}
}

Loading…
Cancel
Save