Browse Source

Created CmsKit common web and initial reaction icon system

pull/4774/head
Halil İbrahim Kalkan 6 years ago
parent
commit
aaf2a17525
  1. 7
      modules/cms-kit/Volo.CmsKit.sln
  2. 4
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs
  3. 3
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml
  4. 16
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs
  5. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs
  6. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj
  7. 29
      modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs
  8. 16
      modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitOptions.cs
  9. 3
      modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xml
  10. 30
      modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xsd
  11. 36
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/LocalizableIconDictionary.cs
  12. 20
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Reactions/ReactionIconDictionary.cs
  13. 33
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj
  14. BIN
      modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/smile.png
  15. BIN
      modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/thumbsup.png
  16. 2
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/CmsKit/en.json
  17. 8
      modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs
  18. 12
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs
  19. 9
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/LocalizableIconDictionary.cs
  20. 11
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs
  21. 8
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs
  22. 4
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicApplicationContractsModule.cs
  23. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs
  24. 4
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs
  25. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetAvailableReactionsDto.cs
  26. 13
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/IReactionPublicAppService.cs
  27. 13
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/ReactionDto.cs
  28. 22
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Reactions/ReactionPublicAppService.cs
  29. 8
      modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs
  30. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs
  31. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenus.cs
  32. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml
  33. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml.cs
  34. 6
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Default.cshtml
  35. 51
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewComponent.cs
  36. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewModel.cs
  37. 16
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionViewModel.cs
  38. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs
  39. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs
  40. 6
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj

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

@ -77,6 +77,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.HttpApi.
EndProject 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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.Web", "src\Volo.CmsKit.Public.Web\Volo.CmsKit.Public.Web.csproj", "{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}"
EndProject 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}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -203,6 +205,10 @@ Global
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU {BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU {BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.Build.0 = Release|Any CPU {BE2572ED-F505-435D-9A90-30DBC6C2DC1D}.Release|Any CPU.Build.0 = Release|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B2C2431-7351-41F0-B5E1-F8A9859FA838}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -242,6 +248,7 @@ Global
{37C03B72-5FD8-4B67-8090-8A20CD8095A6} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE} {37C03B72-5FD8-4B67-8090-8A20CD8095A6} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{E790C2C6-39AC-4068-AA7D-309DC9AA1437} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE} {E790C2C6-39AC-4068-AA7D-309DC9AA1437} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{BE2572ED-F505-435D-9A90-30DBC6C2DC1D} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE} {BE2572ED-F505-435D-9A90-30DBC6C2DC1D} = {3C74B8E8-CB34-49C8-B02A-05E959601FEE}
{4B2C2431-7351-41F0-B5E1-F8A9859FA838} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD}

4
modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs

@ -35,7 +35,6 @@ using Volo.Abp.TenantManagement.Web;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Public; using Volo.CmsKit.Public;
using Volo.CmsKit.Public.Web;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {
@ -82,6 +81,9 @@ namespace Volo.CmsKit
{ {
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical<CmsKitDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain.Shared", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitDomainModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical<CmsKitDomainModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitPublicWebModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Public.Web", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application.Contracts", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical<CmsKitApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application.Contracts", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitApplicationModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical<CmsKitApplicationModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application", Path.DirectorySeparatorChar)));
options.FileSets.ReplaceEmbeddedByPhysical<CmsKitWebModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Web", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical<CmsKitWebModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Web", Path.DirectorySeparatorChar)));

3
modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml

@ -6,6 +6,7 @@
@model IndexModel @model IndexModel
@inject IStringLocalizer<AbpUiResource> Localizer @inject IStringLocalizer<AbpUiResource> Localizer
<h1>CMS Kit DEMO</h1> <h1>CMS Kit DEMO</h1>
<h2>Reactions</h2> <h2>Reactions</h2>
@await Component.InvokeAsync(typeof(ReactionSelectionViewComponent)) @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent))
@* <vc:reaction-selection /> *@

