CmsKit - Make visible Reaction icon when user not logged in

pull/8028/head
enisn 5 years ago
parent c55ac614b0
commit 9842510325

@ -46,6 +46,7 @@
"LoginToAddComment": "Login to add comment",
"LoginToRate": "Login to rate",
"LoginToReply": "Login to reply",
"LoginToReact": "Login to react",
"Menu:CMS": "CMS",
"Message": "Message",
"MessageDeletionConfirmationMessage": "This comment will be deleted completely.",

@ -45,6 +45,7 @@
"LoginToAddComment": "Yorum yapmak için giriş yap",
"LoginToRate": "Oylamak için giriş yapın",
"LoginToReply": "Cevap vermek için giriş yap",
"LoginToReact": "Reaksiyon vermek için giriş yap",
"Menu:CMS": "CMS",
"Message": "Mesaj",
"MessageDeletionConfirmationMessage": "Bu yorum tamamen silinecektir",

@ -1,42 +1,49 @@
@inject ICurrentUser CurrentUser
@inject IHtmlLocalizer<CmsKitResource> L
@using Volo.Abp.Users
@using Volo.CmsKit.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@model Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelection.ReactionSelectionViewComponent.ReactionSelectionViewModel
@if (CurrentUser.IsAuthenticated || Model.Reactions.Count(r => r.Count > 0) > 0)
{
<div class="p-3 my-3 card">
<div class="row">
<div class="col-auto text-left">
<span class="area-title">
Reactions
</span>
</div>
<div class="col text-right">
<span class="cms-reaction-area" data-entity-type="@Model.EntityType" data-entity-id="@Model.EntityId">
@foreach (var reaction in Model.Reactions.Where(r => r.Count > 0))
{
<span class="ml-1 cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "cms-reaction-icon-selected" : "")" data-reaction-name="@reaction.Name" data-click-action="@(CurrentUser.IsAuthenticated ? "true" : "false")">
<i class="@reaction.Icon"></i>
<small class="text-muted" style="opacity: .45;">@(reaction.Count)</small>
</span>
}
@if (CurrentUser.IsAuthenticated)
{
<a class="cms-reaction-select-icon btn btn-secondary text-light btn-sm py-1 ml-2" href="javascript:;">
<i class="fa fa-smile-o"></i>
</a>
<div class="cms-reaction-selection-popover-content" style="display: none">
@foreach (var reaction in Model.Reactions)
{
<span class="m-2 p-2 w-25 d-inline-block text-center cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "shadow-sm bg-light rounded cms-reaction-icon-selected" : "")" data-reaction-name="@reaction.Name">
<i class="@reaction.Icon fa-2x"></i>
</span>
}
</div>
}
</span>
</div>
<div class="p-3 my-3 card">
<div class="row">
<div class="col-auto text-left">
<span class="area-title">
Reactions
</span>
</div>
<div class="col text-right">
<span class="cms-reaction-area" data-entity-type="@Model.EntityType" data-entity-id="@Model.EntityId">
@foreach (var reaction in Model.Reactions.Where(r => r.Count > 0))
{
<span class="ml-1 cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "cms-reaction-icon-selected" : "")" data-reaction-name="@reaction.Name" data-click-action="@(CurrentUser.IsAuthenticated ? "true" : "false")">
<i class="@reaction.Icon"></i>
<small class="text-muted" style="opacity: .45;">@(reaction.Count)</small>
</span>
}
@if (CurrentUser.IsAuthenticated)
{
<a class="cms-reaction-select-icon btn btn-secondary text-light btn-sm py-1 ml-2" href="javascript:;">
<i class="fa fa-smile-o"></i>
</a>
<div class="cms-reaction-selection-popover-content" style="display: none">
@foreach (var reaction in Model.Reactions)
{
<span class="m-2 p-2 w-25 d-inline-block text-center cms-reaction-icon @(reaction.IsSelectedByCurrentUser ? "shadow-sm bg-light rounded cms-reaction-icon-selected" : "")" data-reaction-name="@reaction.Name">
<i class="@reaction.Icon fa-2x"></i>
</span>
}
</div>
}
else
{
<span class="ms-reaction-select-icon btn btn-secondary text-light btn-sm py-1 ml-2" data-authenticated="True" data-toggle="popover" data-placement="right" data-html="true" data-content="<div class='text-center'><a href='@Model.LoginUrl' class='btn btn-primary btn-block'>@L["LoginToReact"]</a></div>">
<i class="fa fa-smile-o"></i>
</span>
}
</span>
</div>
</div>
}
</div>

@ -4,6 +4,7 @@ using JetBrains.Annotations;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.UI;
using Volo.Abp.AspNetCore.Mvc.UI.Widgets;
using Volo.CmsKit.Public.Reactions;
using Volo.CmsKit.Web;
@ -23,12 +24,16 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelectio
protected CmsKitUiOptions Options { get; }
public AbpMvcUiOptions AbpMvcUiOptions { get; }
public ReactionSelectionViewComponent(
IReactionPublicAppService reactionPublicAppService,
IOptions<CmsKitUiOptions> options)
IOptions<CmsKitUiOptions> options,
IOptions<AbpMvcUiOptions> abpMvcUiOptions)
{
ReactionPublicAppService = reactionPublicAppService;
Options = options.Value;
AbpMvcUiOptions = abpMvcUiOptions.Value;
}
public virtual async Task<IViewComponentResult> InvokeAsync(
@ -37,11 +42,15 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelectio
{
var result = await ReactionPublicAppService.GetForSelectionAsync(entityType, entityId);
var loginUrl =
$"{AbpMvcUiOptions.LoginUrl}?returnUrl={HttpContext.Request.Path.ToString()}&returnUrlHash=#cms-rating_{entityType}_{entityId}";
var viewModel = new ReactionSelectionViewModel
{
EntityType = entityType,
EntityId = entityId,
Reactions = new List<ReactionViewModel>()
Reactions = new List<ReactionViewModel>(),
LoginUrl = loginUrl
};
foreach (var reactionDto in result.Items)
@ -67,6 +76,8 @@ namespace Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.ReactionSelectio
public string EntityId { get; set; }
public List<ReactionViewModel> Reactions { get; set; }
public string LoginUrl { get; set; }
}
public class ReactionViewModel

Loading…
Cancel
Save