mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-01-19 05:33:31 +01:00
d0e11f1ec4
* Resolves: check box to toggle in various setting views * resolve conflicts * Notification logic reversal * remove transform property in the toggle * Handle email tls certificate check * Unifications and fixes --------- Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
188 lines
10 KiB
Plaintext
188 lines
10 KiB
Plaintext
@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 d-flex">
|
|
<input asp-for="AllowCustomPaymentAmounts" type="checkbox" class="btcpay-toggle me-3" />
|
|
<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>
|
|
}
|