16
modules/cms-kit/src/Volo.CmsKit.Admin.Web/AdminWebModule.cs → modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs

@ -2,32 +2,32 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.CmsKit.Admin.Web.Menus; using Volo.CmsKit.Admin.Web.Menus;
using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
using Volo.CmsKit.Web;
namespace Volo.CmsKit.Admin.Web namespace Volo.CmsKit.Admin.Web
{ {
[DependsOn( [DependsOn(
typeof(AdminHttpApiModule), typeof(AdminHttpApiModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(CmsKitCommonWebModule),
typeof(AbpAutoMapperModule) typeof(AbpAutoMapperModule)
)] )]
public class AdminWebModule : AbpModule public class CmsKitAdminWebModule : AbpModule
{ {
public override void PreConfigureServices(ServiceConfigurationContext context) public override void PreConfigureServices(ServiceConfigurationContext context)
{ {
context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options => context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{ {
options.AddAssemblyResource(typeof(CmsKitResource), typeof(AdminWebModule).Assembly); options.AddAssemblyResource(typeof(CmsKitResource), typeof(CmsKitAdminWebModule).Assembly);
}); });
PreConfigure<IMvcBuilder>(mvcBuilder => PreConfigure<IMvcBuilder>(mvcBuilder =>
{ {
mvcBuilder.AddApplicationPartIfNotExists(typeof(AdminWebModule).Assembly); mvcBuilder.AddApplicationPartIfNotExists(typeof(CmsKitAdminWebModule).Assembly);
}); });
} }
@ -40,13 +40,13 @@ namespace Volo.CmsKit.Admin.Web
Configure<AbpVirtualFileSystemOptions>(options => Configure<AbpVirtualFileSystemOptions>(options =>
{ {
options.FileSets.AddEmbedded<AdminWebModule>(); options.FileSets.AddEmbedded<CmsKitAdminWebModule>();
}); });
context.Services.AddAutoMapperObjectMapper<AdminWebModule>(); context.Services.AddAutoMapperObjectMapper<CmsKitAdminWebModule>();
Configure<AbpAutoMapperOptions>(options => Configure<AbpAutoMapperOptions>(options =>
{ {
options.AddMaps<AdminWebModule>(validate: true); options.AddMaps<CmsKitAdminWebModule>(validate: true);
}); });
Configure<RazorPagesOptions>(options => Configure<RazorPagesOptions>(options =>

2
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs

@ -10,7 +10,7 @@ namespace Volo.CmsKit.Admin.Web.Pages
protected AdminPageModel() protected AdminPageModel()
{ {
LocalizationResourceType = typeof(CmsKitResource); LocalizationResourceType = typeof(CmsKitResource);
ObjectMapperContext = typeof(AdminWebModule); ObjectMapperContext = typeof(CmsKitAdminWebModule);
} }
} }
} }

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

@ -14,10 +14,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj" /> <ProjectReference Include="..\Volo.CmsKit.Common.Web\Volo.CmsKit.Common.Web.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.CmsKit.Admin.HttpApi\Volo.CmsKit.Admin.HttpApi.csproj" /> <ProjectReference Include="..\Volo.CmsKit.Admin.HttpApi\Volo.CmsKit.Admin.HttpApi.csproj" />
</ItemGroup> </ItemGroup>

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

@ -0,0 +1,29 @@
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Reactions;
using Volo.CmsKit.Web.Icons;
namespace Volo.CmsKit.Web
{
[DependsOn(
typeof(AbpAspNetCoreMvcUiThemeSharedModule),
typeof(CmsKitDomainSharedModule)
)]
public class CmsKitCommonWebModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<CmsKitUiOptions>(options =>
{
options.ReactionIcons[StandardReactions.Smile] = new LocalizableIconDictionary("/cms-kit/icons/smile.png");
options.ReactionIcons[StandardReactions.ThumbsUp] = new LocalizableIconDictionary("/cms-kit/icons/thumbsup.png");
});
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<CmsKitCommonWebModule>();
});
}
}
}

