mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-22 14:22:40 +01:00
* UI: Deprecate the custom CSS options As discussed with @pavlenex we are deprecating the custom CSS options for particular entities (payemnt request, pull payment, POS, crowdfund) in favor of the store branding approach. This displays the custom CSS section only if these values are set already. * Add IDs to html element This will allow styling of individual entities.
187 lines
10 KiB
Text
187 lines
10 KiB
Text
@using BTCPayServer.Services.PaymentRequests
|
|
@using System.Globalization
|
|
@using BTCPayServer.Client
|
|
@using BTCPayServer.Forms
|
|
@using BTCPayServer.TagHelpers
|
|
@using Microsoft.AspNetCore.Mvc.TagHelpers
|
|
@inject FormDataService FormDataService
|
|
@model BTCPayServer.Models.PaymentRequestViewModels.UpdatePaymentRequestViewModel
|
|
@{
|
|
var checkoutFormOptions = await FormDataService.GetSelect(Model.StoreId, Model.FormId);
|
|
|
|
ViewData.SetActivePage(PaymentRequestsNavPages.Create, $"{(string.IsNullOrEmpty(Model.Id) ? "Create" : "Edit")} Payment Request", Model.Id);
|
|
}
|
|
|
|
@section PageHeadContent {
|
|
<link href="~/vendor/summernote/summernote-bs5.css" rel="stylesheet" asp-append-version="true" />
|
|
}
|
|
|
|
@section PageFootContent {
|
|
<partial name="_ValidationScriptsPartial" />
|
|
<script src="~/vendor/summernote/summernote-bs5.js" asp-append-version="true"></script>
|
|
}
|
|
|
|
<form method="post" action="@Url.Action("EditPaymentRequest", "UIPaymentRequest", new { storeId = Model.StoreId, payReqId = Model.Id }, Context.Request.Scheme)">
|
|
<div class="sticky-header d-sm-flex align-items-center justify-content-between">
|
|
<h2 class="mb-0">@ViewData["Title"]</h2>
|
|
<div class="d-flex gap-3 mt-3 mt-sm-0">
|
|
@if (string.IsNullOrEmpty(Model.Id))
|
|
{
|
|
<button type="submit" class="btn btn-primary" id="SaveButton" permission="@Policies.CanModifyPaymentRequests">Create</button>
|
|
}
|
|
else
|
|
{
|
|
<button type="submit" class="btn btn-primary order-sm-1" id="SaveButton" permission="@Policies.CanModifyPaymentRequests">Save</button>
|
|
<a class="btn btn-secondary" asp-action="ViewPaymentRequest" asp-route-payReqId="@Model.Id" id="ViewPaymentRequest" target="_blank">View</a>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<partial name="_StatusMessage" />
|
|
|
|
<div class="row">
|
|
<div class="col-xl-8 col-xxl-constrain">
|
|
<div asp-validation-summary="ModelOnly"></div>
|
|
<div class="form-group">
|
|
<label asp-for="Title" class="form-label" data-required></label>
|
|
<input asp-for="Title" class="form-control" required />
|
|
<span asp-validation-for="Title" class="text-danger"></span>
|
|
</div>
|
|
<div class="d-flex justify-content-between">
|
|
<div class="form-group flex-fill me-4">
|
|
<label asp-for="Amount" class="form-label" data-required></label>
|
|
<input type="number" inputmode="decimal" step="any" asp-for="Amount" class="form-control" required disabled="@(!Model.AmountAndCurrencyEditable)" />
|
|
<span asp-validation-for="Amount" class="text-danger"></span>
|
|
@if (!Model.AmountAndCurrencyEditable)
|
|
{
|
|
<p class="info-note text-warning mb-0 mt-2">
|
|
<vc:icon symbol="warning"/>
|
|
Amount and currency are not editable once payment request has invoices
|
|
</p>
|
|
}
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="Currency" class="form-label"></label>
|
|
<input asp-for="Currency" class="form-control w-auto" currency-selection disabled="@(!Model.AmountAndCurrencyEditable)" />
|
|
<span asp-validation-for="Currency" class="text-danger"></span>
|
|
</div>
|
|
</div>
|
|
<div class="form-group form-check">
|
|
<input asp-for="AllowCustomPaymentAmounts" type="checkbox" class="form-check-input" />
|
|
<label asp-for="AllowCustomPaymentAmounts" class="form-check-label"></label>
|
|
<span asp-validation-for="AllowCustomPaymentAmounts" class="text-danger"></span>
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="ExpiryDate" class="form-label"></label>
|
|
<div class="input-group ">
|
|
<input asp-for="ExpiryDate"
|
|
value="@(Model.ExpiryDate?.ToString("u", CultureInfo.InvariantCulture))"
|
|
class="form-control flatdtpicker" min="today" placeholder="No expiry date has been set for this payment request" />
|
|
<button id="ClearExpiryDate" class="btn btn-secondary input-group-clear" type="button" title="Clear">
|
|
<span class="fa fa-times"></span>
|
|
</button>
|
|
</div>
|
|
<span asp-validation-for="ExpiryDate" class="text-danger"></span>
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="Email" class="form-label"></label>
|
|
<input type="email" asp-for="Email" placeholder="Firstname Lastname <email@example.com>" class="form-control" />
|
|
<span asp-validation-for="Email" class="text-danger"></span>
|
|
<div id="PaymentRequestEmailHelpBlock" class="form-text">
|
|
This will send notification mails to the recipient, as configured by the
|
|
<a asp-action="StoreEmails" asp-controller="UIStores" asp-route-storeId="@Model.StoreId">email rules</a>.
|
|
@if (Model.HasEmailRules is not true)
|
|
{
|
|
<div class="info-note mt-1 text-warning" role="alert">
|
|
<vc:icon symbol="warning"/>
|
|
No payment request related email rules have been configured for this store.
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="FormId" class="form-label"></label>
|
|
<select asp-for="FormId" class="form-select w-auto" asp-items="@checkoutFormOptions"></select>
|
|
<span asp-validation-for="FormId" class="text-danger"></span>
|
|
</div>
|
|
|
|
@if (Model.FormResponse is not null)
|
|
{
|
|
<div class="bg-tile rounded py-2 px-3 mb-5">
|
|
<partial name="PosData" model="(Model.FormResponse, 1)"/>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-xl-10 col-xxl-constrain">
|
|
<div class="form-group">
|
|
<label asp-for="Description" class="form-label"></label>
|
|
<textarea asp-for="Description" class="form-control richtext"></textarea>
|
|
<span asp-validation-for="Description" class="text-danger"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@* We are deprecating the custom CSS options in favor of the store branding approach.
|
|
Display this section only if these values are set. *@
|
|
@if (!string.IsNullOrWhiteSpace(Model.CustomCSSLink) || !string.IsNullOrWhiteSpace(Model.EmbeddedCSS))
|
|
{
|
|
<div class="row">
|
|
<div class="col-xl-8 col-xxl-constrain">
|
|
<h4 class="mt-5 mb-2">Additional Options</h4>
|
|
<div class="form-group">
|
|
<div class="accordion" id="additional">
|
|
<div class="accordion-item">
|
|
<h2 class="accordion-header" id="additional-custom-css-header">
|
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#additional-custom-css" aria-expanded="false" aria-controls="additional-custom-css">
|
|
Custom CSS
|
|
<vc:icon symbol="caret-down" />
|
|
</button>
|
|
</h2>
|
|
<div id="additional-custom-css" class="accordion-collapse collapse" aria-labelledby="additional-custom-css-header">
|
|
<div class="accordion-body">
|
|
<div class="form-group">
|
|
<label asp-for="CustomCSSLink" class="form-label"></label>
|
|
<a href="https://docs.btcpayserver.org/Development/Theme/#2-bootstrap-themes" target="_blank" rel="noreferrer noopener" title="More information...">
|
|
<vc:icon symbol="info" />
|
|
</a>
|
|
<input asp-for="CustomCSSLink" class="form-control" />
|
|
<span asp-validation-for="CustomCSSLink" class="text-danger"></span>
|
|
</div>
|
|
<div class="form-group">
|
|
<label asp-for="EmbeddedCSS" class="form-label"></label>
|
|
<textarea asp-for="EmbeddedCSS" rows="10" cols="40" class="form-control"></textarea>
|
|
<span asp-validation-for="EmbeddedCSS" class="text-danger"></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</form>
|
|
|
|
@if (!string.IsNullOrEmpty(Model.Id))
|
|
{
|
|
<div class="d-flex gap-3 mt-3">
|
|
<a class="btn btn-secondary"
|
|
permission="@Policies.CanViewInvoices"
|
|
asp-action="ListInvoices"
|
|
asp-controller="UIInvoice"
|
|
asp-route-storeId="@Model.StoreId"
|
|
asp-route-searchterm="@($"orderid:{PaymentRequestRepository.GetOrderIdForPaymentRequest(Model.Id)}")">Invoices</a>
|
|
<a class="btn btn-secondary" asp-route-payReqId="@Model.Id" asp-action="ClonePaymentRequest" id="ClonePaymentRequest" permission="@Policies.CanModifyPaymentRequests">Clone</a>
|
|
@if (!Model.Archived)
|
|
{
|
|
<a class="btn btn-secondary" data-bs-toggle="tooltip" title="Archive this payment request so that it does not appear in the payment request list by default" asp-controller="UIPaymentRequest" asp-action="TogglePaymentRequestArchival" asp-route-payReqId="@Model.Id" id="ArchivePaymentRequest" permission="@Policies.CanModifyPaymentRequests">Archive</a>
|
|
}
|
|
else
|
|
{
|
|
<a class="btn btn-secondary" data-bs-toggle="tooltip" title="Unarchive this payment request" asp-controller="UIPaymentRequest" asp-action="TogglePaymentRequestArchival" asp-route-payReqId="@Model.Id" id="UnarchivePaymentRequest" permission="@Policies.CanModifyPaymentRequests">Unarchive</a>
|
|
}
|
|
</div>
|
|
}
|