Browse Source

Created reaction related controllers

pull/4776/head
Halil İbrahim Kalkan 6 years ago
parent
commit
ce677a6cfb
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/CmsKitAdminApplicationContractsModule.cs
  2. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/CmsKitPublicRemoteServiceConsts.cs
  3. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs
  4. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs
  5. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/CmsKitAdminApplicationModule.cs
  6. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo/CmsKit/CmsKitAdminHttpApiClientModule.cs
  7. 1
      modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/CmsKitAdminHttpApiModule.cs
  8. 1
      modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo/CmsKit/CmsKitApplicationContractsModule.cs
  9. 19
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/CmsIconTagHelper.cs
  10. 35
      modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/CmsIconTagHelperService.cs
  11. 7
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicRemoteServiceConsts.cs
  12. 11
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/CreateReactionDto.cs
  13. 11
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/DeleteReactionDto.cs
  14. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetForSelectionDto.cs
  15. 10
      modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/IReactionPublicAppService.cs
  16. 28
      modules/cms-kit/src/Volo.CmsKit.Public.Application/Volo/CmsKit/Reactions/ReactionPublicAppService.cs
  17. 4
      modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo/CmsKit/CmsKitPublicHttpApiClientModule.cs
  18. 60
      modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Reactions/ReactionPublicController.cs
  19. 9
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/Default.cshtml
  20. 2
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/ReactionSelectionViewComponent.cs
  21. 6
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs → modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/CmsKitAdminApplicationContractsModule.cs