16
modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitOptions.cs

@ -0,0 +1,16 @@
using JetBrains.Annotations;
using Volo.CmsKit.Web.Reactions;
namespace Volo.CmsKit.Web
{
public class CmsKitUiOptions
{
[NotNull]
public ReactionIconDictionary ReactionIcons { get; }
public CmsKitUiOptions()
{
ReactionIcons = new ReactionIconDictionary();
}
}
}

3
modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait />
</Weavers>

30
modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

36
modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/LocalizableIconDictionary.cs

@ -0,0 +1,36 @@
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using Volo.Abp;
namespace Volo.CmsKit.Web.Icons
{
public class LocalizableIconDictionary : Dictionary<string, string>
{
[NotNull]
public string Default
{
get => _default;
set => _default = Check.NotNullOrWhiteSpace(value, nameof(value));
}
private string _default;
public LocalizableIconDictionary([NotNull] string defaultIcon)
{
Default = defaultIcon;
}
public string GetLocalizedIconOrDefault(string cultureName = null)
{
cultureName ??= CultureInfo.CurrentUICulture.Name;
var localizedIcon = this.GetOrDefault(cultureName);
if (localizedIcon != null)
{
return localizedIcon;
}
return Default;
}
}
}

20
modules/cms-kit/src/Volo.CmsKit.Common.Web/Reactions/ReactionIconDictionary.cs

@ -0,0 +1,20 @@
using System.Collections.Generic;
using Volo.Abp;
using Volo.CmsKit.Web.Icons;
namespace Volo.CmsKit.Web.Reactions
{
public class ReactionIconDictionary : Dictionary<string, LocalizableIconDictionary>
{
public string GetLocalizedIcon(string name, string cultureName = null)
{
var icon = this.GetOrDefault(name);
if (icon == null)
{
throw new AbpException($"No icon defined for the reaction with name '{name}'");
}
return icon.GetLocalizedIconOrDefault(cultureName);
}
}
}

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

@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\..\..\common.props" />
<Import Project="..\..\..\..\configureawait.props" />
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
<RootNamespace>Volo.CmsKit.Web</RootNamespace>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Domain.Shared\Volo.CmsKit.Domain.Shared.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="3.1.5" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="wwwroot\**\*.*" />
<Content Remove="wwwroot\**\*.*" />
<EmbeddedResource Include="Pages\**\*.css" />
<Content Remove="Pages\**\*.css" />
<EmbeddedResource Include="Pages\**\*.js" />
<Content Remove="Pages\**\*.js" />
</ItemGroup>
</Project>

BIN
modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/smile.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/thumbsup.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

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

@ -4,4 +4,4 @@
"ManageYourProfile": "Manage your profile", "ManageYourProfile": "Manage your profile",
"SamplePageMessage": "A sample page for the CmsKit module" "SamplePageMessage": "A sample page for the CmsKit module"
} }
} }

8
modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs

@ -0,0 +1,8 @@
namespace Volo.CmsKit.Reactions
{
public class StandardReactions
{
public const string Smile = "SM";
public const string ThumbsUp = "TU";
}
}

12
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs

@ -1,12 +1,20 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.CmsKit.Reactions;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {
[DependsOn( [DependsOn(
typeof(CmsKitDomainSharedModule) typeof(CmsKitDomainSharedModule)
)] )]
public class CmsKitDomainModule : AbpModule public class CmsKitDomainModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<CmsKitOptions>(options =>
{
options.Reactions.AddOrReplace(StandardReactions.Smile);
options.Reactions.AddOrReplace(StandardReactions.ThumbsUp);
});
}
} }
} }

9
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/LocalizableIconDictionary.cs

@ -1,9 +0,0 @@
using System.Collections.Generic;
namespace Volo.CmsKit.Reactions
{
public class LocalizableIconDictionary : Dictionary<string, string>
{
public string Default { get; set; }
}
}

