perk count + img fixer

This commit is contained in:
Kukks
2019-01-08 15:10:05 +01:00
parent caadfc8641
commit 59fc371cd5
7 changed files with 75 additions and 14 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -284,11 +285,41 @@ namespace BTCPayServer.Controllers
_HtmlSanitizer = new HtmlSanitizer();
_HtmlSanitizer.RemovingAtRule += (sender, args) =>
{
Debug.WriteLine("");
};
_HtmlSanitizer.RemovingTag += (sender, args) =>
{
Debug.WriteLine("");
if (args.Tag.TagName.Equals("img", StringComparison.InvariantCultureIgnoreCase))
{
if (!args.Tag.ClassList.Contains("img-fluid"))
{
args.Tag.ClassList.Add("img-fluid");
}
args.Cancel = true;
}
};
_HtmlSanitizer.RemovingAttribute += (sender, args) =>
{
if (args.Tag.TagName.Equals("img",StringComparison.InvariantCultureIgnoreCase) &&
args.Attribute.Name.Equals( "src", StringComparison.InvariantCultureIgnoreCase) &&
args.Reason == RemoveReason.NotAllowedUrlValue)
{
args.Cancel = true;
}
Debug.WriteLine("");
};
_HtmlSanitizer.RemovingStyle += (sender, args) => { args.Cancel = true; };
_HtmlSanitizer.AllowedAttributes.Add("class");
_HtmlSanitizer.AllowedTags.Add("iframe");
_HtmlSanitizer.AllowedTags.Remove("img");
_HtmlSanitizer.AllowedAttributes.Add("webkitallowfullscreen");
_HtmlSanitizer.AllowedAttributes.Add("allowfullscreen");
}

View File

@@ -287,6 +287,13 @@ namespace BTCPayServer.Hubs
settings.TargetCurrency, rateRules);
var perkCount = invoices
.Where(entity => !string.IsNullOrEmpty( entity.ProductInformation.ItemCode))
.GroupBy(entity => entity.ProductInformation.ItemCode)
.ToDictionary(entities => entities.Key, entities => entities.Count());
return new ViewCrowdfundViewModel()
{
Title = settings.Title,
@@ -309,6 +316,7 @@ namespace BTCPayServer.Hubs
DisqusShortname = settings.DisqusShortname,
AnimationsEnabled = settings.AnimationsEnabled,
ResetEveryAmount = settings.ResetEveryAmount,
PerkCount = perkCount,
ResetEvery = Enum.GetName(typeof(CrowdfundResetEvery),settings.ResetEvery),
Info = new ViewCrowdfundViewModel.CrowdfundInfo()
{

View File

@@ -32,7 +32,8 @@ namespace BTCPayServer.Models.AppViewModels
public int ResetEveryAmount { get; set; }
public string ResetEvery { get; set; }
public Dictionary<string, int> PerkCount { get; set; }
public class CrowdfundInfo
{
public int TotalContributors { get; set; }
@@ -50,7 +51,7 @@ namespace BTCPayServer.Models.AppViewModels
public bool Started => !StartDate.HasValue || DateTime.Now.ToUniversalTime() > StartDate;
public bool Ended => !EndDate.HasValue || DateTime.Now.ToUniversalTime() > EndDate;
}
public class ContributeToCrowdfund

View File

@@ -38,6 +38,12 @@
<p class="card-text overflow-hidden" >@Html.Raw(item.Description)</p>
</div>
@if (Model.ViewCrowdfundViewModel.PerkCount.ContainsKey(item.Id))
{
<div class="card-footer text-right">
@Model.ViewCrowdfundViewModel.PerkCount[item.Id] Contributors
</div>
}
</div>
}
@if (Model.ViewCrowdfundViewModel.Started && !Model.ViewCrowdfundViewModel.Ended)

View File

@@ -43,11 +43,11 @@
}
@if (Model.EnforceTargetAmount)
{
<span v-if="srvModel.enforceTargetAmount">Hardcap Goal <span class="fa fa-question-circle" v-b-tooltip title="No contributions allowed after the goal has been reached"></span></span>
<span >Hardcap Goal <span class="fa fa-question-circle" ></span></span>
}
else
{
<span v-else>Softcap Goal <span class="fa fa-question-circle" v-b-tooltip title="Contributions allowed even after goal is reached"></span> </span>
<span >Softcap Goal <span class="fa fa-question-circle" ></span> </span>
}
</span>
}
@@ -89,7 +89,7 @@
</div>
@if (Model.Started && !Model.Ended)
{
<div class="col-sm" v-if="endDiff">
<div class="col-sm">
<h5>
@TimeZoneInfo.ConvertTimeFromUtc(Model.EndDate.Value, TimeZoneInfo.Local)
@@ -98,7 +98,7 @@
</div>
} else if (!Model.Started)
{
<div class="col-sm" v-if="startDiff">
<div class="col-sm">
<h5>
@TimeZoneInfo.ConvertTimeFromUtc(Model.StartDate.Value, TimeZoneInfo.Local)
</h5>
@@ -107,7 +107,7 @@
}else if (Model.Ended)
{
<div class="col-sm" v-if="ended" id="inactive-campaign">
<div class="col-sm" id="inactive-campaign">
<h5>
Campaign
</h5>
@@ -145,7 +145,7 @@
</div>
</div>
</div>
<div class="card-footer text-muted d-flex" v-if="srvModel.animationsEnabled || srvModel.soundsEnabled">
<div class="card-footer text-muted d-flex" >
<div class="align-self-end pr-4">Updated @Model.Info.LastUpdated</div>
</div>

View File

@@ -132,7 +132,7 @@
<contribute :target-currency="srvModel.targetCurrency"
:active="active"
:in-modal="false"
:perks="srvModel.perks">
:perks="perks">
</contribute>
</div>
@@ -154,7 +154,7 @@
<contribute :target-currency="srvModel.targetCurrency"
:active="active"
:in-modal="false"
:perks="srvModel.perks">
:perks="perks">
</contribute>
</div>
@@ -251,6 +251,9 @@
</div>
</div>
</div>
<div class="card-footer text-right" v-if="perk.sold">
{{perk.sold}} Contributors
</div>
</form>
</div>
</script>

View File

@@ -125,12 +125,24 @@ addLoadEvent(function (ev) {
}
for (var i = 0; i < result.length; i++) {
if(result.label.endsWith("LIGHTNINGLIKE")){
result.label = result.label.substr(0,result.label.findIndex("LIGHTNINGLIKE"));
result.lightning = true;
var current = result[i];
if(current.label.endsWith("LightningLike")){
current.label = current.label.substr(0,current.label.findIndex("LightningLike"));
current.lightning = true;
}
}
return result;
},
perks: function(){
var result = [];
for (var i = 0; i < this.srvModel.perks.length; i++) {
var currentPerk = this.srvModel.perks[i];
if(this.srvModel.perkCount.hasOwnProperty(currentPerk.id)){
currentPerk.sold = this.srvModel.perkCount[currentPerk.id];
}
result.push(currentPerk);
}
return result;
}
},