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;
namespace Volo.CmsKit.Admin
namespace Volo.CmsKit
{
[DependsOn(
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.CmsKit.Localization;
namespace Volo.CmsKit.Admin.Permissions
namespace Volo.CmsKit.Permissions
{
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;
namespace Volo.CmsKit.Admin.Permissions
namespace Volo.CmsKit.Permissions
{
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.AutoMapper;
using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
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 Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
namespace Volo.CmsKit
{
@ -10,13 +9,11 @@ namespace Volo.CmsKit
typeof(CmsKitCommonHttpApiClientModule))]
public class CmsKitAdminHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "CmsKitAdmin";
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
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 Volo.Abp.Modularity;
using Volo.CmsKit.Admin;
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.CmsKit.Admin;
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
{
public class GetForSelectionInput
public class GetForSelectionDto
{
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 JetBrains.Annotations;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -20,6 +18,10 @@ namespace Volo.CmsKit.Reactions
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.Immutable;
using System.Linq;
using System.Threading.Tasks;
using System.Xml.Schema;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Users;
@ -42,7 +40,7 @@ namespace Volo.CmsKit.Reactions
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);
@ -57,7 +55,7 @@ namespace Volo.CmsKit.Reactions
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(
CurrentUser.GetId(),
@ -72,7 +70,7 @@ namespace Volo.CmsKit.Reactions
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
.GetAvailableReactionsAsync(
@ -105,6 +103,26 @@ namespace Volo.CmsKit.Reactions
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)
{
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))]
public class CmsKitPublicHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "CmsKitPublic";
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
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:
@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 class="cms-reaction-selection-reactions">
Current reactions:
@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>
</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)
{
var result = await ReactionPublicAppService.GetForSelectionAsync(
new GetForSelectionInput
new GetForSelectionDto
{
EntityType = entityType,
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 $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)

Loading…
Cancel
Save