11
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs

@ -12,21 +12,12 @@ namespace Volo.CmsKit.Reactions
[CanBeNull] [CanBeNull]
public ILocalizableString DisplayName { get; set; } public ILocalizableString DisplayName { get; set; }
[NotNull]
public LocalizableIconDictionary Icons { get; }
public ReactionDefinition( public ReactionDefinition(
[NotNull] string name, [NotNull] string name,
[NotNull] string defaultIcon,
[CanBeNull] ILocalizableString displayName = null) [CanBeNull] ILocalizableString displayName = null)
{ {
Name = Check.NotNullOrWhiteSpace(name, nameof(name)); Name = Check.NotNullOrWhiteSpace(name, nameof(name));
DisplayName = displayName; DisplayName = displayName;
Icons = new LocalizableIconDictionary
{
Default = Check.NotNullOrWhiteSpace(defaultIcon, nameof(defaultIcon))
};
} }
} }
} }

8
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs

@ -1,9 +1,13 @@
using System.Collections.Generic; using System.Collections.Generic;
using Volo.Abp.Localization;
namespace Volo.CmsKit.Reactions namespace Volo.CmsKit.Reactions
{ {
public class ReactionDefinitionDictionary : Dictionary<string, ReactionDefinition> public class ReactionDefinitionDictionary : Dictionary<string, ReactionDefinition>
{ {
public void AddOrReplace(string name, ILocalizableString displayName = null)
{
this[name] = new ReactionDefinition(name, displayName);
}
} }
} }

4
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs → modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicApplicationContractsModule.cs

