diff --git a/modules/cms-kit/Volo.CmsKit.sln b/modules/cms-kit/Volo.CmsKit.sln index 9874845fd1..e5fc80fceb 100644 --- a/modules/cms-kit/Volo.CmsKit.sln +++ b/modules/cms-kit/Volo.CmsKit.sln @@ -77,6 +77,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.CmsKit.Public.HttpApi. 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}" 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 GlobalSection(SolutionConfigurationPlatforms) = preSolution 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}.Release|Any CPU.ActiveCfg = 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 GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -242,6 +248,7 @@ Global {37C03B72-5FD8-4B67-8090-8A20CD8095A6} = {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} + {4B2C2431-7351-41F0-B5E1-F8A9859FA838} = {DDE20914-DD1B-4C7B-86FF-F21E6B5DF1D1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs index cfa94589fe..69377a1416 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/CmsKitWebUnifiedModule.cs +++ b/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.VirtualFileSystem; using Volo.CmsKit.Public; -using Volo.CmsKit.Public.Web; namespace Volo.CmsKit { @@ -82,6 +81,9 @@ namespace Volo.CmsKit { options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain.Shared", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Domain", Path.DirectorySeparatorChar))); + + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Public.Web", Path.DirectorySeparatorChar))); + options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application.Contracts", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Application", Path.DirectorySeparatorChar))); options.FileSets.ReplaceEmbeddedByPhysical(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Volo.CmsKit.Web", Path.DirectorySeparatorChar))); diff --git a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml index c504c5b668..f657733499 100644 --- a/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml +++ b/modules/cms-kit/host/Volo.CmsKit.Web.Unified/Pages/Index.cshtml @@ -6,6 +6,7 @@ @model IndexModel @inject IStringLocalizer Localizer

CMS Kit DEMO

+

Reactions

+ @await Component.InvokeAsync(typeof(ReactionSelectionViewComponent)) -@* *@ diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/AdminWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs similarity index 78% rename from modules/cms-kit/src/Volo.CmsKit.Admin.Web/AdminWebModule.cs rename to modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs index 3ba99fc617..45d2d2e24f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/AdminWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs @@ -2,32 +2,32 @@ using Microsoft.Extensions.DependencyInjection; using Volo.CmsKit.Admin.Web.Menus; using Volo.Abp.AspNetCore.Mvc.Localization; -using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AutoMapper; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.VirtualFileSystem; using Volo.CmsKit.Localization; +using Volo.CmsKit.Web; namespace Volo.CmsKit.Admin.Web { [DependsOn( typeof(AdminHttpApiModule), - typeof(AbpAspNetCoreMvcUiThemeSharedModule), + typeof(CmsKitCommonWebModule), typeof(AbpAutoMapperModule) )] - public class AdminWebModule : AbpModule + public class CmsKitAdminWebModule : AbpModule { public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.PreConfigure(options => { - options.AddAssemblyResource(typeof(CmsKitResource), typeof(AdminWebModule).Assembly); + options.AddAssemblyResource(typeof(CmsKitResource), typeof(CmsKitAdminWebModule).Assembly); }); PreConfigure(mvcBuilder => { - mvcBuilder.AddApplicationPartIfNotExists(typeof(AdminWebModule).Assembly); + mvcBuilder.AddApplicationPartIfNotExists(typeof(CmsKitAdminWebModule).Assembly); }); } @@ -40,13 +40,13 @@ namespace Volo.CmsKit.Admin.Web Configure(options => { - options.FileSets.AddEmbedded(); + options.FileSets.AddEmbedded(); }); - context.Services.AddAutoMapperObjectMapper(); + context.Services.AddAutoMapperObjectMapper(); Configure(options => { - options.AddMaps(validate: true); + options.AddMaps(validate: true); }); Configure(options => diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs index 3143ff64e8..c086daefbd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/AdminPageModel.cs @@ -10,7 +10,7 @@ namespace Volo.CmsKit.Admin.Web.Pages protected AdminPageModel() { LocalizationResourceType = typeof(CmsKitResource); - ObjectMapperContext = typeof(AdminWebModule); + ObjectMapperContext = typeof(CmsKitAdminWebModule); } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj index 82dc3e4544..13a7dedc7f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Web/Volo.CmsKit.Admin.Web.csproj @@ -14,10 +14,7 @@ - - - - + diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitCommonWebModule.cs new file mode 100644 index 0000000000..b59ac9b711 --- /dev/null +++ b/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(options => + { + options.ReactionIcons[StandardReactions.Smile] = new LocalizableIconDictionary("/cms-kit/icons/smile.png"); + options.ReactionIcons[StandardReactions.ThumbsUp] = new LocalizableIconDictionary("/cms-kit/icons/thumbsup.png"); + }); + + Configure(options => + { + options.FileSets.AddEmbedded(); + }); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitOptions.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/CmsKitOptions.cs new file mode 100644 index 0000000000..b04ae26fb6 --- /dev/null +++ b/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(); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xml b/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xsd b/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/LocalizableIconDictionary.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/LocalizableIconDictionary.cs new file mode 100644 index 0000000000..881c751eab --- /dev/null +++ b/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 + { + [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; + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Reactions/ReactionIconDictionary.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Reactions/ReactionIconDictionary.cs new file mode 100644 index 0000000000..038302b25a --- /dev/null +++ b/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 + { + 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); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj new file mode 100644 index 0000000000..8dfbbad063 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Web/Volo.CmsKit.Common.Web.csproj @@ -0,0 +1,33 @@ + + + + + + + netcoreapp3.1 + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + true + Library + Volo.CmsKit.Web + true + + + + + + + + + + + + + + + + + + + + + diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/smile.png b/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/smile.png new file mode 100644 index 0000000000..a297be1fa3 Binary files /dev/null and b/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/smile.png differ diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/thumbsup.png b/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/thumbsup.png new file mode 100644 index 0000000000..0cd8f6f25b Binary files /dev/null and b/modules/cms-kit/src/Volo.CmsKit.Common.Web/wwwroot/cms-kit/icons/thumbsup.png differ diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/CmsKit/en.json b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/CmsKit/en.json index 3b9aa259bf..2d7c6fc1b9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/CmsKit/en.json +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Localization/CmsKit/en.json @@ -4,4 +4,4 @@ "ManageYourProfile": "Manage your profile", "SamplePageMessage": "A sample page for the CmsKit module" } -} \ No newline at end of file +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/Reactions/StandardReactions.cs new file mode 100644 index 0000000000..5b7fb1beba --- /dev/null +++ b/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"; + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs index 3e673313c5..7da7648e9b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/CmsKitDomainModule.cs @@ -1,12 +1,20 @@ using Volo.Abp.Modularity; +using Volo.CmsKit.Reactions; namespace Volo.CmsKit { [DependsOn( typeof(CmsKitDomainSharedModule) - )] + )] public class CmsKitDomainModule : AbpModule { - + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Reactions.AddOrReplace(StandardReactions.Smile); + options.Reactions.AddOrReplace(StandardReactions.ThumbsUp); + }); + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/LocalizableIconDictionary.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/LocalizableIconDictionary.cs deleted file mode 100644 index b4e3461da8..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/LocalizableIconDictionary.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Collections.Generic; - -namespace Volo.CmsKit.Reactions -{ - public class LocalizableIconDictionary : Dictionary - { - public string Default { get; set; } - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs index a734fdafe7..01d96617ea 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinition.cs @@ -12,21 +12,12 @@ namespace Volo.CmsKit.Reactions [CanBeNull] public ILocalizableString DisplayName { get; set; } - [NotNull] - public LocalizableIconDictionary Icons { get; } - public ReactionDefinition( [NotNull] string name, - [NotNull] string defaultIcon, [CanBeNull] ILocalizableString displayName = null) { Name = Check.NotNullOrWhiteSpace(name, nameof(name)); DisplayName = displayName; - - Icons = new LocalizableIconDictionary - { - Default = Check.NotNullOrWhiteSpace(defaultIcon, nameof(defaultIcon)) - }; } } -} \ No newline at end of file +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs index a42b246011..1159abd38b 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Reactions/ReactionDefinitionDictionary.cs @@ -1,9 +1,13 @@ using System.Collections.Generic; +using Volo.Abp.Localization; namespace Volo.CmsKit.Reactions { public class ReactionDefinitionDictionary : Dictionary { - + public void AddOrReplace(string name, ILocalizableString displayName = null) + { + this[name] = new ReactionDefinition(name, displayName); + } } -} \ No newline at end of file +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicApplicationContractsModule.cs similarity index 91% rename from modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs rename to modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicApplicationContractsModule.cs index a1bc5b4eee..887c8e5e36 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/CmsKitPublicApplicationContractsModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicApplicationContractsModule.cs @@ -1,8 +1,8 @@ using Volo.Abp.Application; -using Volo.Abp.Modularity; using Volo.Abp.Authorization; +using Volo.Abp.Modularity; -namespace Volo.CmsKit.Public +namespace Volo.CmsKit { [DependsOn( typeof(CmsKitDomainSharedModule), diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissionDefinitionProvider.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs similarity index 70% rename from modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissionDefinitionProvider.cs rename to modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs index 25c764f8ba..f52d398766 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissionDefinitionProvider.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissionDefinitionProvider.cs @@ -2,13 +2,16 @@ using Volo.Abp.Localization; using Volo.CmsKit.Localization; -namespace Volo.CmsKit.Public.Permissions +namespace Volo.CmsKit.Permissions { public class CmsKitPublicPermissionDefinitionProvider : PermissionDefinitionProvider { 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) @@ -16,4 +19,4 @@ namespace Volo.CmsKit.Public.Permissions return LocalizableString.Create(name); } } -} \ No newline at end of file +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissions.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs similarity index 87% rename from modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissions.cs rename to modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs index 67d5504b92..4a2991c71e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Public/Permissions/CmsKitPublicPermissions.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Permissions/CmsKitPublicPermissions.cs @@ -1,6 +1,6 @@ using Volo.Abp.Reflection; -namespace Volo.CmsKit.Public.Permissions +namespace Volo.CmsKit.Permissions { public class CmsKitPublicPermissions { @@ -11,4 +11,4 @@ namespace Volo.CmsKit.Public.Permissions return ReflectionHelper.GetPublicConstantsRecursively(typeof(CmsKitPublicPermissions)); } } -} \ No newline at end of file +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetAvailableReactionsDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetAvailableReactionsDto.cs new file mode 100644 index 0000000000..357ce06e14 --- /dev/null +++ b/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; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/IReactionPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/IReactionPublicAppService.cs new file mode 100644 index 0000000000..532b2f883e --- /dev/null +++ b/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> GetAvailableReactions( + GetAvailableReactionsDto getAvailableReactionsDto + ); + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/ReactionDto.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/ReactionDto.cs new file mode 100644 index 0000000000..b66c7ce6f1 --- /dev/null +++ b/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; } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Reactions/ReactionPublicAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Reactions/ReactionPublicAppService.cs new file mode 100644 index 0000000000..397e129324 --- /dev/null +++ b/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> GetAvailableReactions( + GetAvailableReactionsDto getAvailableReactionsDto) + { + return Task.FromResult( + new ListResultDto(new List() + { + new ReactionDto {Name = StandardReactions.ThumbsUp}, + new ReactionDto {Name = StandardReactions.Smile, DisplayName = "Smile :)"} + }) + ); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs index 88a7cabe2f..7bf00dea5e 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/CmsKitPublicWebModule.cs @@ -1,19 +1,19 @@ using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.DependencyInjection; -using Volo.CmsKit.Public.Web.Menus; using Volo.Abp.AspNetCore.Mvc.Localization; -using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AutoMapper; using Volo.Abp.Modularity; using Volo.Abp.UI.Navigation; using Volo.Abp.VirtualFileSystem; using Volo.CmsKit.Localization; +using Volo.CmsKit.Public; +using Volo.CmsKit.Web.Menus; -namespace Volo.CmsKit.Public.Web +namespace Volo.CmsKit.Web { [DependsOn( typeof(CmsKitPublicHttpApiModule), - typeof(AbpAspNetCoreMvcUiThemeSharedModule), + typeof(CmsKitCommonWebModule), typeof(AbpAutoMapperModule) )] public class CmsKitPublicWebModule : AbpModule diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs index 34093ed39c..7bda87f1cc 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenuContributor.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Volo.Abp.UI.Navigation; -namespace Volo.CmsKit.Public.Web.Menus +namespace Volo.CmsKit.Web.Menus { public class CmsKitPublicMenuContributor : IMenuContributor { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenus.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenus.cs index 5b8e026122..00aab7da14 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Menus/CmsKitPublicMenus.cs +++ b/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 { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml deleted file mode 100644 index b09a38fd87..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml +++ /dev/null @@ -1,9 +0,0 @@ -@page -@using Microsoft.Extensions.Localization -@using Volo.CmsKit.Localization -@model Volo.CmsKit.Public.Web.Pages.Public.IndexModel -@inject IStringLocalizer L -@{ -} -

Public

-

@L["SamplePageMessage"]

diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml.cs deleted file mode 100644 index 2c16293ae7..0000000000 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Index.cshtml.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Volo.CmsKit.Public.Web.Pages.Public -{ - public class IndexModel : PublicPageModel - { - public void OnGet() - { - } - } -} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Default.cshtml b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Default.cshtml index 8f2ccffb60..7f703d2517 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/Default.cshtml +++ b/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

TEST!

+

EntityType: @Model.EntityType

+

EntityId: @Model.EntityId

+@foreach (var reaction in Model.Reactions) +{ + +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewComponent.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewComponent.cs index 324388d92c..5497ea9ba5 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewComponent.cs +++ b/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.Extensions.Options; using Volo.Abp.AspNetCore.Mvc; +using Volo.CmsKit.Reactions; namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components { public class ReactionSelectionViewComponent : AbpViewComponent { - public virtual async Task InvokeAsync(string entityType = null, string entityId = null) + protected IReactionPublicAppService ReactionPublicAppService { get; } + protected CmsKitUiOptions Options { get; } + + public ReactionSelectionViewComponent( + IReactionPublicAppService reactionPublicAppService, + IOptions options) + { + ReactionPublicAppService = reactionPublicAppService; + Options = options.Value; + } + + public virtual async Task InvokeAsync( + string entityType = null, + string entityId = null) { - return View( - "~/Pages/CmsKit/Shared/Components/Default.cshtml", - new ReactionSelectionViewModel() - ); + var result = await ReactionPublicAppService.GetAvailableReactions( + new GetAvailableReactionsDto + { + EntityType = entityType, + EntityId = entityId + } + ); + + var viewModel = new ReactionSelectionViewModel + { + EntityType = entityType, + EntityId = entityId, + Reactions = new List() + }; + + 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); } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewModel.cs index 2fd308b771..5448952e1c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelectionViewModel.cs +++ b/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 string EntityType { get; set; } + + public string EntityId { get; set; } + public List Reactions { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionViewModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionViewModel.cs new file mode 100644 index 0000000000..e64e4e2b77 --- /dev/null +++ b/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; } + } +} \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs index 0ea29457e9..af143d5a8f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/PublicPageModel.cs @@ -1,7 +1,7 @@ using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.CmsKit.Localization; -namespace Volo.CmsKit.Public.Web.Pages +namespace Volo.CmsKit.Web.Pages { /* Inherit your PageModel classes from this class. */ diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs b/modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs index 35bf9f709e..50effadabd 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/PublicWebAutoMapperProfile.cs @@ -1,6 +1,6 @@ using AutoMapper; -namespace Volo.CmsKit.Public.Web +namespace Volo.CmsKit.Web { public class PublicWebAutoMapperProfile : Profile { diff --git a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj index 2f00804b8c..e0a79d98aa 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj +++ b/modules/cms-kit/src/Volo.CmsKit.Public.Web/Volo.CmsKit.Public.Web.csproj @@ -14,10 +14,10 @@ - + @@ -30,10 +30,6 @@ - - true - PreserveNewest -