mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-26 15:41:29 +01:00
Cache static assets for one year and set the correct cache control header. Adds the cache busting version based on file content to asset references to invalidate the cache on change. ([further details on the approach](https://andrewlock.net/adding-cache-control-headers-to-static-files-in-asp-net-core/) and [why one year](https://ashton.codes/set-cache-control-max-age-1-year/)) Most of the changes are the additions of the `asp-append-version="true"` attribute, the main configuration change is in `Startup.cs`.
95 lines
3.9 KiB
Text
95 lines
3.9 KiB
Text
@model BTCPayServer.Models.AppViewModels.ContributeToCrowdfund
|
|
|
|
<form method="post">
|
|
@foreach (var item in Model.ViewCrowdfundViewModel.Perks)
|
|
{
|
|
<div class="card mb-4 perk expanded" id="@item.Id">
|
|
@if (Model.ViewCrowdfundViewModel.DisplayPerksRanking && Model.ViewCrowdfundViewModel.PerkCount.ContainsKey(item.Id))
|
|
{
|
|
<span class="btn btn-sm rounded-circle px-0 btn-primary perk-badge">#@(Array.IndexOf(Model.ViewCrowdfundViewModel.Perks, item) + 1)</span>
|
|
}
|
|
@if (!string.IsNullOrEmpty(item.Image))
|
|
{
|
|
<img class="card-img-top" src="@item.Image" asp-append-version="true" />
|
|
}
|
|
<div class="card-body">
|
|
<div class="card-title d-flex justify-content-between">
|
|
<label class="h5">
|
|
|
|
@if (Model.ViewCrowdfundViewModel.Started && !Model.ViewCrowdfundViewModel.Ended && (item.Price.Value > 0 || item.Custom))
|
|
{
|
|
|
|
<input type="radio" asp-for="ChoiceKey" value="@item.Id"/>
|
|
}
|
|
@(string.IsNullOrEmpty(item.Title) ? item.Id : item.Title)
|
|
</label>
|
|
<span class="text-muted">
|
|
@if (item.Price.Value > 0)
|
|
{
|
|
@item.Price.Value
|
|
if (item.Custom)
|
|
{
|
|
@Safe.Raw("or more");
|
|
}
|
|
}
|
|
else if (item.Custom)
|
|
{
|
|
@Safe.Raw("Any amount");
|
|
}
|
|
|
|
</span>
|
|
</div>
|
|
<p class="card-text overflow-hidden">@Safe.Raw(item.Description)</p>
|
|
|
|
</div>
|
|
@if (Model.ViewCrowdfundViewModel.PerkCount.ContainsKey(item.Id) || item.Inventory.HasValue)
|
|
{
|
|
<div class="card-footer d-flex justify-content-between">
|
|
@switch (item.Inventory)
|
|
{
|
|
case null:
|
|
<span></span>
|
|
break;
|
|
case int i when i <= 0:
|
|
<span>Sold out</span>
|
|
break;
|
|
default:
|
|
<span>@item.Inventory left</span>
|
|
break;
|
|
}
|
|
@if (Model.ViewCrowdfundViewModel.PerkCount.ContainsKey(item.Id))
|
|
{
|
|
<span> @Model.ViewCrowdfundViewModel.PerkCount[item.Id] Contributors</span>
|
|
}
|
|
else
|
|
{
|
|
<span></span>
|
|
}
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
@if (Model.ViewCrowdfundViewModel.Started && !Model.ViewCrowdfundViewModel.Ended)
|
|
{
|
|
<div class="form-group">
|
|
<label asp-for="Email"></label>
|
|
<input asp-for="Email" type="email" class="form-control"/>
|
|
<span asp-validation-for="Email" class="text-danger"></span>
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="Amount"></label>
|
|
<div class="input-group mb-3">
|
|
<input asp-for="Amount" type="number" step="any" class="form-control"/>
|
|
<div class="input-group-append">
|
|
<span class="input-group-text">@Model.ViewCrowdfundViewModel.TargetCurrency.ToUpperInvariant()</span>
|
|
</div>
|
|
</div>
|
|
<span asp-validation-for="Amount" class="text-danger"></span>
|
|
</div>
|
|
<input type="hidden" asp-for="RedirectToCheckout"/>
|
|
|
|
|
|
<button type="submit" class="btn btn-primary" >Contribute</button>
|
|
|
|
}
|
|
</form>
|