@ -1,8 +1,8 @@
using Volo.Abp.Application; using Volo.Abp.Application;
using Volo.Abp.Modularity;
using Volo.Abp.Authorization; using Volo.Abp.Authorization;
using Volo.Abp.Modularity;
namespace Volo.CmsKit.Public namespace Volo.CmsKit
{ {
[DependsOn( [DependsOn(
typeof(CmsKitDomainSharedModule), typeof(CmsKitDomainSharedModule),

9
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissionDefinitionProvider.cs → modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs

@ -2,13 +2,16 @@
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
namespace Volo.CmsKit.Public.Permissions namespace Volo.CmsKit.Permissions
{ {
public class CmsKitPublicPermissionDefinitionProvider : PermissionDefinitionProvider public class CmsKitPublicPermissionDefinitionProvider : PermissionDefinitionProvider
{ {
public override void Define(IPermissionDefinitionContext context) public override void Define(IPermissionDefinitionContext context)
{ {
var myGroup = context.AddGroup(CmsKitPublicPermissions.GroupName, L("Permission:CmsKit.Public")); var myGroup = context.AddGroup(
CmsKitPublicPermissions.GroupName,
L("Permission:CmsKit.Public")
);
} }
private static LocalizableString L(string name) private static LocalizableString L(string name)
@ -16,4 +19,4 @@ namespace Volo.CmsKit.Public.Permissions
return LocalizableString.Create<CmsKitResource>(name); return LocalizableString.Create<CmsKitResource>(name);
} }
} }
} }

4
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissions.cs → modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs

@ -1,6 +1,6 @@
using Volo.Abp.Reflection; using Volo.Abp.Reflection;
namespace Volo.CmsKit.Public.Permissions namespace Volo.CmsKit.Permissions
{ {
public class CmsKitPublicPermissions public class CmsKitPublicPermissions
{ {
@ -11,4 +11,4 @@ namespace Volo.CmsKit.Public.Permissions
return ReflectionHelper.GetPublicConstantsRecursively(typeof(CmsKitPublicPermissions)); return ReflectionHelper.GetPublicConstantsRecursively(typeof(CmsKitPublicPermissions));
} }
} }
} }

9
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetAvailableReactionsDto.cs

@ -0,0 +1,9 @@
namespace Volo.CmsKit.Reactions
{
public class GetAvailableReactionsDto
{
public string EntityType { get; set; }
public string EntityId { get; set; }
}
}

13
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/IReactionPublicAppService.cs

@ -0,0 +1,13 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Volo.CmsKit.Reactions
{
public interface IReactionPublicAppService : IApplicationService
{
Task<ListResultDto<ReactionDto>> GetAvailableReactions(
GetAvailableReactionsDto getAvailableReactionsDto
);
}
}

13
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/ReactionDto.cs

@ -0,0 +1,13 @@
using JetBrains.Annotations;
namespace Volo.CmsKit.Reactions
{
public class ReactionDto
{
[NotNull]
public string Name { get; set; }
[CanBeNull]
public string DisplayName { get; set; }
}
}

22
modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Reactions/ReactionPublicAppService.cs

@ -0,0 +1,22 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Volo.CmsKit.Reactions
{
public class ReactionPublicAppService : ApplicationService, IReactionPublicAppService
{
public Task<ListResultDto<ReactionDto>> GetAvailableReactions(
GetAvailableReactionsDto getAvailableReactionsDto)
{
return Task.FromResult(
new ListResultDto<ReactionDto>(new List<ReactionDto>()
{
new ReactionDto {Name = StandardReactions.ThumbsUp},
new ReactionDto {Name = StandardReactions.Smile, DisplayName = "Smile :)"}
})
);
}
}
}

8
modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs

@ -1,19 +1,19 @@
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.CmsKit.Public.Web.Menus;
using Volo.Abp.AspNetCore.Mvc.Localization; using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
using Volo.CmsKit.Public;
using Volo.CmsKit.Web.Menus;
namespace Volo.CmsKit.Public.Web namespace Volo.CmsKit.Web
{ {
[DependsOn( [DependsOn(
typeof(CmsKitPublicHttpApiModule), typeof(CmsKitPublicHttpApiModule),
typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(CmsKitCommonWebModule),
typeof(AbpAutoMapperModule) typeof(AbpAutoMapperModule)
)] )]
public class CmsKitPublicWebModule : AbpModule public class CmsKitPublicWebModule : AbpModule

2
modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs

@ -1,7 +1,7 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.UI.Navigation; using Volo.Abp.UI.Navigation;
namespace Volo.CmsKit.Public.Web.Menus namespace Volo.CmsKit.Web.Menus
{ {
public class CmsKitPublicMenuContributor : IMenuContributor public class CmsKitPublicMenuContributor : IMenuContributor
{ {

2
modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenus.cs

@ -1,4 +1,4 @@
namespace Volo.CmsKit.Public.Web.Menus namespace Volo.CmsKit.Web.Menus
{ {
public class CmsKitPublicMenus public class CmsKitPublicMenus
{ {

9
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml

@ -1,9 +0,0 @@
@page
@using Microsoft.Extensions.Localization
@using Volo.CmsKit.Localization
@model Volo.CmsKit.Public.Web.Pages.Public.IndexModel
@inject IStringLocalizer<CmsKitResource> L
@{
}
<h1>Public</h1>
<p>@L["SamplePageMessage"]</p>

9
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml.cs

@ -1,9 +0,0 @@
namespace Volo.CmsKit.Public.Web.Pages.Public
{
public class IndexModel : PublicPageModel
{
public void OnGet()
{
}
}
}

6
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Default.cshtml

@ -1,2 +1,8 @@
@model Volo.CmsKit.Web.Pages.CmsKit.Shared.Components.ReactionSelectionViewModel @model Volo.CmsKit.Web.Pages.CmsKit.Shared.Components.ReactionSelectionViewModel
<p>TEST!</p> <p>TEST!</p>
<p>EntityType: @Model.EntityType</p>
<p>EntityId: @Model.EntityId</p>
@foreach (var reaction in Model.Reactions)
{
<img width="20" height="20" src="@reaction.Icon"/>
}

51
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewComponent.cs

@ -1,17 +1,56 @@
using System.Threading.Tasks; using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.CmsKit.Reactions;
namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components
{ {
public class ReactionSelectionViewComponent : AbpViewComponent public class ReactionSelectionViewComponent : AbpViewComponent
{ {
public virtual async Task<IViewComponentResult> InvokeAsync(string entityType = null, string entityId = null) protected IReactionPublicAppService ReactionPublicAppService { get; }
protected CmsKitUiOptions Options { get; }
public ReactionSelectionViewComponent(
IReactionPublicAppService reactionPublicAppService,
IOptions<CmsKitUiOptions> options)
{
ReactionPublicAppService = reactionPublicAppService;
Options = options.Value;
}
public virtual async Task<IViewComponentResult> InvokeAsync(
string entityType = null,
string entityId = null)
{ {
return View( var result = await ReactionPublicAppService.GetAvailableReactions(
"~/Pages/CmsKit/Shared/Components/Default.cshtml", new GetAvailableReactionsDto
new ReactionSelectionViewModel() {
); EntityType = entityType,
EntityId = entityId
}
);
var viewModel = new ReactionSelectionViewModel
{
EntityType = entityType,
EntityId = entityId,
Reactions = new List<ReactionViewModel>()
};
foreach (var reactionDto in result.Items)
{
viewModel.Reactions.Add(
new ReactionViewModel
{
Name = reactionDto.Name,
DisplayName = reactionDto.DisplayName,
Icon = Options.ReactionIcons.GetLocalizedIcon(reactionDto.Name)
});
}
return View("~/Pages/CmsKit/Shared/Components/Default.cshtml", viewModel);
} }
} }
} }

9
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewModel.cs

@ -1,7 +1,14 @@
namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components using System.Collections.Generic;
using Volo.CmsKit.Reactions;
namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components
{ {
public class ReactionSelectionViewModel public class ReactionSelectionViewModel
{ {
public string EntityType { get; set; }
public string EntityId { get; set; }
public List<ReactionViewModel> Reactions { get; set; }
} }
} }

16
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionViewModel.cs

@ -0,0 +1,16 @@
using JetBrains.Annotations;
namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components
{
public class ReactionViewModel
{
[NotNull]
public string Name { get; set; }
[CanBeNull]
public string DisplayName { get; set; }
[NotNull]
public string Icon { get; set; }
}
}

2
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs

@ -1,7 +1,7 @@
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
namespace Volo.CmsKit.Public.Web.Pages namespace Volo.CmsKit.Web.Pages
{ {
/* Inherit your PageModel classes from this class. /* Inherit your PageModel classes from this class.
*/ */

2
modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs

@ -1,6 +1,6 @@
using AutoMapper; using AutoMapper;
namespace Volo.CmsKit.Public.Web namespace Volo.CmsKit.Web
{ {
public class PublicWebAutoMapperProfile : Profile public class PublicWebAutoMapperProfile : Profile
{ {

6
modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj

@ -14,10 +14,10 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared\Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.CmsKit.Common.Web\Volo.CmsKit.Common.Web.csproj" />
<ProjectReference Include="..\Volo.CmsKit.Public.HttpApi\Volo.CmsKit.Public.HttpApi.csproj" /> <ProjectReference Include="..\Volo.CmsKit.Public.HttpApi\Volo.CmsKit.Public.HttpApi.csproj" />
</ItemGroup> </ItemGroup>
@ -30,10 +30,6 @@
<EmbeddedResource Include="Pages\**\*.js" /> <EmbeddedResource Include="Pages\**\*.js" />
<Content Remove="Pages\**\*.css" /> <Content Remove="Pages\**\*.css" />
<Content Remove="Pages\**\*.js" /> <Content Remove="Pages\**\*.js" />
<Content Update="Pages\CmsKit\Shared\Components\Default.cshtml">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup> </ItemGroup>
</Project> </Project>

Loading…
Cancel
Save