mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 14:34:23 +01:00
Bootstrap migration fixups (#2534)
* Remove xxl breakpoint * Remove code bg * Form updates * Update PoS accordion * Update forms * Fix webhook password toggle * Update highlight js styles * Page updates * Style unformatted checkboxes * Fix typo * Update accordions * Update policies domain mapping * Update toggles and checkboxes * Update storage pages * Fix specter logo filename casing * Update checkout experience view * Update webhook view * Re-add used negative margins * Update bootstrap * POS layout fixes * Decrease size of info icon in main headline * Update BTCPayServer/Views/Stores/ModifyWebhook.cshtml Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com> Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>
This commit is contained in:
@@ -5,6 +5,7 @@ namespace BTCPayServer.Models.ServerViewModels
|
||||
public class LndServicesViewModel
|
||||
{
|
||||
public string Host { get; set; }
|
||||
[Display(Name = "Use SSL")]
|
||||
public bool SSL { get; set; }
|
||||
public string Macaroon { get; set; }
|
||||
public string AdminMacaroon { get; set; }
|
||||
|
||||
@@ -31,17 +31,16 @@ namespace BTCPayServer.Models.StoreViewModels
|
||||
[Display(Name = "Default payment method on checkout")]
|
||||
public string DefaultPaymentMethod { get; set; }
|
||||
|
||||
|
||||
[Display(Name = "Requires a refund email")]
|
||||
public bool RequiresRefundEmail { get; set; }
|
||||
|
||||
[Display(Name = "Display lightning payment amounts in Satoshis")]
|
||||
[Display(Name = "Display Lightning payment amounts in Satoshis")]
|
||||
public bool LightningAmountInSatoshi { get; set; }
|
||||
|
||||
[Display(Name = "Add hop hints for private channels to the lightning invoice")]
|
||||
[Display(Name = "Add hop hints for private channels to the Lightning invoice")]
|
||||
public bool LightningPrivateRouteHints { get; set; }
|
||||
|
||||
[Display(Name = "Include lightning invoice fallback to on-chain BIP21 payment url")]
|
||||
[Display(Name = "Include Lightning invoice fallback to on-chain BIP21 payment URL")]
|
||||
public bool OnChainWithLnInvoiceFallback { get; set; }
|
||||
|
||||
[Display(Name = "Only enable the payment method after user explicitly chooses it")]
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</p>
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" class="form-control" />
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
||||
<input asp-for="RememberMe" type="hidden"/>
|
||||
<div class="form-group">
|
||||
<label asp-for="TwoFactorCode"></label>
|
||||
<label asp-for="TwoFactorCode" class="form-label"></label>
|
||||
<input asp-for="TwoFactorCode" class="form-control" autocomplete="off" autofocus style="width:13em" />
|
||||
<span asp-validation-for="TwoFactorCode" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="checkbox">
|
||||
<label asp-for="RememberMachine">
|
||||
<label asp-for="RememberMachine" class="form-label">
|
||||
<input asp-for="RememberMachine"/>
|
||||
@Html.DisplayNameFor(m => m.RememberMachine)
|
||||
</label>
|
||||
|
||||
@@ -37,17 +37,17 @@
|
||||
<fieldset disabled="@(ViewData.ContainsKey("disabled") ? "disabled" : null)" >
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" class="form-control" required autofocus />
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Password"></label>
|
||||
<label asp-for="Password" class="form-label"></label>
|
||||
<input asp-for="Password" class="form-control" required />
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<label asp-for="ConfirmPassword" class="form-label"></label>
|
||||
<input asp-for="ConfirmPassword" class="form-control" required />
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -36,27 +36,26 @@
|
||||
{
|
||||
<input asp-for="Email" type="hidden"/>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input type="text" disabled value="@Model.Email" class="form-control"/>
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" value="@Model.Email" class="form-control"/>
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
}
|
||||
<div class="form-group">
|
||||
<label asp-for="Password"></label>
|
||||
<label asp-for="Password" class="form-label"></label>
|
||||
<input asp-for="Password" class="form-control"/>
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<label asp-for="ConfirmPassword" class="form-label"></label>
|
||||
<input asp-for="ConfirmPassword" class="form-control"/>
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer text-start">
|
||||
<div class="card-footer text-start p-3">
|
||||
<button type="button" class="btn btn-secondary" v-on:click="editItem(-1)" id="btn-add">
|
||||
<i class="fa fa-plus fa-fw"></i> Add
|
||||
</button>
|
||||
@@ -65,13 +65,13 @@
|
||||
<div class="modal-body" v-if="editingItem">
|
||||
<div class="mb-3">
|
||||
<span class="text-danger row m-2" v-for="error of errors">{{error}}</span>
|
||||
<div class="form-row">
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-6">
|
||||
<label data-required>Title</label>
|
||||
<label class="form-label" data-required>Title</label>
|
||||
<input type="text" required pattern="[^\*#]+" class="form-control mb-2" v-model="editingItem.title" autofocus ref="txtTitle" />
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label data-required>Price</label>
|
||||
<label class="form-label" data-required>Price</label>
|
||||
<input class="form-control mb-2"
|
||||
inputmode="numeric"
|
||||
pattern="\d*"
|
||||
@@ -82,45 +82,34 @@
|
||||
v-model="editingItem.price" ref="txtPrice"/>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label>Custom price</label>
|
||||
<label class="form-label">Custom price</label>
|
||||
<select class="form-select" v-model="editingItem.custom">
|
||||
<option v-for="option in customPriceOptions" :value="option.value">{{option.text}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Image</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Image</label>
|
||||
<input type="text" class="form-control mb-2" pattern="[^\*#]+" v-model="editingItem.image" ref="txtImage"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Description</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Description</label>
|
||||
<textarea rows="3" cols="40" class="form-control mb-2" v-model="editingItem.description" ref="txtDescription"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Inventory (leave blank to not use inventory feature)</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Inventory (leave blank to not use inventory feature)</label>
|
||||
<input type="number" min="0" step="1" class="form-control mb-2" v-model="editingItem.inventory" ref="txtInventory" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Id (leave blank to generate from title)</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Id (leave blank to generate from title)</label>
|
||||
<input type="text" required pattern="[^\*#]+" class="form-control mb-2" v-model="editingItem.id" ref="txtId"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Buy Button Text</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Buy Button Text</label>
|
||||
<input type="text" id="BuyButtonText" class="form-control mb-2" v-model="editingItem.buyButtonText" ref="txtBuyButtonText"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" v-on:click="clearEditingItem()">Close</button>
|
||||
<button type="button" class="btn btn-primary" v-on:click="saveEditingItem()" id="SaveItemChanges">Save Changes</button>
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Sounds"></label>
|
||||
<label asp-for="Sounds" class="form-label"></label>
|
||||
<textarea asp-for="Sounds" class="form-control"></textarea>
|
||||
<span asp-validation-for="Sounds" class="text-danger"></span>
|
||||
</div>
|
||||
@@ -164,7 +164,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="AnimationColors"></label>
|
||||
<label asp-for="AnimationColors" class="form-label"></label>
|
||||
<textarea asp-for="AnimationColors" class="form-control"></textarea>
|
||||
<span asp-validation-for="AnimationColors" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -126,14 +126,15 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="accordion" id="accordian-dev-info">
|
||||
<div class="accordion" id="accordion-dev-info">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="accordian-dev-info-embed-payment-button-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordian-dev-info-embed-payment-button" aria-expanded="false" aria-controls="accordian-dev-info-embed-payment-button">
|
||||
<h2 class="accordion-header" id="accordion-dev-info-embed-payment-button-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-dev-info-embed-payment-button" aria-expanded="false" aria-controls="accordion-dev-info-embed-payment-button">
|
||||
Embed Payment Button linking to POS item
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="accordian-dev-info-embed-payment-button" class="accordion-collapse collapse" aria-labelledby="accordian-dev-info-embed-payment-button-header" data-bs-parent="#accordian-dev-info">
|
||||
<div id="accordion-dev-info-embed-payment-button" class="accordion-collapse collapse" aria-labelledby="accordion-dev-info-embed-payment-button-header" data-bs-parent="#accordion-dev-info">
|
||||
<div class="accordion-body">
|
||||
<p>You can host point of sale buttons in an external website with the following code.</p>
|
||||
@if (Model.Example1 != null)
|
||||
@@ -150,12 +151,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="accordian-dev-info-embed-pos-iframe-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordian-dev-info-embed-pos-iframe" aria-expanded="false" aria-controls="accordian-dev-info-embed-pos-iframe">
|
||||
<h2 class="accordion-header" id="accordion-dev-info-embed-pos-iframe-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-dev-info-embed-pos-iframe" aria-expanded="false" aria-controls="accordion-dev-info-embed-pos-iframe">
|
||||
Embed POS with Iframe
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="accordian-dev-info-embed-pos-iframe" class="accordion-collapse collapse" aria-labelledby="accordian-dev-info-embed-pos-iframe-header" data-bs-parent="#accordian-dev-info">
|
||||
<div id="accordion-dev-info-embed-pos-iframe" class="accordion-collapse collapse" aria-labelledby="accordion-dev-info-embed-pos-iframe-header" data-bs-parent="#accordion-dev-info">
|
||||
<div class="accordion-body">
|
||||
You can embed the POS using an iframe
|
||||
@{
|
||||
@@ -166,12 +168,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="accordian-dev-info-notification-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordian-dev-info-notification" aria-expanded="false" aria-controls="accordian-dev-info-notification">
|
||||
<h2 class="accordion-header" id="accordion-dev-info-notification-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#accordion-dev-info-notification" aria-expanded="false" aria-controls="accordion-dev-info-notification">
|
||||
Notification Url Callbacks
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="accordian-dev-info-notification" class="accordion-collapse collapse" aria-labelledby="accordian-dev-info-notification-header" data-bs-parent="#accordian-dev-info">
|
||||
<div id="accordion-dev-info-notification" class="accordion-collapse collapse" aria-labelledby="accordion-dev-info-notification-header" data-bs-parent="#accordion-dev-info">
|
||||
<div class="accordion-body">
|
||||
<p>A <code>POST</code> callback will be sent to notification with the following form will be sent to <code>notificationUrl</code> once the enough is paid and once again once there is enough confirmations to the payment:</p>
|
||||
<pre><code class="json">@Model.ExampleCallback</code></pre>
|
||||
@@ -219,13 +222,13 @@
|
||||
<div class="mb-3">
|
||||
<input class="js-product-id" type="hidden" name="id" value="{id}">
|
||||
<input class="js-product-index" type="hidden" name="index" value="{index}">
|
||||
<div class="form-row">
|
||||
<div class="form-group row">
|
||||
<div class="col-sm-6">
|
||||
<label data-required>Title</label>
|
||||
<label class="form-label" data-required>Title</label>
|
||||
<input type="text" class="js-product-title form-control mb-2" value="{title}" autofocus required />
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label data-required>Price</label>
|
||||
<label class="form-label" data-required>Price</label>
|
||||
<input class="js-product-price form-control mb-2"
|
||||
inputmode="numeric"
|
||||
pattern="\d*"
|
||||
@@ -234,31 +237,25 @@
|
||||
required />
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label>Custom price</label>
|
||||
<label class="form-label">Custom price</label>
|
||||
<select class="js-product-custom form-select">
|
||||
{custom}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Image</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Image</label>
|
||||
<input type="text" class="js-product-image form-control mb-2" value="{image}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Description</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Description</label>
|
||||
<textarea rows="3" cols="40" class="js-product-description form-control mb-2">{description}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="col">
|
||||
<label>Inventory (leave blank to not use inventory feature)</label>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Inventory (leave blank to not use inventory feature)</label>
|
||||
<input type="number" step="1" class="js-product-inventory form-control mb-2" value="{inventory}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<bundle name="wwwroot/bundles/pos-admin-bundle.min.js" asp-append-version="true"></bundle>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<td class="align-middle px-0">
|
||||
<div class="input-group align-items-center">
|
||||
<a class="js-cart-item-minus btn btn-link px-2" href="#"><i class="fa fa-minus-circle fa-fw text-danger"></i></a>
|
||||
<input class="js-cart-item-count form-control form-control-sm pull-left" type="number" step="1" name="count" placeholder="Qty" max="{inventory}" value="{count}" data-prev="{count}">
|
||||
<input class="js-cart-item-count form-control form-control-sm pull-left hide-number-spin text-end" type="number" step="1" name="count" placeholder="Qty" max="{inventory}" value="{count}" data-prev="{count}">
|
||||
<a class="input-group-text js-cart-item-plus btn btn-link px-2" href="#">
|
||||
<i class="fa fa-plus-circle fa-fw text-success"></i>
|
||||
</a>
|
||||
@@ -211,14 +211,14 @@
|
||||
}
|
||||
</div>
|
||||
<div id="js-pos-list" class="text-center mx-auto px-4">
|
||||
<div class="row card-deck my-3">
|
||||
<div class="card-deck my-3">
|
||||
@for (var index = 0; index < Model.Items.Length; index++)
|
||||
{
|
||||
var item = Model.Items[index];
|
||||
var image = item.Image;
|
||||
var description = item.Description;
|
||||
|
||||
<div class="js-add-cart card px-0 m-2 card-wrapper" data-index="@index">
|
||||
<div class="js-add-cart card px-0 card-wrapper" data-index="@index">
|
||||
@if (!String.IsNullOrWhiteSpace(image))
|
||||
{
|
||||
@:<img class="card-img-top" src="@image" alt="Card image cap" asp-append-version="true">
|
||||
@@ -230,7 +230,7 @@
|
||||
<p class="card-text">@Safe.Raw(description)</p>
|
||||
}
|
||||
</div>
|
||||
<div class="card-footer pt-0 bg-transparent border-0">
|
||||
<div class="card-footer bg-transparent border-0 pt-0 pb-3">
|
||||
|
||||
<span class="text-muted small">@((item.BuyButtonText ?? Model.ButtonText).Replace("{0}",item.Price.Formatted).Replace("{Price}",item.Price.Formatted))</span>
|
||||
@if (item.Inventory.HasValue)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class="overflow-hidden col-12">@Safe.Raw(Model.Description)</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row card-deck my-3 mx-auto">
|
||||
<div class="card-deck my-3 mx-auto">
|
||||
@for (int x = 0; x < Model.Items.Length; x++)
|
||||
{
|
||||
var item = Model.Items[x];
|
||||
@@ -26,13 +26,13 @@
|
||||
: item.BuyButtonText)
|
||||
.Replace("{0}",item.Price.Formatted)
|
||||
.Replace("{Price}",item.Price.Formatted);
|
||||
<div class="card px-0 m-2" data-id="@x">
|
||||
<div class="card px-0" data-id="@x">
|
||||
@if (!String.IsNullOrWhiteSpace(item.Image))
|
||||
{
|
||||
<img class="card-img-top" src="@item.Image" alt="Card image cap" asp-append-version="true">
|
||||
}
|
||||
@{CardBody(item.Title, item.Description);}
|
||||
<div class="card-footer bg-transparent border-0">
|
||||
<div class="card-footer bg-transparent border-0 pb-3">
|
||||
@if (!item.Inventory.HasValue || item.Inventory.Value > 0)
|
||||
{
|
||||
@if (item.Custom)
|
||||
@@ -74,9 +74,9 @@
|
||||
}
|
||||
@if (Model.ShowCustomAmount)
|
||||
{
|
||||
<div class="card px-0 m-2">
|
||||
<div class="card px-0">
|
||||
@{CardBody("Custom Amount", "Create invoice to pay custom amount");}
|
||||
<div class="card-footer bg-transparent border-0">
|
||||
<div class="card-footer bg-transparent border-0 pb-3">
|
||||
<form method="post" asp-controller="AppsPublic" asp-action="ViewPointOfSale" asp-route-appId="@Model.AppId" asp-antiforgery="false" data-buy>
|
||||
@{PayFormInputContent(Model.CustomButtonText);}
|
||||
</form>
|
||||
|
||||
@@ -22,22 +22,22 @@
|
||||
</a>
|
||||
</p>
|
||||
<div class="form-group">
|
||||
<label asp-for="MerchantId"></label>
|
||||
<label asp-for="MerchantId" class="form-label"></label>
|
||||
<input asp-for="MerchantId" class="form-control"/>
|
||||
<span asp-validation-for="MerchantId" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Mode"></label>
|
||||
<label asp-for="Mode" class="form-label"></label>
|
||||
<select asp-for="Mode" asp-items="Model.Modes" class="form-select"></select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="AmountMarkupPercentage"></label>
|
||||
<label asp-for="AmountMarkupPercentage" class="form-label"></label>
|
||||
<input asp-for="AmountMarkupPercentage" class="form-control"/>
|
||||
<span asp-validation-for="AmountMarkupPercentage" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Enabled"></label>
|
||||
<input asp-for="Enabled" type="checkbox" class="form-check"/>
|
||||
<div class="form-group form-check">
|
||||
<label asp-for="Enabled" class="form-check-label"></label>
|
||||
<input asp-for="Enabled" type="checkbox" class="form-check-input"/>
|
||||
</div>
|
||||
<button name="command" type="submit" value="save" class="btn btn-primary">Submit</button>
|
||||
</form>
|
||||
|
||||
@@ -19,45 +19,45 @@
|
||||
|
||||
<input type="hidden" asp-for="OriginalIndex"/>
|
||||
<div class="form-group">
|
||||
<label asp-for="Seed"></label>
|
||||
<label asp-for="Seed" class="form-label"></label>
|
||||
<input asp-for="Seed" type="text" class="form-control"/>
|
||||
<span asp-validation-for="Seed" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Passphrase"></label>
|
||||
<label asp-for="Passphrase" class="form-label"></label>
|
||||
<input type="text" asp-for="Passphrase" class="form-control" autocomplete="off"/>
|
||||
<span asp-validation-for="Passphrase" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="KeyPath"></label>
|
||||
<label asp-for="KeyPath" class="form-label"></label>
|
||||
<input asp-for="KeyPath" class="form-control"/>
|
||||
<span class="text-muted">Please see <a href="https://medium.com/myetherwallet/hd-wallets-and-derivation-paths-explained-865a643c7bf2" target="_blank">this article.</a></span>
|
||||
<span asp-validation-for="KeyPath" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="StoreSeed"></label>
|
||||
<input asp-for="StoreSeed" type="checkbox" class="form-check"/>
|
||||
<div class="form-group form-check">
|
||||
<input asp-for="StoreSeed" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="StoreSeed" class="form-check-label"></label>
|
||||
<span class="text-muted">Store the seed/password on server if provided. If not checked, will generate the xpub and erase the seed/pass from server</span>
|
||||
<span asp-validation-for="StoreSeed" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="XPub"></label>
|
||||
<label asp-for="XPub" class="form-label"></label>
|
||||
<input asp-for="XPub" class="form-control"/>
|
||||
<span class="text-muted">The public master key derived from a seed/pass/keypath. This allows you to generate addresses without private keys on the server.</span>
|
||||
<span asp-validation-for="XPub" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="Index"></label>
|
||||
<label asp-for="Index" class="form-label"></label>
|
||||
<input asp-for="Index" type="number" min="0" class="form-control"/>
|
||||
<span class="text-muted">The index to generate the next address from. If you are using a wallet that you have used before, be sure to set this to the last index +1</span>
|
||||
<span asp-validation-for="Index" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="AddressCheck"></label>
|
||||
<label asp-for="AddressCheck" class="form-label"></label>
|
||||
<div class="input-group">
|
||||
<input asp-for="AddressCheck" type="text" class="form-control"/>
|
||||
<div class="input-group-text">
|
||||
@@ -67,9 +67,9 @@
|
||||
<span class="text-muted">Check wallet by providing an address it can generate within the first 1000 indexes</span>
|
||||
<span asp-validation-for="AddressCheck" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Enabled"></label>
|
||||
<input asp-for="Enabled" type="checkbox" class="form-check"/>
|
||||
<div class="form-group form-check">
|
||||
<input asp-for="Enabled" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="Enabled" class="form-check-label"></label>
|
||||
<span asp-validation-for="Enabled" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -73,9 +73,9 @@
|
||||
</div>
|
||||
@if (Model.RequireConfirm)
|
||||
{
|
||||
<form id="RecoveryConfirmation" action="@Model.ReturnUrl" class="d-flex align-items-start justify-content-center" style="margin-top:4rem;padding-bottom: 80px">
|
||||
<form id="RecoveryConfirmation" action="@Model.ReturnUrl" class="position-relative d-flex align-items-start justify-content-center" style="margin-top:4rem;padding-bottom: 80px">
|
||||
<label class="form-check-label lead order-2" for="confirm">I have written down my recovery phrase and stored it in a secure location</label>
|
||||
<input type="checkbox" class="mt-2 me-3 order-1" id="confirm">
|
||||
<input type="checkbox" class="mt-2 me-3 order-1 form-check-input" id="confirm">
|
||||
<button type="submit" class="btn btn-primary btn-lg px-5 order-3" id="submit">Done</button>
|
||||
<button type="submit" class="btn btn-primary btn-lg px-5 order-3" disabled>Done</button>
|
||||
</form>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: 0.25rem;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.badge .dropdown-toggle {
|
||||
@@ -329,7 +329,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:2rem;" class="only-for-js">
|
||||
<input id="selectAllCheckbox" type="checkbox" onclick="selectAll(this);"/>
|
||||
<input id="selectAllCheckbox" type="checkbox" class="form-check-input" onclick="selectAll(this);"/>
|
||||
</th>
|
||||
<th style="min-width:90px;" class="col-md-auto">
|
||||
Date
|
||||
@@ -349,7 +349,7 @@
|
||||
{
|
||||
<tr id="invoice_@invoice.InvoiceId" class="invoice-row">
|
||||
<td class="only-for-js">
|
||||
<input name="selectedItems" type="checkbox" class="selector" value="@invoice.InvoiceId"/>
|
||||
<input name="selectedItems" type="checkbox" class="selector form-check-input" value="@invoice.InvoiceId"/>
|
||||
</td>
|
||||
<td>
|
||||
<span class="switchTimeFormat" data-switch="@invoice.Date.ToTimeAgo()">
|
||||
|
||||
@@ -32,21 +32,21 @@
|
||||
<input type="hidden" asp-for="FiatAmount"/>
|
||||
<input type="hidden" asp-for="CryptoAmountNow"/>
|
||||
<div class="form-group">
|
||||
<div class="form-check-inline">
|
||||
<div class="form-check">
|
||||
<input id="RateThenText" asp-for="SelectedRefundOption" type="radio" value="RateThen" class="form-check-input"/>
|
||||
<label for="RateThenText" class="form-check-label">@Model.RateThenText</label>
|
||||
</div>
|
||||
<small class="form-text text-muted">The crypto currency price, at the rate the invoice got paid.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check-inline">
|
||||
<div class="form-check">
|
||||
<input id="CurrentRateText" asp-for="SelectedRefundOption" type="radio" value="CurrentRate" class="form-check-input"/>
|
||||
<label for="CurrentRateText" class="form-check-label">@Model.CurrentRateText</label>
|
||||
</div>
|
||||
<small class="form-text text-muted">The crypto currency price, at the current rate.</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check-inline">
|
||||
<div class="form-check">
|
||||
<input id="FiatText" asp-for="SelectedRefundOption" type="radio" value="Fiat" class="form-check-input"/>
|
||||
<label for="FiatText" class="form-check-label">@Model.FiatText</label>
|
||||
</div>
|
||||
@@ -54,7 +54,7 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-check-inline">
|
||||
<div class="form-check">
|
||||
<input id="CustomText" asp-for="SelectedRefundOption" type="radio" value="Custom" class="form-check-input"/>
|
||||
<label for="CustomText" class="form-check-label">Custom</label>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="Label"></label>
|
||||
<label asp-for="Label" class="form-label"></label>
|
||||
<input asp-for="Label" class="form-control"/>
|
||||
<span asp-validation-for="Label" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
}
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="OldPassword"></label>
|
||||
<label asp-for="OldPassword" class="form-label"></label>
|
||||
<input asp-for="OldPassword" class="form-control"/>
|
||||
<span asp-validation-for="OldPassword" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="NewPassword"></label>
|
||||
<label asp-for="NewPassword" class="form-label"></label>
|
||||
<input asp-for="NewPassword" class="form-control"/>
|
||||
<span asp-validation-for="NewPassword" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<label asp-for="ConfirmPassword" class="form-label"></label>
|
||||
<input asp-for="ConfirmPassword" class="form-control"/>
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label asp-for="Username"></label>
|
||||
<label asp-for="Username" class="form-label"></label>
|
||||
<input asp-for="Username" class="form-control" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="form-group row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" class="form-control"/>
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -16,11 +16,8 @@
|
||||
else
|
||||
{
|
||||
<div class="form-group">
|
||||
|
||||
<label> Do not receive notifications for</label>
|
||||
|
||||
<p>Do not receive notifications for</p>
|
||||
<div class="card">
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
@for (var index = 0; index < Model.DisabledNotifications.Count; index++)
|
||||
{
|
||||
|
||||
@@ -33,17 +33,17 @@
|
||||
<div class="card my-2">
|
||||
<h3 class="card-title p-2">Upload Wallet</h3>
|
||||
<div class="form-group p-2">
|
||||
<label asp-for="WalletFile"></label>
|
||||
<label asp-for="WalletFile" class="form-label"></label>
|
||||
<input class="form-control" asp-for="WalletFile" required>
|
||||
<span asp-validation-for="WalletFile" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group p-2">
|
||||
<label asp-for="WalletKeysFile"></label>
|
||||
<label asp-for="WalletKeysFile" class="form-label"></label>
|
||||
<input class="form-control" asp-for="WalletKeysFile" required>
|
||||
<span asp-validation-for="WalletKeysFile" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group p-2">
|
||||
<label asp-for="WalletPassword"></label>
|
||||
<label asp-for="WalletPassword" class="form-label"></label>
|
||||
<input class="form-control" asp-for="WalletPassword">
|
||||
<span asp-validation-for="WalletPassword" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<th width="30px" class="only-for-js">
|
||||
@if (Model.Total > 0)
|
||||
{
|
||||
<input name="selectedItems" type="checkbox" onClick="selectAll(this);" />
|
||||
<input name="selectedItems" type="checkbox" class="form-check-input" onClick="selectAll(this);" />
|
||||
}
|
||||
</th>
|
||||
<th width="190px">
|
||||
@@ -55,7 +55,7 @@
|
||||
{
|
||||
<tr data-guid="@item.Id" class="notification-row @(item.Seen ? "seen" : "")">
|
||||
<td class="only-for-js">
|
||||
<input name="selectedItems" type="checkbox" class="selector" value="@item.Id"/>
|
||||
<input name="selectedItems" type="checkbox" class="selector form-check-input" value="@item.Id"/>
|
||||
</td>
|
||||
<td onclick="toggleRowCheckbox(this)">
|
||||
<span class="switchTimeFormat" data-switch="@item.Created.ToTimeAgo()">
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<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" />x
|
||||
class="form-control flatdtpicker" min="today" placeholder="No expiry date has been set for this payment request" />
|
||||
<button class="btn btn-secondary input-group-clear" type="button" title="Clear">
|
||||
<span class="fa fa-times"></span>
|
||||
</button>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
<p>See QR Code information by clicking <a href="#detailsQR" data-bs-toggle="collapse">here</a></p>
|
||||
<div id="detailsQR" class="collapse">
|
||||
<div class="form-group">
|
||||
<label>QR Code data</label>
|
||||
<label class="form-label">QR Code data</label>
|
||||
<input asp-for="QRCode" readonly class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -68,60 +68,60 @@
|
||||
@if (Model.Uri == null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Host"></label>
|
||||
<label asp-for="Host" class="form-label"></label>
|
||||
<input asp-for="Host" readonly class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="SSL"></label>
|
||||
<input asp-for="SSL" disabled type="checkbox" class="form-check-inline" />
|
||||
<label asp-for="SSL" class="form-label"></label>
|
||||
<input asp-for="SSL" disabled type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Uri"></label>
|
||||
<label asp-for="Uri" class="form-label"></label>
|
||||
<input asp-for="Uri" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.Macaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Macaroon"></label>
|
||||
<label asp-for="Macaroon" class="form-label"></label>
|
||||
<input asp-for="Macaroon" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.AdminMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="AdminMacaroon"></label>
|
||||
<label asp-for="AdminMacaroon" class="form-label"></label>
|
||||
<input asp-for="AdminMacaroon" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.InvoiceMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="InvoiceMacaroon"></label>
|
||||
<label asp-for="InvoiceMacaroon" class="form-label"></label>
|
||||
<input asp-for="InvoiceMacaroon" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.ReadonlyMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="ReadonlyMacaroon"></label>
|
||||
<label asp-for="ReadonlyMacaroon" class="form-label"></label>
|
||||
<input asp-for="ReadonlyMacaroon" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.GRPCSSLCipherSuites != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="GRPCSSLCipherSuites"></label>
|
||||
<label asp-for="GRPCSSLCipherSuites" class="form-label"></label>
|
||||
<input asp-for="GRPCSSLCipherSuites" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
@if (Model.CertificateThumbprint != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="CertificateThumbprint"></label>
|
||||
<label asp-for="CertificateThumbprint" class="form-label"></label>
|
||||
<input asp-for="CertificateThumbprint" readonly class="form-control" />
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
</div>
|
||||
|
||||
<a href="@Model.ServiceLink" target="_blank" class="form-group">
|
||||
<label>Service</label>
|
||||
<input asp-for="ServiceLink" readonly class="form-control" />
|
||||
<label asp-for="ServiceLink" class="form-label">Service</label>
|
||||
<input asp-for="ServiceLink" class="form-control" readonly />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="IsDownload"></label>
|
||||
<input type="checkbox" class="form-check" asp-for="IsDownload"/>
|
||||
<div class="form-group form-check">
|
||||
<input type="checkbox" class="form-check-input" asp-for="IsDownload"/>
|
||||
<label asp-for="IsDownload" class="form-check-label"></label>
|
||||
<span asp-validation-for="IsDownload" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -11,19 +11,19 @@
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" required="required" class="form-control"/>
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="Password"></label>
|
||||
<label asp-for="Password" class="form-label"></label>
|
||||
<input asp-for="Password" class="form-control"/>
|
||||
<span asp-validation-for="Password" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword"></label>
|
||||
<label asp-for="ConfirmPassword" class="form-label"></label>
|
||||
<input asp-for="ConfirmPassword" class="form-control"/>
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div class="form-group">
|
||||
<input type="hidden" asp-for="Modify"/>
|
||||
<div class="form-group">
|
||||
<label asp-for="Settings.ServiceUrl"></label>
|
||||
<label asp-for="Settings.ServiceUrl" class="form-label"></label>
|
||||
<input id="ServiceUrl" asp-for="Settings.ServiceUrl" class="form-control" placeholder="Url"/>
|
||||
<p class="form-text text-muted">
|
||||
Well-known Dynamic DNS providers are:
|
||||
@@ -26,7 +26,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Settings.Hostname"></label>
|
||||
<label asp-for="Settings.Hostname" class="form-label"></label>
|
||||
@if (Model.Modify)
|
||||
{
|
||||
<input asp-for="Settings.Hostname" class="form-control" readonly placeholder="Hostname"/>
|
||||
@@ -45,18 +45,18 @@
|
||||
}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Settings.Login"></label>
|
||||
<label asp-for="Settings.Login" class="form-label"></label>
|
||||
<input asp-for="Settings.Login" class="form-control" placeholder="Login"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Settings.Password"></label>
|
||||
<label asp-for="Settings.Password" class="form-label"></label>
|
||||
<input asp-for="Settings.Password" class="form-control" placeholder="Password"/>
|
||||
</div>
|
||||
@if (Model.Modify)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Settings.Enabled"></label>
|
||||
<input asp-for="Settings.Enabled" class="form-check-inline" type="checkbox"/>
|
||||
<label asp-for="Settings.Enabled" class="form-label"></label>
|
||||
<input asp-for="Settings.Enabled" disabled type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
}
|
||||
<button name="command" class="btn btn-primary" type="submit" value="Save">Save</button>
|
||||
|
||||
@@ -9,37 +9,37 @@
|
||||
<div class="col-lg-6">
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="ContainerName"></label>
|
||||
<label asp-for="ContainerName" class="form-label"></label>
|
||||
<input class="form-control" asp-for="ContainerName"/>
|
||||
<span asp-validation-for="ContainerName" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="SecretKey"></label>
|
||||
<label asp-for="SecretKey" class="form-label"></label>
|
||||
<input class="form-control" asp-for="SecretKey"/>
|
||||
<span asp-validation-for="SecretKey" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Bucket"></label>
|
||||
<label asp-for="Bucket" class="form-label"></label>
|
||||
<input class="form-control" asp-for="Bucket"/>
|
||||
<span asp-validation-for="Bucket" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ServiceUrl"></label>
|
||||
<label asp-for="ServiceUrl" class="form-label"></label>
|
||||
<input class="form-control" asp-for="ServiceUrl"/>
|
||||
<span asp-validation-for="ServiceUrl" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ServerSideEncryptionMethod"></label>
|
||||
<label asp-for="ServerSideEncryptionMethod" class="form-label"></label>
|
||||
<input class="form-control" asp-for="ServerSideEncryptionMethod"/>
|
||||
<span asp-validation-for="ServerSideEncryptionMethod" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ProfileName"></label>
|
||||
<label asp-for="ProfileName" class="form-label"></label>
|
||||
<input class="form-control" asp-for="ProfileName"/>
|
||||
<span asp-validation-for="ProfileName" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ChunkedUploadThreshold"></label>
|
||||
<label asp-for="ChunkedUploadThreshold" class="form-label"></label>
|
||||
<input class="form-control" type="number" asp-for="ChunkedUploadThreshold"/>
|
||||
<span asp-validation-for="ChunkedUploadThreshold" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -9,18 +9,18 @@
|
||||
<div class="col-lg-6">
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="ContainerName"></label>
|
||||
<input class="form-control" asp-for="ContainerName"/>
|
||||
<label asp-for="ContainerName" class="form-label">Container Name</label>
|
||||
<input asp-for="ContainerName" class="form-control" />
|
||||
<span asp-validation-for="ContainerName" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="ConnectionString"></label>
|
||||
<input class="form-control" type="text" asp-for="ConnectionString"/>
|
||||
<label asp-for="ConnectionString" class="form-label">Connection String</label>
|
||||
<input asp-for="ConnectionString" class="form-control" />
|
||||
<span asp-validation-for="ConnectionString" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
|
||||
<a asp-action="Storage" asp-route-forceChoice="true">Change Storage provider</a>
|
||||
<a asp-action="Storage" asp-route-forceChoice="true" class="ms-2">Change Storage provider</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,28 +9,28 @@
|
||||
<div class="col-lg-6">
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="ContainerName"></label>
|
||||
<input class="form-control" asp-for="ContainerName"/>
|
||||
<label asp-for="ContainerName" class="form-label">Container Name</label>
|
||||
<input asp-for="ContainerName" class="form-control" />
|
||||
<span asp-validation-for="ContainerName" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="JsonCredentials"></label>
|
||||
<input class="form-control" asp-for="JsonCredentials"/>
|
||||
<label asp-for="JsonCredentials" class="form-label">JSON Credentials</label>
|
||||
<input asp-for="JsonCredentials" class="form-control" />
|
||||
<span asp-validation-for="JsonCredentials" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Bucket"></label>
|
||||
<input class="form-control" asp-for="Bucket"/>
|
||||
<label asp-for="Bucket" class="form-label"></label>
|
||||
<input asp-for="Bucket" class="form-control" />
|
||||
<span asp-validation-for="Bucket" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Email"></label>
|
||||
<input class="form-control" asp-for="Email"/>
|
||||
<label asp-for="Email" class="form-label"></label>
|
||||
<input asp-for="Email" class="form-control" />
|
||||
<span asp-validation-for="Email" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
|
||||
<a asp-action="Storage" asp-route-forceChoice="true">Change Storage provider</a>
|
||||
<a asp-action="Storage" asp-route-forceChoice="true" class="ms-2">Change Storage provider</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -32,22 +32,22 @@
|
||||
@if (Model.Uri != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Uri"></label>
|
||||
<input asp-for="Uri" readonly class="form-control" />
|
||||
<label asp-for="Uri" class="form-label"></label>
|
||||
<input asp-for="Uri" class="form-control" readonly />
|
||||
</div>
|
||||
}
|
||||
@if (Model.APIToken != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="APIToken"></label>
|
||||
<input asp-for="APIToken" readonly class="form-control" />
|
||||
<label asp-for="APIToken" class="form-label"></label>
|
||||
<input asp-for="APIToken" class="form-control" readonly />
|
||||
</div>
|
||||
}
|
||||
@if (Model.AuthenticatedUri != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="AuthenticatedUri"></label>
|
||||
<input asp-for="AuthenticatedUri" readonly class="form-control" />
|
||||
<label asp-for="AuthenticatedUri" class="form-label"></label>
|
||||
<input asp-for="AuthenticatedUri" class="form-control" readonly />
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -60,12 +60,12 @@
|
||||
<p>See QR Code information by clicking <a href="#detailsQR" data-bs-toggle="collapse">here</a>.</p>
|
||||
<div id="detailsQR" class="collapse">
|
||||
<div class="form-group">
|
||||
<label>QR Code data</label>
|
||||
<input asp-for="QRCode" readonly class="form-control"/>
|
||||
<label asp-for="QRCode" class="form-label">QR Code data</label>
|
||||
<input asp-for="QRCode" class="form-control" readonly />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<p>
|
||||
Click <a href="@Model.QRCodeLink" target="_blank">here</a> to open the configuration file.
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -76,60 +76,60 @@
|
||||
@if (Model.Uri == null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Host"></label>
|
||||
<label asp-for="Host" class="form-label"></label>
|
||||
<input asp-for="Host" readonly class="form-control"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="SSL"></label>
|
||||
<input asp-for="SSL" disabled type="checkbox" class="form-check-inline"/>
|
||||
<label asp-for="SSL" class="form-label"></label>
|
||||
<input asp-for="SSL" disabled type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Uri"></label>
|
||||
<label asp-for="Uri" class="form-label"></label>
|
||||
<input asp-for="Uri" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.Macaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Macaroon"></label>
|
||||
<label asp-for="Macaroon" class="form-label"></label>
|
||||
<input asp-for="Macaroon" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.AdminMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="AdminMacaroon"></label>
|
||||
<label asp-for="AdminMacaroon" class="form-label"></label>
|
||||
<input asp-for="AdminMacaroon" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.InvoiceMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="InvoiceMacaroon"></label>
|
||||
<label asp-for="InvoiceMacaroon" class="form-label"></label>
|
||||
<input asp-for="InvoiceMacaroon" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.ReadonlyMacaroon != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="ReadonlyMacaroon"></label>
|
||||
<label asp-for="ReadonlyMacaroon" class="form-label"></label>
|
||||
<input asp-for="ReadonlyMacaroon" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.GRPCSSLCipherSuites != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="GRPCSSLCipherSuites"></label>
|
||||
<label asp-for="GRPCSSLCipherSuites" class="form-label"></label>
|
||||
<input asp-for="GRPCSSLCipherSuites" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CertificateThumbprint != null)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="CertificateThumbprint"></label>
|
||||
<label asp-for="CertificateThumbprint" class="form-label"></label>
|
||||
<input asp-for="CertificateThumbprint" readonly class="form-control"/>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
<p>See QR Code information by clicking <a href="#detailsQR" data-bs-toggle="collapse">here</a></p>
|
||||
<div id="detailsQR" class="collapse">
|
||||
<div class="form-group">
|
||||
<label>QR Code data</label>
|
||||
<input asp-for="ServiceLink" readonly class="form-control" />
|
||||
<label asp-for="ServiceLink" class="form-label">QR Code data</label>
|
||||
<input asp-for="ServiceLink" class="form-control" readonly />
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -127,18 +127,16 @@
|
||||
|
||||
@if (Model.DomainToAppMapping.Any())
|
||||
{
|
||||
<div class="list-group mb-2">
|
||||
<div class="list-group-item">
|
||||
<h5 class="mb-1">
|
||||
<h5 class="mt-5 mb-0">
|
||||
Domain to app mapping
|
||||
<button type="submit" name="command" value="add-domain" class="ms-1 btn btn-secondary btn-sm ">Add domain mapping </button>
|
||||
<button type="submit" name="command" value="add-domain" class="btn btn-secondary btn-sm ms-2">Add domain mapping</button>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="list-group list-group-flush mb-2">
|
||||
@for (var index = 0; index < Model.DomainToAppMapping.Count; index++)
|
||||
{
|
||||
<div class="list-group-item p-0 ps-lg-2">
|
||||
<div class="list-group-item px-0 pt-3">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-md-12 col-lg-10 py-2 ">
|
||||
<div class="col-12 col-lg-8">
|
||||
<div class="form-group">
|
||||
<label asp-for="DomainToAppMapping[index].Domain" class="form-label"></label>
|
||||
<input asp-for="DomainToAppMapping[index].Domain" class="form-control"/>
|
||||
@@ -148,25 +146,24 @@
|
||||
<label asp-for="DomainToAppMapping[index].AppId" class="form-label"></label>
|
||||
<select asp-for="DomainToAppMapping[index].AppId"
|
||||
asp-items="@(new SelectList(ViewBag.AppsList, nameof(SelectListItem.Value), nameof(SelectListItem.Text), Model.DomainToAppMapping[index].AppId))"
|
||||
class="form-select">
|
||||
class="form-select w-auto">
|
||||
</select>
|
||||
|
||||
<span asp-validation-for="DomainToAppMapping[index].AppId" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12 col-md-12 col-lg-2 pull-right">
|
||||
<div class="col-12 col-lg-2 pull-right">
|
||||
<button type="submit" title="Remove domain mapping" name="command" value="@($"remove-domain:{index}")"
|
||||
class="d-block d-lg-none d-xl-none btn btn-danger mb-2 ms-2">
|
||||
class="d-block d-lg-none d-xl-none btn btn-danger mb-2">
|
||||
Remove Destination
|
||||
</button>
|
||||
<button type="submit" title="Remove domain mapping" name="command" value="@($"remove-domain:{index}")"
|
||||
class="d-none d-lg-block remove-domain-btn text-decoration-none h-100 align-middle btn text-danger btn-link fa fa-times rounded-0 pull-right">
|
||||
class="d-none d-lg-block btn btn-outline-danger text-decoration-none h-100 align-middle border-0 fs-4">
|
||||
<span class="fa fa-times"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -175,14 +172,13 @@
|
||||
</button>
|
||||
|
||||
<div class="mb-3">
|
||||
<div class="card collapse show collapse-on-js" id="explorer-links">
|
||||
<ul class="list-group list-group-flush">
|
||||
<div class="collapse show collapse-on-js" id="explorer-links">
|
||||
@inject BTCPayNetworkProvider BTCPayNetworkProvider
|
||||
@{
|
||||
var networks = BTCPayNetworkProvider.GetAll().ToArray();
|
||||
}
|
||||
|
||||
@for (int i = 0; i < networks.Count(); i++)
|
||||
@for (var i = 0; i < networks.Count(); i++)
|
||||
{
|
||||
var network = networks.ElementAt(i);
|
||||
var existingOverride = Model.BlockExplorerLinks?.SingleOrDefault(tuple => tuple.CryptoCode.Equals(network.CryptoCode, StringComparison.InvariantCultureIgnoreCase));
|
||||
@@ -191,29 +187,23 @@
|
||||
{
|
||||
Model.BlockExplorerLinks.Add(new PoliciesSettings.BlockExplorerOverrideItem() {CryptoCode = network.CryptoCode, Link = network.BlockExplorerLinkDefault});
|
||||
}
|
||||
<li class="list-group-item">
|
||||
<div class="form-group m-0 py-4">
|
||||
<label class="form-label">@network.DisplayName (@network.CryptoCode)</label>
|
||||
<input type="hidden" asp-for="BlockExplorerLinks[i].CryptoCode" value="@network.CryptoCode"/>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" asp-for="BlockExplorerLinks[i].Link" value="@linkValue" data-default-link="@network.BlockExplorerLinkDefault"/>
|
||||
<button type="button" class="text-decoration-none btn btn-link revert-default fa fa-refresh only-for-js" title="Revert to default"></button>
|
||||
<button type="button" class="btn btn-secondary only-for-js" title="Revert to default">
|
||||
<span class="fa fa-refresh"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
|
||||
</form>
|
||||
|
||||
@section PageHeadContent {
|
||||
<style>
|
||||
.remove-domain-btn { font-size: 1.5rem; border-radius: 0; }
|
||||
.remove-domain-btn:hover { background-color: #CCCCCC; }
|
||||
</style>
|
||||
}
|
||||
|
||||
@section PageFootContent {
|
||||
<script>
|
||||
for (let element of document.getElementsByClassName("revert-default")) {
|
||||
|
||||
@@ -19,21 +19,21 @@
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-group">
|
||||
<label asp-for="CommandLine"></label>
|
||||
<input asp-for="CommandLine" readonly class="form-control" />
|
||||
<label asp-for="CommandLine" class="form-label"></label>
|
||||
<input asp-for="CommandLine" class="form-control" readonly />
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(Model.Password))
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="Password"></label>
|
||||
<input asp-for="Password" readonly class="form-control" />
|
||||
<label asp-for="Password" class="form-label"></label>
|
||||
<input asp-for="Password" class="form-control" readonly />
|
||||
</div>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(Model.KeyFilePassword))
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="KeyFilePassword"></label>
|
||||
<input asp-for="KeyFilePassword" readonly class="form-control" />
|
||||
<label asp-for="KeyFilePassword" class="form-label"></label>
|
||||
<input asp-for="KeyFilePassword" class="form-control" readonly />
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
@if (Model.ShowChangeWarning)
|
||||
{
|
||||
<div class="alert alert-danger">
|
||||
<div class="alert alert-danger mb-4">
|
||||
If you change your configured storage provider, your current files will become inaccessible.
|
||||
</div>
|
||||
}
|
||||
@@ -21,7 +21,7 @@
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<div class="form-group">
|
||||
<label asp-for="Provider"></label>
|
||||
<label asp-for="Provider" class="form-label"></label>
|
||||
<select asp-for="Provider" asp-items="@Model.ProvidersList" class="form-select"></select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Next</button>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<div class="form-group">
|
||||
<label asp-for="ThemeCssUri"></label>
|
||||
<label asp-for="ThemeCssUri" class="form-label"></label>
|
||||
<select asp-for="ThemeCssUri" class="form-select">
|
||||
<option value="/main/themes/default.css">Default (Light)</option>
|
||||
<option value="/main/themes/default-dark.css">Default (Dark)</option>
|
||||
@@ -25,7 +25,7 @@
|
||||
<span asp-validation-for="ThemeCssUri" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group mb-5">
|
||||
<label asp-for="CustomThemeCssUri"></label>
|
||||
<label asp-for="CustomThemeCssUri" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/Theme/#1-custom-themes" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
<h4 class="mb-3">Bootstrap theme</h4>
|
||||
<div class="form-group">
|
||||
<label asp-for="BootstrapCssUri"></label>
|
||||
<label asp-for="BootstrapCssUri" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
@@ -47,7 +47,7 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="CreativeStartCssUri"></label>
|
||||
<label asp-for="CreativeStartCssUri" class="form-label"></label>
|
||||
<input asp-for="CreativeStartCssUri" class="form-control" />
|
||||
<span asp-validation-for="CreativeStartCssUri" class="text-danger"></span>
|
||||
<p class="form-text text-muted">
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="IsAdmin">Is admin</label>
|
||||
<input asp-for="IsAdmin" type="checkbox" class="btcpay-toggle ms-2"/>
|
||||
<div class="form-group form-check mb-4">
|
||||
<input asp-for="IsAdmin" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="IsAdmin" class="form-check-label">Is admin</label>
|
||||
</div>
|
||||
<button name="command" type="submit" class="btn btn-primary" value="Save">Save</button>
|
||||
</form>
|
||||
|
||||
@@ -76,10 +76,8 @@
|
||||
}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="Settings.EnableSSL" type="checkbox" data-fill="enablessl" class="form-check-input"/>
|
||||
<label asp-for="Settings.EnableSSL" class="form-check-label"></label>
|
||||
</div>
|
||||
<label asp-for="Settings.EnableSSL" class="form-label"></label>
|
||||
<input asp-for="Settings.EnableSSL" type="checkbox" data-fill="enablessl" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
<input asp-for="PasswordSet" type="hidden"/>
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
|
||||
|
||||
@@ -49,12 +49,12 @@
|
||||
.card-deck {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
||||
grid-gap: .5rem;
|
||||
grid-gap: 1.5rem;
|
||||
}
|
||||
|
||||
.card-deck .card:only-of-type {
|
||||
.card:only-of-type {
|
||||
max-width: 320px;
|
||||
margin: auto;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.js-cart-item-minus .fa,
|
||||
@@ -67,27 +67,12 @@
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.js-cart-item-count {
|
||||
-moz-appearance:textfield;
|
||||
margin: 0;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.js-cart-item-count::-webkit-inner-spin-button,
|
||||
.js-cart-item-count::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
</style>
|
||||
@if (!string.IsNullOrEmpty(Model.EmbeddedCSS))
|
||||
{
|
||||
@Safe.Raw($"<style>{Model.EmbeddedCSS}</style>");
|
||||
}
|
||||
|
||||
</head>
|
||||
|
||||
<body class="h-100">
|
||||
@RenderBody()
|
||||
</body>
|
||||
|
||||
@@ -15,89 +15,72 @@
|
||||
<h4 class="mb-3">Payment</h4>
|
||||
@if (Model.PaymentMethods.Any())
|
||||
{
|
||||
<div class="form-group">
|
||||
<div class="form-group mb-4">
|
||||
<label asp-for="DefaultPaymentMethod" class="form-label"></label>
|
||||
<select asp-for="DefaultPaymentMethod" asp-items="Model.PaymentMethods" class="form-select w-auto"></select>
|
||||
</div>
|
||||
<table class="table table-bordered table">
|
||||
<tr>
|
||||
<td colspan="3" class="text-decoration-none">
|
||||
Enable payment methods only when amount is..
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<div class="form-group mb-4">
|
||||
<div class="form-label mb-1">Enable payment methods only when amount is …</div>
|
||||
<table class="table">
|
||||
@for (var index = 0; index < Model.PaymentMethodCriteria.Count; index++)
|
||||
{
|
||||
var criteria = Model.PaymentMethodCriteria[index];
|
||||
<tr>
|
||||
<td class="border-start-0 border-end-0 pt-3">
|
||||
<td class="border-0 ps-0 align-middle">
|
||||
<input type="hidden" asp-for="PaymentMethodCriteria[index].PaymentMethod"/>
|
||||
@PaymentMethodId.Parse(criteria.PaymentMethod).ToPrettyString()
|
||||
</td>
|
||||
<td class="border-start-0 border-end-0">
|
||||
<select asp-for="PaymentMethodCriteria[index].Type"
|
||||
class="form-select"
|
||||
<td class="border-0">
|
||||
<select asp-for="PaymentMethodCriteria[index].Type" class="form-select"
|
||||
asp-items="@((PaymentMethodCriteriaViewModel.CriteriaType[]) Enum.GetValues(typeof(PaymentMethodCriteriaViewModel.CriteriaType))).Select(s => new SelectListItem(PaymentMethodCriteriaViewModel.ToString(s), s.ToString()))">
|
||||
</select>
|
||||
|
||||
</td>
|
||||
<td class="border-start-0 border-end-0">
|
||||
<td class="border-0">
|
||||
<input placeholder="6.15 USD" asp-for="PaymentMethodCriteria[index].Value" class="form-control my-0" style="max-width: 20ch;"/>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<h5 class="mb-3">General</h5>
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="RequiresRefundEmail" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="RequiresRefundEmail" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="LightningAmountInSatoshi" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="LightningAmountInSatoshi" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="LightningPrivateRouteHints" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="LightningPrivateRouteHints" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="OnChainWithLnInvoiceFallback" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="OnChainWithLnInvoiceFallback" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="LazyPaymentMethods" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="LazyPaymentMethods" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="RedirectAutomatically" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="RedirectAutomatically" class="form-check-label"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="ShowRecommendedFee" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="ShowRecommendedFee" class="form-check-label"></label>
|
||||
<p class="form-text text-muted">Fee will be shown for BTC and LTC onchain payments only.</p>
|
||||
<p class="form-text text-muted mb-0">Fee will be shown for BTC and LTC onchain payments only.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-group mt-2 mb-4">
|
||||
<label asp-for="RecommendedFeeBlockTarget" class="form-label"></label>
|
||||
<input asp-for="RecommendedFeeBlockTarget" class="form-control" style="width:8ch"/>
|
||||
<input asp-for="RecommendedFeeBlockTarget" class="form-control" style="width:8ch" min="1" />
|
||||
<span asp-validation-for="RecommendedFeeBlockTarget" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<h5 class="mt-4 mb-3">Lightning</h5>
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="LightningAmountInSatoshi" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="LightningAmountInSatoshi" class="form-check-label"></label>
|
||||
</div>
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="LightningPrivateRouteHints" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="LightningPrivateRouteHints" class="form-check-label"></label>
|
||||
</div>
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="OnChainWithLnInvoiceFallback" type="checkbox" class="form-check-input"/>
|
||||
<label asp-for="OnChainWithLnInvoiceFallback" class="form-check-label"></label>
|
||||
</div>
|
||||
|
||||
<h4 class="mt-5 mb-3">Appearance</h4>
|
||||
<div class="form-group">
|
||||
<label asp-for="DefaultLang" class="form-label"></label>
|
||||
@@ -127,7 +110,6 @@
|
||||
Bundled Themes:
|
||||
<a href="#" onclick="return setTheme(1);">Legacy</a>
|
||||
| <a href="#" onclick="return setTheme(2);">Dark</a>
|
||||
@* | <a href="#" onclick="return setTheme(0);">Default</a>*@
|
||||
</p>
|
||||
</div>
|
||||
<button name="command" type="submit" class="btn btn-primary" value="Save">Save</button>
|
||||
@@ -141,7 +123,7 @@
|
||||
function setTheme(themeChoice) {
|
||||
if (themeChoice === 1) { // reserving 0 for potential clear down the road
|
||||
$('#CustomCSS').val('/checkout/css/themes/legacy.css');
|
||||
} else if (themeChoice == 2) {
|
||||
} else if (themeChoice === 2) {
|
||||
$('#CustomCSS').val('/checkout/css/themes/dark.css');
|
||||
} else {
|
||||
$('#CustomCSS').val('');
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<h4 class="mb-4">@ViewData["PageTitle"]</h4>
|
||||
<form method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="Label"></label>
|
||||
<label asp-for="Label" class="form-label"></label>
|
||||
@if (ViewBag.HidePublicKey)
|
||||
{
|
||||
<small class="text-muted">optional</small>
|
||||
@@ -22,7 +22,7 @@
|
||||
@if (!ViewBag.HidePublicKey)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="PublicKey"></label>
|
||||
<label asp-for="PublicKey" class="form-label"></label>
|
||||
<small class="text-muted">Keep empty for server-initiated pairing</small>
|
||||
<input asp-for="PublicKey" class="form-control" />
|
||||
<span asp-validation-for="PublicKey" class="text-danger"></span>
|
||||
|
||||
@@ -89,8 +89,8 @@
|
||||
</button>
|
||||
<div id="wrong-addresses" class="collapse @(ViewContext.ModelState.IsValid ? "" : "show")">
|
||||
<div class="pb-1">
|
||||
<label asp-for="HintAddress">Help us to find the correct settings by telling us the first address of your wallet.</label>
|
||||
<div class="form-group">
|
||||
<label asp-for="HintAddress" class="form-label">Help us to find the correct settings by telling us the first address of your wallet.</label>
|
||||
<input asp-for="HintAddress" class="form-control"/>
|
||||
<span asp-validation-for="HintAddress" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<form method="post" enctype="multipart/form-data" class="my-5">
|
||||
<div class="form-group">
|
||||
<label asp-for="WalletFile"></label>
|
||||
<label asp-for="WalletFile" class="form-label"></label>
|
||||
<input asp-for="WalletFile" type="file" class="form-control" required>
|
||||
<span asp-validation-for="WalletFile" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -62,15 +62,15 @@
|
||||
<h4 class="mb-3">Public Key Information</h4>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="DerivationScheme"></label>
|
||||
<label asp-for="DerivationScheme" class="form-label"></label>
|
||||
<textarea asp-for="DerivationScheme" class="form-control store-derivation-scheme font-monospace py-2" rows="3" readonly></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="RootFingerprint"></label>
|
||||
<label asp-for="RootFingerprint" class="form-label"></label>
|
||||
<input asp-for="RootFingerprint" class="form-control" readonly />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="KeyPath"></label>
|
||||
<label asp-for="KeyPath" class="form-label"></label>
|
||||
<input asp-for="KeyPath" class="form-control" readonly />
|
||||
</div>
|
||||
<button name="command" type="submit" class="btn btn-primary" value="save" id="Continue">Continue</button>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<input asp-for="AccountKey" type="hidden" />
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="DerivationScheme">Extended public key</label>
|
||||
<label asp-for="DerivationScheme" class="form-label">Extended public key</label>
|
||||
<textarea asp-for="DerivationScheme" class="form-control store-derivation-scheme font-monospace py-2" rows="2"></textarea>
|
||||
<span asp-validation-for="DerivationScheme" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -4,23 +4,27 @@
|
||||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData.SetActivePageAndTitle(StoreNavPages.Webhooks, "Webhook Settings", Context.GetStoreData().StoreName);
|
||||
}
|
||||
|
||||
@section PageHeadContent {
|
||||
<style>
|
||||
#event-selector { display: none; }
|
||||
#Everything[data-value='false'] + #event-selector { display: block; }
|
||||
</style>
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<form method="post">
|
||||
<h4 class="mb-3">@ViewData["PageTitle"]</h4>
|
||||
<div class="form-group">
|
||||
<label asp-for="PayloadUrl">Payload URL</label>
|
||||
<label asp-for="PayloadUrl" class="form-label">Payload URL</label>
|
||||
<input asp-for="PayloadUrl" class="form-control" />
|
||||
<span asp-validation-for="PayloadUrl" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Secret"></label>
|
||||
<label asp-for="Secret" class="form-label"></label>
|
||||
<div class="input-group">
|
||||
<input asp-for="Secret" type="password" class="form-control" value="@Model.Secret" data-bs-toggle="password">
|
||||
<input asp-for="Secret" type="password" class="form-control" value="@Model.Secret" data-toggle="password">
|
||||
<span class="input-group-text">
|
||||
<i class="fa fa-eye"></i>
|
||||
</span>
|
||||
@@ -28,26 +32,23 @@
|
||||
<p class="text-muted small form-text">The endpoint receiving the payload must validate the payload by checking that the HTTP header <code>BTCPAY-SIG</code> of the callback matches the HMAC256 of the secret on the payload's body bytes.</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="AutomaticRedelivery" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="AutomaticRedelivery" class="form-check-label">Automatic redelivery</label>
|
||||
<p class="text-muted small form-text">We will try to redeliver any failed delivery after 10 seconds, 1 minutes and up to 6 times after 10 minutes</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group mb-5">
|
||||
<div class="form-check">
|
||||
<input asp-for="Active" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="Active" class="form-check-label">Is enabled</label>
|
||||
<label asp-for="AutomaticRedelivery" class="form-label">Automatic redelivery</label>
|
||||
<input asp-for="AutomaticRedelivery" type="checkbox" class="btcpay-toggle ms-2" />
|
||||
<p class="text-muted small form-text">We will try to redeliver any failed delivery after 10 seconds, 1 minute and up to 6 times after 10 minutes</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Active" class="form-label">Is enabled</label>
|
||||
<input asp-for="Active" type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
|
||||
<h4 class="mb-3">Events</h4>
|
||||
<label asp-for="Everything" class="form-label">Which events would you like to trigger this webhook?</label>
|
||||
<select asp-for="Everything" class="form-select mb-3" onchange="this.dataset.value=this.value">
|
||||
<select asp-for="Everything" class="form-select w-auto mb-3" onchange="this.dataset.value=this.value">
|
||||
<option value="true">Send me everything</option>
|
||||
<option value="false">Send specific events</option>
|
||||
</select>
|
||||
<div id="event-selector" class="collapse">
|
||||
<ul class="list-group">
|
||||
<div class="pb-3">
|
||||
@foreach (var evt in new[]
|
||||
{
|
||||
("A new invoice has been created", WebhookEventType.InvoiceCreated),
|
||||
@@ -58,22 +59,20 @@
|
||||
("An invoice became invalid", WebhookEventType.InvoiceInvalid)
|
||||
})
|
||||
{
|
||||
<li class="list-group-item ">
|
||||
<label for="@evt.Item2" class="d-flex align-items-center">
|
||||
<span class="flex-fill me-3">@evt.Item1</span>
|
||||
<div class="form-check my-1">
|
||||
<input name="Events" id="@evt.Item2" value="@evt.Item2" @(Model.Events.Contains(evt.Item2) ? "checked" : "") type="checkbox" class="form-check-input"/>
|
||||
</label>
|
||||
</li>
|
||||
<label for="@evt.Item2" class="form-check-label">@evt.Item1</label>
|
||||
</div>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.IsNew)
|
||||
{
|
||||
<button name="add" type="submit" class="btn btn-primary mt-3 mb-5" value="New" id="New">Add webhook</button>
|
||||
<button name="add" type="submit" class="btn btn-primary mb-5" value="New" id="New">Add webhook</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button name="update" type="submit" class="btn btn-primary mt-3 mb-5" value="Save" id="Save">Update webhook</button>
|
||||
<button name="update" type="submit" class="btn btn-primary mb-5" value="Save" id="Save">Update webhook</button>
|
||||
}
|
||||
</form>
|
||||
@if (!Model.IsNew && Model.Deliveries.Count > 0)
|
||||
|
||||
@@ -55,28 +55,28 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<h4 class="mb-3">@ViewData["PageTitle"]</h4>
|
||||
<div class="form-row">
|
||||
<div class="row">
|
||||
<div class="form-group col-md-8">
|
||||
<label>Price</label>
|
||||
<label class="form-label">Price</label>
|
||||
<input name="price" type="text" class="form-control"
|
||||
v-model="srvModel.price" v-on:change="inputChanges"
|
||||
v-validate="'required|decimal|min_value:0'" :class="{'is-invalid': errors.has('price') }">
|
||||
<small class="text-danger">{{ errors.first('price') }}</small>
|
||||
</div>
|
||||
<div class="form-group col-md-4" v-if="!srvModel.appIdEndpoint">
|
||||
<label> </label>
|
||||
<label class="form-label"> </label>
|
||||
<input name="currency" type="text" class="form-control"
|
||||
v-model="srvModel.currency" v-on:change="inputChanges"
|
||||
:class="{'is-invalid': errors.has('currency') }">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" v-if="!srvModel.appIdEndpoint">
|
||||
<label>Checkout Description</label>
|
||||
<label class="form-label">Checkout Description</label>
|
||||
<input name="checkoutDesc" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.checkoutDesc" v-on:change="inputChanges">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Order Id</label>
|
||||
<label class="form-label">Order Id</label>
|
||||
<input name="orderId" type="text" class="form-control" id="inputAddress" placeholder="(optional)"
|
||||
v-model="srvModel.orderId" v-on:change="inputChanges">
|
||||
</div>
|
||||
@@ -94,23 +94,24 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<div class="form-group" v-if="!srvModel.appIdEndpoint">
|
||||
<label>
|
||||
<input type="checkbox" v-model="srvModel.useModal" v-on:change="inputChanges" class="form-check-inline"/>Use Modal
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" v-model="buttonInlineTextMode" v-on:change="inputChanges" class="form-check-inline"/> Customize text in button
|
||||
</label>
|
||||
<div class="form-check" v-if="!srvModel.appIdEndpoint">
|
||||
<input id="useModal" type="checkbox" v-model="srvModel.useModal" v-on:change="inputChanges" class="form-check-input"/>
|
||||
<label for="useModal" class="form-check-label">Use Modal</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input id="buttonInlineTextMode" type="checkbox" v-model="buttonInlineTextMode" v-on:change="inputChanges" class="form-check-input"/>
|
||||
<label for="buttonInlineTextMode" class="form-check-label">Customize text in button</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" v-show="buttonInlineTextMode">
|
||||
<label>Pay Button Text</label>
|
||||
<label class="form-label">Pay Button Text</label>
|
||||
<input name="payButtonText" type="text" class="form-control" id="inputAddress"
|
||||
v-model="srvModel.payButtonText" v-on:change="inputChanges">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Pay Button Image Url</label>
|
||||
<label class="form-label">Pay Button Image Url</label>
|
||||
<input name="payButtonImageUrl" type="text" class="form-control" id="inputAddress"
|
||||
v-model="srvModel.payButtonImageUrl" v-on:change="inputChanges"
|
||||
v-validate="{ required: this.imageUrlRequired, url: {require_tld:false} }"
|
||||
@@ -118,7 +119,7 @@
|
||||
<small class="text-danger">{{ errors.first('payButtonImageUrl') }}</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Image Size</label>
|
||||
<label class="form-label">Image Size</label>
|
||||
<div style="vertical-align:top; font-size:12px; display:flex;">
|
||||
<button class="btn text-nowrap" style="width:146px;height:40px;margin-right:40px;"
|
||||
v-on:click="inputChanges($event, 0)" v-bind:class="{'btn-primary': (srvModel.buttonSize == 0) }">
|
||||
@@ -135,44 +136,44 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Button Type</label>
|
||||
<div>
|
||||
<input type="radio" name="button-type" id="btn-fixed" value="0" v-model="srvModel.buttonType" v-on:change="inputChanges" checked/>
|
||||
<label for="btn-fixed">Fixed amount</label>
|
||||
<label class="form-label">Button Type</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="button-type" id="btn-fixed" value="0" v-model="srvModel.buttonType" v-on:change="inputChanges" checked/>
|
||||
<label for="btn-fixed" class="form-check-label">Fixed amount</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="radio" name="button-type" id="btn-custom" value="1" v-model="srvModel.buttonType" v-on:change="inputChanges"/>
|
||||
<label for="btn-custom">Custom amount</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="button-type" id="btn-custom" value="1" v-model="srvModel.buttonType" v-on:change="inputChanges"/>
|
||||
<label for="btn-custom" class="form-check-label">Custom amount</label>
|
||||
</div>
|
||||
<div>
|
||||
<input type="radio" name="button-type" id="btn-slider" value="2" v-model="srvModel.buttonType" v-on:change="inputChanges"/>
|
||||
<label for="btn-slider">Slider</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="button-type" id="btn-slider" value="2" v-model="srvModel.buttonType" v-on:change="inputChanges"/>
|
||||
<label for="btn-slider" class="form-check-label">Slider</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row" v-if="srvModel.buttonType == 1 ||srvModel.buttonType == 2">
|
||||
<div class="row" v-if="srvModel.buttonType == 1 ||srvModel.buttonType == 2">
|
||||
<div class="form-group col-md-4">
|
||||
<label>Min</label>
|
||||
<label class="form-label">Min</label>
|
||||
<input name="min" type="text" class="form-control"
|
||||
v-model="srvModel.min" v-on:change="inputChanges"
|
||||
v-validate="'required|decimal|min_value:0'" :class="{'is-invalid': errors.has('min') }">
|
||||
<small class="text-danger">{{ errors.first('min') }}</small>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label>Max</label>
|
||||
<label class="form-label">Max</label>
|
||||
<input name="max" type="text" class="form-control"
|
||||
v-model="srvModel.max" v-on:change="inputChanges"
|
||||
v-validate="'required|decimal'" :class="{'is-invalid': errors.has('max') }">
|
||||
<small class="text-danger">{{ errors.first('max') }}</small>
|
||||
</div>
|
||||
<div class="form-group col-md-4">
|
||||
<label>Step</label>
|
||||
<label class="form-label">Step</label>
|
||||
<input name="step" type="text" class="form-control"
|
||||
v-model="srvModel.step" v-on:change="inputChanges"
|
||||
v-validate="'required'" :class="{'is-invalid': errors.has('step') }">
|
||||
<small class="text-danger">{{ errors.first('step') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" v-if="srvModel.buttonType == 1">
|
||||
<template v-if="srvModel.buttonType == 1">
|
||||
<div class="form-check">
|
||||
<input name="simpleInput"
|
||||
id="simpleInput"
|
||||
@@ -195,7 +196,7 @@
|
||||
<label class="form-check-label" for="fitButtonInline">Fit button inline</label>
|
||||
<small class="text-danger">{{ errors.first('fitButtonInline') }}</small>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<h5 class="mb-3">Preview</h5>
|
||||
@@ -214,14 +215,14 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<div class="form-group">
|
||||
<label>Server IPN</label>
|
||||
<label class="form-label">Server IPN</label>
|
||||
<input name="serverIpn" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.serverIpn" v-on:change="inputChanges"
|
||||
v-validate="'url'" :class="{'is-invalid': errors.has('serverIpn') }">
|
||||
<small class="text-danger">{{ errors.first('serverIpn') }}</small>
|
||||
</div>
|
||||
<div class="form-group" v-if="!srvModel.appIdEndpoint">
|
||||
<label>Send Email Notifications to</label>
|
||||
<label class="form-label">Send Email Notifications to</label>
|
||||
<input name="notifyEmail" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.notifyEmail" v-on:change="inputChanges"
|
||||
v-validate="'email'" :class="{'is-invalid': errors.has('notifyEmail') }">
|
||||
@@ -229,7 +230,7 @@
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Browser Redirect</label>
|
||||
<label class="form-label">Browser Redirect</label>
|
||||
<input name="browserRedirect" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.browserRedirect" v-on:change="inputChanges"
|
||||
v-validate="'url'" :class="{'is-invalid': errors.has('browserRedirect') }">
|
||||
@@ -250,7 +251,7 @@
|
||||
<div class="row" v-if="!srvModel.appIdEndpoint">
|
||||
<div class="col-lg-7">
|
||||
<div class="form-group">
|
||||
<label>Checkout Additional Query String</label>
|
||||
<label class="form-label">Checkout Additional Query String</label>
|
||||
<input name="checkoutQueryString" type="text" class="form-control" placeholder="(optional)"
|
||||
v-model="srvModel.checkoutQueryString" v-on:change="inputChanges"
|
||||
:class="{'is-invalid': errors.has('checkoutQueryString') }">
|
||||
@@ -259,15 +260,15 @@
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<br />
|
||||
This parameter allows you to specify additional query string parameters that should be appended to the checkout page once the invoice is created. For example, <kbd>lang=da-DK</kbd> would load the checkout page in Danish by default.
|
||||
|
||||
This parameter allows you to specify additional query string parameters that should be appended to the checkout page once the invoice is created.
|
||||
For example, <code>lang=da-DK</code> would load the checkout page in Danish by default.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<div class="form-group">
|
||||
<label>Use App as endpoint</label>
|
||||
<label class="form-label">Use App as endpoint</label>
|
||||
<select v-model="srvModel.appIdEndpoint" v-on:change="inputChanges" class="form-select">
|
||||
<option value="">Use default pay button endpoint</option>
|
||||
<option v-for="app in srvModel.apps" v-bind:value="app.id" >{{app.appName}} ({{app.appType}})</option>
|
||||
|
||||
@@ -19,17 +19,17 @@
|
||||
<h5>Scripting</h5>
|
||||
<p>Rate script allows you to express precisely how you want to calculate rates for currency pairs.</p>
|
||||
<p>We are retrieving the rate of each exchange either directly, or via <a href="https://www.coingecko.com/" target="_blank">CoinGecko (free)</a>.</p>
|
||||
|
||||
<div class="accordion" id="accordion-info">
|
||||
<div class="card">
|
||||
<div class="card-header" id="direct-header">
|
||||
<h2 class="mb-0">
|
||||
<button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#direct-content" aria-expanded="true">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="direct-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#direct-content" aria-expanded="false" aria-controls="direct-content">
|
||||
Direct integration
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="collapse" id="direct-content">
|
||||
<div class="card-body text-muted overflow-auto">
|
||||
<div id="direct-content" class="accordion-collapse collapse" aria-labelledby="direct-header" data-bs-parent="#accordion-info">
|
||||
<div class="accordion-body">
|
||||
@foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Direct))
|
||||
{
|
||||
<a href="@exchange.Url">@exchange.Id</a><span> </span>
|
||||
@@ -37,16 +37,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-header" id="coingecko-header">
|
||||
<h2 class="mb-0">
|
||||
<button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#coingecko-content" aria-expanded="true">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="coingecko-header">
|
||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#coingecko-content" aria-expanded="false" aria-controls="coingecko-content">
|
||||
Coingecko integration
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
</div>
|
||||
<div id="coingecko-content" class="collapse">
|
||||
<div class="card-body text-muted overflow-auto">
|
||||
<div id="coingecko-content" class="accordion-collapse collapse" aria-labelledby="coingecko-header" data-bs-parent="#accordion-info">
|
||||
<div class="accordion-body">
|
||||
@foreach (var exchange in Model.AvailableExchanges.Where(a => a.Source == BTCPayServer.Rating.RateSource.Coingecko))
|
||||
{
|
||||
<a href="@exchange.Url">@exchange.Id</a><span> </span>
|
||||
@@ -135,24 +134,26 @@
|
||||
It is worth noting that the inverses of those pairs are automatically supported as well.<br />
|
||||
It means that the rule <code>USD_DOGE = 1 / DOGE_USD</code> implicitely exists.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="Script"></label> <a href="#help" data-bs-toggle="collapse">
|
||||
<label asp-for="Script" class="form-label"></label>
|
||||
<a href="#help" data-bs-toggle="collapse">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
<textarea asp-for="Script" rows="20" cols="80" class="form-control"></textarea>
|
||||
<span asp-validation-for="Script" class="text-danger"></span>
|
||||
<a href="#" onclick="$('#Script').val(defaultScript); return false;">Set to default settings</a>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-link" value="scripting-off" name="command">Turn off advanced rate rule scripting</button>
|
||||
<p>
|
||||
<button type="button" class="btn btn-link text-secondary px-0" onclick="document.getElementById('Script').value=defaultScript;return false;">Set to default settings</button>
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<button type="submit" class="btn btn-secondary" value="scripting-off" name="command">Turn off advanced rate rule scripting</button>
|
||||
</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="PreferredExchange"></label>
|
||||
<label asp-for="PreferredExchange" class="form-label"></label>
|
||||
<select asp-for="PreferredExchange" asp-items="Model.Exchanges" class="form-select"></select>
|
||||
<span asp-validation-for="PreferredExchange" class="text-danger"></span>
|
||||
<p id="PreferredExchangeHelpBlock" class="form-text text-muted">
|
||||
@@ -160,11 +161,11 @@
|
||||
</p>
|
||||
</div>
|
||||
<p>
|
||||
<button type="submit" class="btn btn-link p-0" value="scripting-on" name="command">Turn on advanced rate rule scripting</button>
|
||||
<button type="submit" class="btn btn-secondary" value="scripting-on" name="command">Turn on advanced rate rule scripting</button>
|
||||
</p>
|
||||
}
|
||||
<div class="form-group">
|
||||
<label asp-for="Spread"></label>
|
||||
<label asp-for="Spread" class="form-label"></label>
|
||||
<div class="input-group">
|
||||
<input asp-for="Spread" class="form-control" />
|
||||
<span class="input-group-text">%</span>
|
||||
@@ -172,17 +173,17 @@
|
||||
<span asp-validation-for="Spread" class="text-danger"></span>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-3">Testing</h4>
|
||||
<p>Enter currency pairs which you want to test against your rule (eg. <code>DOGE_USD,DOGE_CAD,BTC_CAD,BTC_USD</code>)</p>
|
||||
<div class="form-group">
|
||||
<input placeholder="BTC_USD, BTC_CAD" asp-for="ScriptTest" class="form-control" />
|
||||
<label asp-for="ScriptTest" class="form-label">Enter currency pairs which you want to test against your rule (eg. <code>DOGE_USD,DOGE_CAD,BTC_CAD,BTC_USD</code>)</label>
|
||||
<input asp-for="ScriptTest" class="form-control" placeholder="BTC_USD, BTC_CAD" />
|
||||
<span asp-validation-for="ScriptTest" class="text-danger"></span>
|
||||
</div>
|
||||
<button name="command" value="Test" type="submit" class="btn btn-primary" title="Test">Test</button>
|
||||
|
||||
<h4 class="mt-5 mb-3">Default currency pairs</h4>
|
||||
<p>You can query those pairs via REST by querying <a asp-controller="Rate" asp-action="GetRates2" asp-route-storeId="@Model.StoreId" target="_blank">this link</a> without the need to specify currencyPairs.</p>
|
||||
<div class="form-group">
|
||||
<input placeholder="BTC_USD, BTC_CAD" asp-for="DefaultCurrencyPairs" class="form-control" />
|
||||
<label asp-for="DefaultCurrencyPairs" class="form-label">You can query those pairs via REST by querying <a asp-controller="Rate" asp-action="GetRates2" asp-route-storeId="@Model.StoreId" target="_blank">this link</a> without the need to specify currencyPairs.</label>
|
||||
<input asp-for="DefaultCurrencyPairs" class="form-control" placeholder="BTC_USD, BTC_CAD" />
|
||||
<span asp-validation-for="DefaultCurrencyPairs" class="text-danger"></span>
|
||||
</div>
|
||||
<button name="command" type="submit" class="btn btn-primary" value="Save">Save</button>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
<div class="col-md-4">
|
||||
<form asp-action="Pair" method="post">
|
||||
<div class="form-group">
|
||||
<label asp-for="StoreId"></label>
|
||||
<label asp-for="StoreId" class="form-label"></label>
|
||||
<select asp-for="StoreId" asp-items="@(new SelectList(Model.Stores,"Id","Name"))" class="form-select"></select>
|
||||
<span asp-validation-for="StoreId" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
@@ -60,39 +60,14 @@
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
#CustomSetup ul li code, #CustomSetup ul li pre {
|
||||
color: var(--btcpay-code-color);
|
||||
}
|
||||
#CustomSetup ul li > code, #CustomSetup ul pre {
|
||||
#CustomSetup ul li code,
|
||||
#CustomSetup pre {
|
||||
display: block;
|
||||
color: var(--btcpay-code-text);
|
||||
background: var(--btcpay-code-bg);
|
||||
background: var(--btcpay-bg-tile);
|
||||
margin: .25rem 0;
|
||||
padding: .75rem 1rem;
|
||||
border-radius: .25rem;
|
||||
}
|
||||
#CustomSetup > ul > li {
|
||||
padding: 0;
|
||||
}
|
||||
#CustomSetup > ul > li + li {
|
||||
border-top: 1px solid var(--btcpay-border-color-medium);
|
||||
}
|
||||
a[data-bs-toggle="collapse"] {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
color: inherit;
|
||||
padding: 1rem 0;
|
||||
text-decoration: none
|
||||
}
|
||||
a[data-bs-toggle="collapse"] .icon {
|
||||
transform: rotate(90deg);
|
||||
transition: transform 200ms;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
a[data-bs-toggle="collapse"][aria-expanded="true"] .icon {
|
||||
transform: rotate(270deg);
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
}
|
||||
@@ -113,21 +88,24 @@
|
||||
}
|
||||
</div>
|
||||
<div id="CustomSetup" class="text-start">
|
||||
<label asp-for="ConnectionString" class="mt-4">Connection configuration for your custom Lightning node:</label>
|
||||
<label asp-for="ConnectionString" class="form-label mt-4">Connection configuration for your custom Lightning node:</label>
|
||||
<div class="d-sm-flex">
|
||||
<input asp-for="ConnectionString" class="form-control mb-2 me-2" placeholder="type=…;server=…;" value="@(Model.LightningNodeType == LightningNodeType.Internal ? "" : Model.ConnectionString)"/>
|
||||
<button id="test" name="command" type="submit" value="test" class="btn btn-secondary text-nowrap mb-2">Test connection</button>
|
||||
</div>
|
||||
<span asp-validation-for="ConnectionString" class="text-danger"></span>
|
||||
<p class="mt-4 mb-2">BTCPay Server currently supports:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a data-bs-toggle="collapse" href="#c-lightning-notes" role="button" aria-expanded="false" aria-controls="c-lightning-notes">
|
||||
<div class="accordion" id="CustomNodeSupport">
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="CustomNodeCLightningHeader">
|
||||
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#CustomNodeCLightningContent" aria-controls="CustomNodeCLightningContent" aria-expanded="false">
|
||||
<span><strong>c-lightning</strong> via TCP or unix domain socket connection</span>
|
||||
<vc:icon symbol="caret-right"/>
|
||||
</a>
|
||||
<div id="c-lightning-notes" class="collapse">
|
||||
<ul class="pb-3">
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="CustomNodeCLightningContent" class="accordion-collapse collapse" aria-labelledby="CustomNodeCLightningHeader" data-bs-parent="#CustomNodeSupport">
|
||||
<div class="accordion-body">
|
||||
<ul class="mb-0">
|
||||
<li>
|
||||
<code><b>type=</b>clightning;<b>server=</b>unix://root/.lightning/lightning-rpc</code>
|
||||
</li>
|
||||
@@ -136,39 +114,51 @@
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a data-bs-toggle="collapse" href="#charge-notes" role="button" aria-expanded="false" aria-controls="charge-notes">
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="CustomNodeChargeHeader">
|
||||
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#CustomNodeChargeContent" aria-controls="CustomNodeChargeContent" aria-expanded="false">
|
||||
<span><strong>Lightning Charge</strong> via HTTPS</span>
|
||||
<vc:icon symbol="caret-right"/>
|
||||
</a>
|
||||
<div id="charge-notes" class="collapse">
|
||||
<ul class="pb-3">
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="CustomNodeChargeContent" class="accordion-collapse collapse" aria-labelledby="CustomNodeChargeHeader" data-bs-parent="#CustomNodeSupport">
|
||||
<div class="accordion-body">
|
||||
<ul class="mb-0">
|
||||
<li>
|
||||
<code><b>type=</b>charge;<b>server=</b>https://charge:8080/;<b>api-token=</b>myapitoken...</code>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a data-bs-toggle="collapse" href="#eclair-notes" role="button" aria-expanded="false" aria-controls="eclair-notes">
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="CustomNodeEclairHeader">
|
||||
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#CustomNodeEclairContent" aria-controls="CustomNodeEclairContent" aria-expanded="false">
|
||||
<span><strong>Eclair</strong> via HTTPS</span>
|
||||
<vc:icon symbol="caret-right"/>
|
||||
</a>
|
||||
<div id="eclair-notes" class="collapse">
|
||||
<ul class="pb-3">
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="CustomNodeEclairContent" class="accordion-collapse collapse" aria-labelledby="CustomNodeEclairHeader" data-bs-parent="#CustomNodeSupport">
|
||||
<div class="accordion-body">
|
||||
<ul class="mb-0">
|
||||
<li>
|
||||
<code><b>type=</b>eclair;<b>server=</b>https://eclair:8080/;<b>password=</b>eclairpassword...</code>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<a data-bs-toggle="collapse" href="#lnd-notes" role="button" aria-expanded="false" aria-controls="lnd-notes">
|
||||
</div>
|
||||
</div>
|
||||
<div class="accordion-item">
|
||||
<h2 class="accordion-header" id="CustomNodeLNDHeader">
|
||||
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#CustomNodeLNDContent" aria-controls="CustomNodeLNDContent" aria-expanded="false">
|
||||
<span><strong>LND</strong> via the REST proxy</span>
|
||||
<vc:icon symbol="caret-right"/>
|
||||
</a>
|
||||
<div id="lnd-notes" class="collapse">
|
||||
<vc:icon symbol="caret-down"/>
|
||||
</button>
|
||||
</h2>
|
||||
<div id="CustomNodeLNDContent" class="accordion-collapse collapse" aria-labelledby="CustomNodeLNDHeader" data-bs-parent="#CustomNodeSupport">
|
||||
<div class="accordion-body">
|
||||
<ul class="pb-3">
|
||||
<li>
|
||||
<code><b>type=</b>lnd-rest;<b>server=</b>https://mylnd:8080/;<b>macaroon=</b>abef263adfe...</code>
|
||||
@@ -190,8 +180,9 @@
|
||||
<pre class="mb-4">openssl x509 -noout -fingerprint -sha256 -in /root/.lnd/tls.cert | sed -e 's/.*=//;s/://g'</pre>
|
||||
<p class="mb-0">If your LND REST server is using HTTP or HTTPS with an untrusted certificate, you can set <code>allowinsecure=true</code> as a fallback.</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-start mt-4">
|
||||
<button id="save" name="command" type="submit" value="save" class="btn btn-primary me-2">Save</button>
|
||||
|
||||
@@ -160,32 +160,29 @@
|
||||
<form method="post">
|
||||
<h4 class="mb-3">General</h4>
|
||||
<div class="form-group">
|
||||
<label asp-for="Id"></label>
|
||||
<label asp-for="Id" class="form-label"></label>
|
||||
<input asp-for="Id" readonly class="form-control" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="StoreName"></label>
|
||||
<label asp-for="StoreName" class="form-label"></label>
|
||||
<input asp-for="StoreName" class="form-control" />
|
||||
<span asp-validation-for="StoreName" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="StoreWebsite"></label>
|
||||
<label asp-for="StoreWebsite" class="form-label"></label>
|
||||
<input asp-for="StoreWebsite" class="form-control" />
|
||||
<span asp-validation-for="StoreWebsite" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<h4 class="mt-5 mb-3">Payment</h4>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<div class="form-group form-check">
|
||||
<input asp-for="AnyoneCanCreateInvoice" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="AnyoneCanCreateInvoice" class="form-check-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#allow-anyone-to-create-invoice" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<div class="form-group form-check">
|
||||
<input asp-for="PayJoinEnabled" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="PayJoinEnabled" class="form-check-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/Payjoin/" target="_blank">
|
||||
@@ -193,9 +190,8 @@
|
||||
</a>
|
||||
<span asp-validation-for="PayJoinEnabled" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="NetworkFeeMode"></label>
|
||||
<label asp-for="NetworkFeeMode" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#add-network-fee-to-invoice-vary-with-mining-fees" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
@@ -206,12 +202,10 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="mb-2">
|
||||
<label asp-for="InvoiceExpiration" class="d-inline"></label>
|
||||
<label asp-for="InvoiceExpiration" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#invoice-expires-if-the-full-amount-has-not-been-paid-after-minutes" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input asp-for="InvoiceExpiration" class="form-control" style="max-width:10ch;" />
|
||||
<span class="input-group-text">minutes</span>
|
||||
@@ -219,12 +213,10 @@
|
||||
<span asp-validation-for="InvoiceExpiration" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="mb-2">
|
||||
<label asp-for="MonitoringExpiration" class="d-inline"></label>
|
||||
<label asp-for="MonitoringExpiration" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input asp-for="MonitoringExpiration" class="form-control" style="max-width:10ch;" />
|
||||
<span class="input-group-text">minutes</span>
|
||||
@@ -232,12 +224,10 @@
|
||||
<span asp-validation-for="MonitoringExpiration" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="mb-2">
|
||||
<label asp-for="PaymentTolerance" class="d-inline"></label>
|
||||
<label asp-for="PaymentTolerance" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-paid-even-if-the-paid-amount-is-less-than-expected" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<input asp-for="PaymentTolerance" class="form-control" style="max-width:10ch;" />
|
||||
<span class="input-group-text">percent</span>
|
||||
@@ -245,18 +235,11 @@
|
||||
<span asp-validation-for="PaymentTolerance" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="mb-2">
|
||||
<label asp-for="SpeedPolicy" class="d-inline"></label>
|
||||
<label asp-for="SpeedPolicy" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/FAQ/FAQ-Stores/#consider-the-invoice-confirmed-when-the-payment-transaction" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</div>
|
||||
<script>
|
||||
function handleSpeedPolicyChange(select) {
|
||||
document.getElementById('unconfirmed-warning').hidden = select.value !== '0';
|
||||
}
|
||||
</script>
|
||||
<select asp-for="SpeedPolicy" class="form-select w-auto" onchange="handleSpeedPolicyChange(this)">
|
||||
<select asp-for="SpeedPolicy" class="form-select w-auto" onchange="document.getElementById('unconfirmed-warning').hidden = this.value !== '0';">
|
||||
<option value="0">Is unconfirmed</option>
|
||||
<option value="1">Has at least 1 confirmation</option>
|
||||
<option value="3">Has at least 2 confirmations</option>
|
||||
@@ -268,7 +251,7 @@
|
||||
<span asp-validation-for="SpeedPolicy" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label asp-for="LightningDescriptionTemplate"></label>
|
||||
<label asp-for="LightningDescriptionTemplate" class="form-label"></label>
|
||||
<input asp-for="LightningDescriptionTemplate" class="form-control" />
|
||||
<span asp-validation-for="LightningDescriptionTemplate" class="text-danger"></span>
|
||||
<p class="form-text text-muted">
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
@if (isImport) // hide account option when creating a wallet
|
||||
{
|
||||
<div class="form-group mb-5">
|
||||
<label asp-for="AccountNumber">Account</label>
|
||||
<label asp-for="AccountNumber" class="form-label">Account</label>
|
||||
<select asp-for="AccountNumber" class="form-select w-auto">
|
||||
@for (var i = 0; i < 20; i++)
|
||||
{
|
||||
@@ -77,12 +77,12 @@
|
||||
</div>
|
||||
}
|
||||
<div class="form-group">
|
||||
<label asp-for="Passphrase">Optional passphrase (BIP39)</label>
|
||||
<label asp-for="Passphrase" class="form-label">Optional passphrase (BIP39)</label>
|
||||
<input type="text" asp-for="Passphrase" class="form-control" autocomplete="off"/>
|
||||
<span asp-validation-for="Passphrase" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="passphrase_conf">Confirm passphrase</label>
|
||||
<label for="passphrase_conf" class="form-label">Confirm passphrase</label>
|
||||
<input type="text" name="passphrase_conf" id="passphrase_conf" class="form-control"/>
|
||||
<span class="text-danger field-validation-valid" id="passphrase_conf_validation"></span>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
v-bind:class="{ 'list-group-item-secondary': item.selected }"
|
||||
v-on:click="toggleItem($event, item, !item.selected)">
|
||||
<div class="d-flex justify-content-between align-items-center w-100">
|
||||
<input class="me-2"
|
||||
<input class="me-2 form-check-input flex-shrink-0"
|
||||
type="checkbox"
|
||||
v-bind:id="item.outpoint"
|
||||
v-bind:value="item.outpoint"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<input asp-for="Name" class="form-control" />
|
||||
<span asp-validation-for="Name" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="row">
|
||||
<div class="form-group col-8">
|
||||
<label asp-for="Amount" class="form-label"></label>
|
||||
<input asp-for="Amount" class="form-control" />
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<thead class="thead-inverse">
|
||||
<tr>
|
||||
<th>
|
||||
<input id="@state.State-selectAllCheckbox" type="checkbox" onclick="selectAll(this, '@state.State.ToString()'); return true;"/>
|
||||
<input id="@state.State-selectAllCheckbox" type="checkbox" class="form-check-input" onclick="selectAll(this, '@state.State.ToString()'); return true;"/>
|
||||
</th>
|
||||
<th style="min-width: 90px;" class="col-md-auto">
|
||||
Date
|
||||
@@ -103,7 +103,7 @@
|
||||
<tr class="payout">
|
||||
<td>
|
||||
<span>
|
||||
<input type="checkbox" class="selection-item-@state.State.ToString()" asp-for="PayoutStateSets[index].Payouts[i].Selected"/>
|
||||
<input type="checkbox" class="selection-item-@state.State.ToString() form-check-input" asp-for="PayoutStateSets[index].Payouts[i].Selected"/>
|
||||
<input type="hidden" asp-for="PayoutStateSets[index].Payouts[i].PayoutId"/>
|
||||
</span>
|
||||
</td>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
<label asp-for="UploadedPSBTFile" class="form-label"></label>
|
||||
<input asp-for="UploadedPSBTFile" type="file" class="form-control">
|
||||
</div>
|
||||
<button type="button" id="scanqrcode" class="ms-2 btn btn-secondary only-for-js" data-bs-toggle="modal" data-bs-target="#scanModal" title="Scan with camera">
|
||||
<button type="button" id="scanqrcode" class="btn btn-secondary only-for-js" data-bs-toggle="modal" data-bs-target="#scanModal" title="Scan with camera">
|
||||
<i class="fa fa-camera"></i>
|
||||
</button>
|
||||
<button type="submit" name="command" value="decode" class="btn btn-primary" id="Decode">Decode</button>
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
@if (Model.SupportRBF)
|
||||
{
|
||||
<div class="form-group">
|
||||
<label asp-for="AllowFeeBump"></label>
|
||||
<label asp-for="AllowFeeBump" class="form-label"></label>
|
||||
<a href="https://docs.btcpayserver.org/Wallet/#rbf-replace-by-fee" target="_blank">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<input asp-for="@Model.AccountKeys[i].AccountKey" class="form-control" readonly/>
|
||||
<span asp-validation-for="@Model.AccountKeys[i].AccountKey" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div class="row">
|
||||
<div class="form-group col-auto">
|
||||
<label asp-for="@Model.AccountKeys[i].MasterFingerprint" class="form-label"></label>
|
||||
<input asp-for="@Model.AccountKeys[i].MasterFingerprint" class="form-control" style="max-width:16ch;"/>
|
||||
@@ -57,7 +57,7 @@
|
||||
</div>
|
||||
@if (Model.IsMultiSig)
|
||||
{
|
||||
<div class="form-check form-check-inline">
|
||||
<div class="form-check">
|
||||
<input asp-for="SelectedSigningKey" class="form-check-input" type="radio" value="@Model.AccountKeys[i].AccountKey"/>
|
||||
<label asp-for="SelectedSigningKey" class="form-check-label"></label>
|
||||
</div>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<symbol id="back" viewBox="0 0 21 18"><path d="M7.63754 1.10861L0.578503 8.16764C0.119666 8.62648 0.119666 9.37121 0.578503 9.83122L7.63754 16.8902C8.09637 17.3491 8.8411 17.3491 9.30111 16.8902C9.53053 16.6608 9.64583 16.3608 9.64583 16.0585C9.64583 15.7561 9.53053 15.4561 9.30111 15.2267L4.25038 10.1759H19.0579C19.7085 10.1759 20.2344 9.65004 20.2344 8.99943C20.2344 8.34882 19.7085 7.82293 19.0579 7.82293L4.25038 7.82293L9.30111 2.77219C9.53053 2.54277 9.64583 2.24276 9.64583 1.9404C9.64583 1.63804 9.53053 1.33803 9.30111 1.10861C8.84228 0.649771 8.09755 0.649771 7.63754 1.10861Z" fill="currentColor" /></symbol>
|
||||
<symbol id="close" viewBox="0 0 16 16"><path d="M9.38526 8.08753L15.5498 1.85558C15.9653 1.43545 15.9653 0.805252 15.5498 0.385121C15.1342 -0.0350102 14.5108 -0.0350102 14.0952 0.385121L7.93072 6.61707L1.76623 0.315098C1.35065 -0.105033 0.727273 -0.105033 0.311688 0.315098C-0.103896 0.73523 -0.103896 1.36543 0.311688 1.78556L6.47618 8.0175L0.311688 14.2495C-0.103896 14.6696 -0.103896 15.2998 0.311688 15.7199C0.519481 15.93 0.796499 16 1.07355 16C1.35061 16 1.62769 15.93 1.83548 15.7199L7.99997 9.48797L14.1645 15.7199C14.3722 15.93 14.6493 16 14.9264 16C15.2034 16 15.4805 15.93 15.6883 15.7199C16.1039 15.2998 16.1039 14.6696 15.6883 14.2495L9.38526 8.08753Z" fill="currentColor"/></symbol>
|
||||
<symbol id="caret-right" viewBox="0 0 24 24"><path d="M9.5 17L14.5 12L9.5 7" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/></symbol>
|
||||
<symbol id="caret-down" viewBox="0 0 24 24"><path d="M7 9.5L12 14.5L17 9.5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/></symbol>
|
||||
<symbol id="new-wallet" viewBox="0 0 32 32"><path d="M16 10V22" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M22 16H10" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><circle fill="none" cx="16" cy="16" r="15" stroke="currentColor" stroke-width="2"/></symbol>
|
||||
<symbol id="existing-wallet" viewBox="0 0 32 32"><g clip-path="url(#clip0)"><path d="M26.5362 7.08746H25.9614V3.25512C25.9614 2.10542 25.3865 1.14734 24.6201 0.572488C23.8536 -0.00236247 22.7039 -0.193979 21.7458 -0.00236246L4.11707 5.36291C2.00929 5.93776 0.667969 7.85392 0.667969 9.96171V12.0695V12.836V27.3988C0.667969 30.0815 2.77575 32.1893 5.45839 32.1893H26.5362C29.2189 32.1893 31.3267 30.0815 31.3267 27.3988V12.0695C31.3267 9.38686 29.2189 7.08746 26.5362 7.08746ZM4.69192 7.08746L22.129 1.91381C22.5123 1.72219 23.0871 1.91381 23.4704 2.10542C23.8536 2.29704 24.0452 2.87189 24.0452 3.25512V7.08746H5.45839C4.88354 7.08746 4.5003 7.27908 3.92545 7.47069C4.11707 7.27908 4.5003 7.08746 4.69192 7.08746ZM29.4105 27.2072C29.4105 28.7402 28.0692 30.0815 26.5362 30.0815H5.45839C3.92545 30.0815 2.58414 28.7402 2.58414 27.2072V12.836V11.8779C2.58414 10.3449 3.92545 9.00362 5.45839 9.00362H26.5362C28.0692 9.00362 29.4105 10.3449 29.4105 11.8779V27.2072Z" fill="currentColor"/><path d="M25.9591 21.6487C27.0174 21.6487 27.8753 20.7908 27.8753 19.7326C27.8753 18.6743 27.0174 17.8164 25.9591 17.8164C24.9009 17.8164 24.043 18.6743 24.043 19.7326C24.043 20.7908 24.9009 21.6487 25.9591 21.6487Z" fill="currentColor"/></g><defs><clipPath id="clip0"><rect width="32" height="32" fill="white"/></clipPath></defs></symbol>
|
||||
<symbol id="hot-wallet" viewBox="0 0 32 32"><g clip-path="url(#clip0)"><path d="M26.5362 7.08746H25.9614V3.25512C25.9614 2.10542 25.3865 1.14734 24.6201 0.572488C23.8536 -0.00236247 22.7039 -0.193979 21.7458 -0.00236246L4.11707 5.36291C2.00929 5.93776 0.667969 7.85392 0.667969 9.96171V12.0695V12.836V27.3988C0.667969 30.0815 2.77575 32.1893 5.45839 32.1893H26.5362C29.2189 32.1893 31.3267 30.0815 31.3267 27.3988V12.0695C31.3267 9.38686 29.2189 7.08746 26.5362 7.08746ZM4.69192 7.08746L22.129 1.91381C22.5123 1.72219 23.0871 1.91381 23.4704 2.10542C23.8536 2.29704 24.0452 2.87189 24.0452 3.25512V7.08746H5.45839C4.88354 7.08746 4.5003 7.27908 3.92545 7.47069C4.11707 7.27908 4.5003 7.08746 4.69192 7.08746ZM29.4105 27.2072C29.4105 28.7402 28.0692 30.0815 26.5362 30.0815H5.45839C3.92545 30.0815 2.58414 28.7402 2.58414 27.2072V12.836V11.8779C2.58414 10.3449 3.92545 9.00362 5.45839 9.00362H26.5362C28.0692 9.00362 29.4105 10.3449 29.4105 11.8779V27.2072Z" fill="currentColor"/><path d="M25.9591 21.6487C27.0174 21.6487 27.8753 20.7908 27.8753 19.7326C27.8753 18.6743 27.0174 17.8164 25.9591 17.8164C24.9009 17.8164 24.043 18.6743 24.043 19.7326C24.043 20.7908 24.9009 21.6487 25.9591 21.6487Z" fill="currentColor"/></g><defs><clipPath id="clip0"><rect width="32" height="32" fill="white"/></clipPath></defs></symbol>
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
1267
BTCPayServer/wwwroot/main/bootstrap/bootstrap.css
vendored
1267
BTCPayServer/wwwroot/main/bootstrap/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
@@ -67,6 +67,13 @@
|
||||
content: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNyIgaGVpZ2h0PSIxMCIgdmlld0JveD0iMCAwIDcgMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuMzg3MzkgNC4zMTYyOFY1LjYyMUwzLjczNDM5IDQuOTY5MjZMNC4zODczOSA0LjMxNzUxVjQuMzE2MjhaTTAuMDAxMjMxMzkgMS4zMDM0OUwxLjMwNTk5IDBMNi4zMTU1NyA1TDEuMzA1OTkgMTBMMCA4LjY5NjUxTDMuNzAxMTMgNUwwIDEuMzAzNDlIMC4wMDEyMzEzOVoiIGZpbGw9IiM4RDhEOEYiLz48L3N2Zz4K");
|
||||
}
|
||||
|
||||
/* Info icons in main headline */
|
||||
h2 small .fa-question-circle-o {
|
||||
position: relative;
|
||||
top: -.2rem;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
/* Admin Sidebar Navigation */
|
||||
.col-md-3 .nav-pills {
|
||||
margin-left: -1rem;
|
||||
|
||||
@@ -80,6 +80,23 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
}
|
||||
|
||||
$('[data-clipboard]').on('click', window.copyToClipboard);
|
||||
|
||||
$('[data-toggle="password"]').each(function () {
|
||||
var input = $(this);
|
||||
var eye_btn = $(this).parent().find('.input-group-text');
|
||||
eye_btn.css('cursor', 'pointer').addClass('input-password-hide');
|
||||
eye_btn.on('click', function () {
|
||||
if (eye_btn.hasClass('input-password-hide')) {
|
||||
eye_btn.removeClass('input-password-hide').addClass('input-password-show');
|
||||
eye_btn.find('.fa').removeClass('fa-eye').addClass('fa-eye-slash')
|
||||
input.attr('type', 'text');
|
||||
} else {
|
||||
eye_btn.removeClass('input-password-show').addClass('input-password-hide');
|
||||
eye_btn.find('.fa').removeClass('fa-eye-slash').addClass('fa-eye')
|
||||
input.attr('type', 'password');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function switchTimeFormat() {
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
--btcpay-footer-link: var(--btcpay-neutral-400);
|
||||
--btcpay-footer-link-accent: var(--btcpay-neutral-100);
|
||||
--btcpay-code-text: var(--btcpay-body-text);
|
||||
--btcpay-code-bg: var(--btcpay-neutral-200);
|
||||
--btcpay-code-bg: transparent;
|
||||
--btcpay-pre-text: var(--btcpay-white);
|
||||
--btcpay-pre-bg: var(--btcpay-neutral-900);
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
--btcpay-footer-link: var(--btcpay-neutral-400);
|
||||
--btcpay-footer-link-accent: var(--btcpay-neutral-100);
|
||||
--btcpay-code-text: var(--btcpay-body-text);
|
||||
--btcpay-code-bg: var(--btcpay-neutral-200);
|
||||
--btcpay-code-bg: transparent;
|
||||
--btcpay-pre-text: var(--btcpay-white);
|
||||
--btcpay-pre-bg: var(--btcpay-neutral-900);
|
||||
--btcpay-primary: #329f80;
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
--btcpay-footer-link: var(--btcpay-neutral-600);
|
||||
--btcpay-footer-link-accent: var(--btcpay-neutral-300);
|
||||
--btcpay-pre-bg: var(--btcpay-bg-dark);
|
||||
--btcpay-code-bg: var(--btcpay-bg-dark);
|
||||
--btcpay-light: var(--btcpay-neutral-800);
|
||||
--btcpay-light-accent: var(--btcpay-black);
|
||||
--btcpay-light-text: var(--btcpay-neutral-200);
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
--btcpay-footer-link: var(--btcpay-neutral-400);
|
||||
--btcpay-footer-link-accent: var(--btcpay-neutral-100);
|
||||
--btcpay-code-text: var(--btcpay-body-text);
|
||||
--btcpay-code-bg: var(--btcpay-neutral-200);
|
||||
--btcpay-code-bg: transparent;
|
||||
--btcpay-pre-text: var(--btcpay-white);
|
||||
--btcpay-pre-bg: var(--btcpay-neutral-900);
|
||||
--btcpay-primary: var(--btcpay-brand-primary);
|
||||
|
||||
@@ -3053,7 +3053,7 @@
|
||||
children = _ref.children;
|
||||
|
||||
return h(props.tag, mergeData(data, {
|
||||
staticClass: 'form-row'
|
||||
staticClass: 'row'
|
||||
}), children);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1 +1 @@
|
||||
.hljs{display:block;overflow-x:auto;padding:0.5em;background:#F0F0F0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888888}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold}
|
||||
.hljs{display:block;overflow-x:auto;padding:.5em;background:var(--btcpay-pre-bg);color:var(--btcpay-pre-text)}.hljs-comment,.hljs-quote{color:#969896;font-style:italic}.hljs-addition,.hljs-keyword,.hljs-literal,.hljs-selector-tag,.hljs-type{color:#c9c}.hljs-number,.hljs-selector-attr,.hljs-selector-pseudo{color:#f99157}.hljs-doctag,.hljs-regexp,.hljs-string{color:#8abeb7}.hljs-built_in,.hljs-name,.hljs-section,.hljs-title{color:#b5bd68}.hljs-class .hljs-title,.hljs-selector-id,.hljs-template-variable,.hljs-variable{color:#fc6}.hljs-name,.hljs-section,.hljs-strong{font-weight:700}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-subst,.hljs-symbol{color:#f99157}.hljs-deletion{color:#dc322f}.hljs-formula{background:#eee8d5}.hljs-attr,.hljs-attribute{color:#81a2be}.hljs-emphasis{font-style:italic}
|
||||
|
||||
Reference in New Issue
Block a user