@ -1,6 +1,6 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
namespace Volo.CmsKit.Admin namespace Volo.CmsKit
{ {
[DependsOn( [DependsOn(
typeof(CmsKitCommonApplicationContractsModule) typeof(CmsKitCommonApplicationContractsModule)

7
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/CmsKitPublicRemoteServiceConsts.cs

@ -0,0 +1,7 @@
namespace Volo.CmsKit
{
public class CmsKitAdminRemoteServiceConsts
{
public const string RemoteServiceName = "CmsKitAdmin";
}
}

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Permissions/CmsKitAdminPermissionDefinitionProvider.cs → modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissionDefinitionProvider.cs

@ -2,7 +2,7 @@
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.CmsKit.Localization; using Volo.CmsKit.Localization;
namespace Volo.CmsKit.Admin.Permissions namespace Volo.CmsKit.Permissions
{ {
public class CmsKitAdminPermissionDefinitionProvider : PermissionDefinitionProvider public class CmsKitAdminPermissionDefinitionProvider : PermissionDefinitionProvider
{ {

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Permissions/CmsKitAdminPermissions.cs → modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs

@ -1,6 +1,6 @@
using Volo.Abp.Reflection; using Volo.Abp.Reflection;
namespace Volo.CmsKit.Admin.Permissions namespace Volo.CmsKit.Permissions
{ {
public class CmsKitAdminPermissions public class CmsKitAdminPermissions
{ {

1
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/CmsKitAdminApplicationModule.cs

@ -2,7 +2,6 @@
using Volo.Abp.Application; using Volo.Abp.Application;
using Volo.Abp.AutoMapper; using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {

5
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi.Client/Volo/CmsKit/CmsKitAdminHttpApiClientModule.cs

@ -1,7 +1,6 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {
@ -10,13 +9,11 @@ namespace Volo.CmsKit
typeof(CmsKitCommonHttpApiClientModule))] typeof(CmsKitCommonHttpApiClientModule))]
public class CmsKitAdminHttpApiClientModule : AbpModule public class CmsKitAdminHttpApiClientModule : AbpModule
{ {
public const string RemoteServiceName = "CmsKitAdmin";
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
context.Services.AddHttpClientProxies( context.Services.AddHttpClientProxies(
typeof(CmsKitAdminApplicationContractsModule).Assembly, typeof(CmsKitAdminApplicationContractsModule).Assembly,
RemoteServiceName CmsKitAdminRemoteServiceConsts.RemoteServiceName
); );
} }
} }

1
modules/cms-kit/src/Volo.CmsKit.Admin.HttpApi/Volo/CmsKit/CmsKitAdminHttpApiModule.cs

@ -1,6 +1,5 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {

1
modules/cms-kit/src/Volo.CmsKit.Application.Contracts/Volo/CmsKit/CmsKitApplicationContractsModule.cs

@ -1,5 +1,4 @@
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
namespace Volo.CmsKit namespace Volo.CmsKit
{ {

19
modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/CmsIconTagHelper.cs

@ -1,19 +0,0 @@
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers;
namespace Volo.CmsKit.Web.Icons
{
[HtmlTargetElement("cms-icon",TagStructure = TagStructure.WithoutEndTag)]
public class CmsIconTagHelper : AbpTagHelper<CmsIconTagHelper, CmsIconTagHelperService>
{
public string Name { get; set; }
public bool Highlight { get; set; }
public CmsIconTagHelper(CmsIconTagHelperService service)
: base(service)
{
}
}
}

35
modules/cms-kit/src/Volo.CmsKit.Common.Web/Icons/CmsIconTagHelperService.cs

@ -1,35 +0,0 @@
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers;
namespace Volo.CmsKit.Web.Icons
{
public class CmsIconTagHelperService : AbpTagHelperService<CmsIconTagHelper>
{
public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
if (TagHelper.Name.Contains("."))
{
output.TagName = "img";
output.Attributes.Add("src", TagHelper.Name);
output.Attributes.Add("width", "20");
output.Attributes.Add("height", "20");
}
else
{
//TODO: Allow to font, svg icons.. etc.
throw new AbpException("Only file icons are allowed!");
}
if (TagHelper.Highlight)
{
output.AddClass("cms-icon-highlighted", HtmlEncoder.Default);
}
return Task.CompletedTask;
}
}
}

7
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/CmsKitPublicRemoteServiceConsts.cs

@ -0,0 +1,7 @@
namespace Volo.CmsKit
{
public class CmsKitPublicRemoteServiceConsts
{
public const string RemoteServiceName = "CmsKitPublic";
}
}

11
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/CreateReactionDto.cs

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

11
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/DeleteReactionDto.cs

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

2
modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetForSelectionInput.cs → modules/cms-kit/src/Volo.CmsKit.Public.Application.Contracts/Volo/CmsKit/Reactions/GetForSelectionDto.cs

@ -1,6 +1,6 @@
namespace Volo.CmsKit.Reactions namespace Volo.CmsKit.Reactions
{ {
public class GetForSelectionInput public class GetForSelectionDto
{ {
public string EntityType { get; set; } public string EntityType { get; set; }

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

@ -1,6 +1,4 @@
using System.Collections.Generic; using System.Threading.Tasks;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
@ -20,6 +18,10 @@ namespace Volo.CmsKit.Reactions
GetMyReactionsDto input GetMyReactionsDto input
); );
Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(GetForSelectionInput input); Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(GetForSelectionDto input);
Task CreateAsync(CreateReactionDto input);
Task DeleteAsync(DeleteReactionDto input);
} }
} }

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

@ -1,8 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml.Schema;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Users; using Volo.Abp.Users;
@ -42,7 +40,7 @@ namespace Volo.CmsKit.Reactions
return new ListResultDto<ReactionDto>(reactionDtos); return new ListResultDto<ReactionDto>(reactionDtos);
} }
public async Task<ListResultDto<ReactionSummaryDto>> GetReactionSummariesAsync(GetReactionSummariesDto input) public virtual async Task<ListResultDto<ReactionSummaryDto>> GetReactionSummariesAsync(GetReactionSummariesDto input)
{ {
var summaries = await ReactionManager.GetSummariesAsync(input.EntityType, input.EntityId); var summaries = await ReactionManager.GetSummariesAsync(input.EntityType, input.EntityId);
@ -57,7 +55,7 @@ namespace Volo.CmsKit.Reactions
return new ListResultDto<ReactionSummaryDto>(summaryDtos); return new ListResultDto<ReactionSummaryDto>(summaryDtos);
} }
public async Task<ListResultDto<ReactionDto>> GetMyReactions(GetMyReactionsDto input) public virtual async Task<ListResultDto<ReactionDto>> GetMyReactions(GetMyReactionsDto input)
{ {
var userReactions = await ReactionManager.GetUserReactionsAsync( var userReactions = await ReactionManager.GetUserReactionsAsync(
CurrentUser.GetId(), CurrentUser.GetId(),
@ -72,7 +70,7 @@ namespace Volo.CmsKit.Reactions
return new ListResultDto<ReactionDto>(reactionDtos); return new ListResultDto<ReactionDto>(reactionDtos);
} }
public async Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(GetForSelectionInput input) public virtual async Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(GetForSelectionDto input)
{ {
var reactionDefinitions = await ReactionManager var reactionDefinitions = await ReactionManager
.GetAvailableReactionsAsync( .GetAvailableReactionsAsync(
@ -105,6 +103,26 @@ namespace Volo.CmsKit.Reactions
return new ListResultDto<ReactionWithSelectionDto>(reactionDtos); return new ListResultDto<ReactionWithSelectionDto>(reactionDtos);
} }
public virtual async Task CreateAsync(CreateReactionDto input)
{
await ReactionManager.CreateAsync(
CurrentUser.GetId(),
input.EntityType,
input.EntityId,
input.ReactionName
);
}
public virtual async Task DeleteAsync(DeleteReactionDto input)
{
await ReactionManager.DeleteAsync(
CurrentUser.GetId(),
input.EntityType,
input.EntityId,
input.ReactionName
);
}
private ReactionDto ConvertToReactionDto(ReactionDefinition reactionDefinition) private ReactionDto ConvertToReactionDto(ReactionDefinition reactionDefinition)
{ {
return new ReactionDto return new ReactionDto

4
modules/cms-kit/src/Volo.CmsKit.Public.HttpApi.Client/Volo/CmsKit/CmsKitPublicHttpApiClientModule.cs

@ -8,13 +8,11 @@ namespace Volo.CmsKit
typeof(CmsKitCommonHttpApiClientModule))] typeof(CmsKitCommonHttpApiClientModule))]
public class CmsKitPublicHttpApiClientModule : AbpModule public class CmsKitPublicHttpApiClientModule : AbpModule
{ {
public const string RemoteServiceName = "CmsKitPublic";
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
context.Services.AddHttpClientProxies( context.Services.AddHttpClientProxies(
typeof(CmsKitPublicApplicationContractsModule).Assembly, typeof(CmsKitPublicApplicationContractsModule).Assembly,
RemoteServiceName CmsKitPublicRemoteServiceConsts.RemoteServiceName
); );
} }
} }

60
modules/cms-kit/src/Volo.CmsKit.Public.HttpApi/Volo/CmsKit/Reactions/ReactionPublicController.cs

@ -0,0 +1,60 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Reactions
{
[RemoteService(Name = CmsKitPublicRemoteServiceConsts.RemoteServiceName)]
[Area("cms-kit")]
[Route("api/cms-kit-public/reactions")]
public class ReactionPublicController : CmsKitPublicController, IReactionPublicAppService
{
protected IReactionPublicAppService ReactionPublicAppService { get; }
public ReactionPublicController(IReactionPublicAppService reactionPublicAppService)
{
ReactionPublicAppService = reactionPublicAppService;
}
[HttpGet]
[Route("available")]
public virtual Task<ListResultDto<ReactionDto>> GetAvailableReactions(GetAvailableReactionsDto input)
{
return ReactionPublicAppService.GetAvailableReactions(input);
}
[HttpGet]
[Route("summaries")]
public virtual Task<ListResultDto<ReactionSummaryDto>> GetReactionSummariesAsync(GetReactionSummariesDto input)
{
return ReactionPublicAppService.GetReactionSummariesAsync(input);
}
[HttpGet]
[Route("my")]
public virtual Task<ListResultDto<ReactionDto>> GetMyReactions(GetMyReactionsDto input)
{
return ReactionPublicAppService.GetMyReactions(input);
}
[HttpGet]
[Route("selection")] //TODO: Consider to rename!
public virtual Task<ListResultDto<ReactionWithSelectionDto>> GetForSelectionAsync(GetForSelectionDto input)
{
return ReactionPublicAppService.GetForSelectionAsync(input);
}
[HttpPut]
public virtual Task CreateAsync(CreateReactionDto input)
{
return ReactionPublicAppService.CreateAsync(input);
}
[HttpDelete]
public virtual Task DeleteAsync(DeleteReactionDto input)
{
return ReactionPublicAppService.DeleteAsync(input);
}
}
}

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

@ -4,14 +4,19 @@
Pick a reaction: Pick a reaction:
@foreach (var reaction in Model.Reactions) @foreach (var reaction in Model.Reactions)
{ {
<span class="mr-2"><cms-icon name="@reaction.Icon" highlight="@reaction.IsSelectedByCurrentUser"/></span> <span class="mr-2">
<img src="@reaction.Icon" width="16" height="16" class="cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "cms-reaction-icon-highlighted" : "")"/>
</span>
} }
</div> </div>
<div class="cms-reaction-selection-reactions"> <div class="cms-reaction-selection-reactions">
Current reactions: Current reactions:
@foreach (var reaction in Model.Reactions.Where(r => r.Count > 0)) @foreach (var reaction in Model.Reactions.Where(r => r.Count > 0))
{ {
<span class="mr-2"><cms-icon name="@reaction.Icon" highlight="@reaction.IsSelectedByCurrentUser"/><span> @reaction.Count</span></span> <span class="mr-2">
<img src="@reaction.Icon" width="20" height="20" class="cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "cms-reaction-icon-highlighted" : "")"/>
<span> @reaction.Count</span>
</span>
} }
</div> </div>
</span> </span>

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

@ -30,7 +30,7 @@ namespace Volo.CmsKit.Web.Pages.CmsKit.Shared.Components.ReactionSelection
string entityId) string entityId)
{ {
var result = await ReactionPublicAppService.GetForSelectionAsync( var result = await ReactionPublicAppService.GetForSelectionAsync(
new GetForSelectionInput new GetForSelectionDto
{ {
EntityType = entityType, EntityType = entityType,
EntityId = entityId EntityId = entityId

6
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js

@ -5,6 +5,12 @@
var $this = $(this); var $this = $(this);
var $availableReactions = $this.find('.cms-reaction-selection-available-reactions'); var $availableReactions = $this.find('.cms-reaction-selection-available-reactions');
$availableReactions.find('.cms-reaction-icon').each(function(){
var $icon = $(this);
$icon.click(function(){
});
});
} }
$('.cms-reaction-selection').each(initReactionSelection) $('.cms-reaction-selection').each(initReactionSelection)

Loading…
Cancel
Save