Improve and unify page headers (#2412)

* Improve and unify page headers

* Altcoin test fixes

* Update BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>

* Update BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>

* Fix missing store name in pairing view

* Fix CanUsePairing test

* Bump header navigation font size

* Use partial tag instead of Html.PartialAsync in views

As suggested by @nicolasdorier. These are equivalent, see details [here](https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-3.1#partial-tag-helper).

* Fix docs link

As in #2432.

* Update BTCPayServer/Views/Wallets/SignWithSeed.cshtml

Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>

* Update BTCPayServer/Views/Wallets/WalletSendVault.cshtml

Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>

* Update BTCPayServer/Views/Wallets/WalletTransactions.cshtml

Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>

Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
Co-authored-by: britttttk <39231115+britttttk@users.noreply.github.com>
This commit is contained in:
d11n
2021-04-08 15:32:42 +02:00
committed by GitHub
parent 6473da7114
commit b12c4c5fa0
147 changed files with 1434 additions and 1790 deletions

View File

@@ -225,7 +225,7 @@ namespace BTCPayServer.Tests
public void ClickOnAllSideMenus()
{
var links = Driver.FindElements(By.CssSelector(".nav-pills .nav-link")).Select(c => c.GetAttribute("href")).ToList();
var links = Driver.FindElements(By.CssSelector(".nav .nav-link")).Select(c => c.GetAttribute("href")).ToList();
Driver.AssertNoError();
Assert.NotEmpty(links);
foreach (var l in links)

View File

@@ -16,23 +16,22 @@ namespace BTCPayServer.Controllers
public string StoreId { get; set; }
public override string ToString()
{
return String.Empty;
return string.Empty;
}
}
[HttpGet]
[Route("{appId}/settings/crowdfund")]
[HttpGet("{appId}/settings/crowdfund")]
public async Task<IActionResult> UpdateCrowdfund(string appId)
{
var app = await GetOwnedApp(appId, AppType.Crowdfund);
if (app == null)
return NotFound();
var settings = app.GetSettings<CrowdfundSettings>();
var vm = new UpdateCrowdfundViewModel()
var vm = new UpdateCrowdfundViewModel
{
Title = settings.Title,
StoreId = app.StoreDataId,
StoreName = app.StoreData?.StoreName,
Enabled = settings.Enabled,
EnforceTargetAmount = settings.EnforceTargetAmount,
StartDate = settings.StartDate,

View File

@@ -97,10 +97,11 @@ namespace BTCPayServer.Controllers
settings.DefaultView = settings.EnableShoppingCart ? PosViewType.Cart : settings.DefaultView;
settings.EnableShoppingCart = false;
var vm = new UpdatePointOfSaleViewModel()
var vm = new UpdatePointOfSaleViewModel
{
Id = appId,
StoreId = app.StoreDataId,
StoreName = app.StoreData?.StoreName,
Title = settings.Title,
DefaultView = settings.DefaultView,
ShowCustomAmount = settings.ShowCustomAmount,
@@ -183,7 +184,7 @@ namespace BTCPayServer.Controllers
var app = await GetOwnedApp(appId, AppType.PointOfSale);
if (app == null)
return NotFound();
app.SetSettings(new PointOfSaleSettings()
app.SetSettings(new PointOfSaleSettings
{
Title = vm.Title,
DefaultView = vm.DefaultView,

View File

@@ -857,6 +857,12 @@ namespace BTCPayServer.Controllers
if (string.IsNullOrWhiteSpace(userId))
return Challenge(AuthenticationSchemes.Cookie);
var storeId = CurrentStore?.Id;
if (storeId != null)
{
var store = await _Repo.FindStore(storeId, userId);
if (store != null)
HttpContext.SetStoreData(store);
}
var model = new CreateTokenViewModel();
ViewBag.HidePublicKey = true;
ViewBag.ShowStores = true;
@@ -913,6 +919,14 @@ namespace BTCPayServer.Controllers
return Challenge(AuthenticationSchemes.Cookie);
if (pairingCode == null)
return NotFound();
if (selectedStore != null)
{
var store = await _Repo.FindStore(selectedStore, userId);
if (store == null)
return NotFound();
HttpContext.SetStoreData(store);
ViewBag.ShowStores = false;
}
var pairing = await _TokenRepository.GetPairingAsync(pairingCode);
if (pairing == null)
{
@@ -922,7 +936,7 @@ namespace BTCPayServer.Controllers
else
{
var stores = await _Repo.GetStoresByUserId(userId);
return View(new PairingModel()
return View(new PairingModel
{
Id = pairing.Id,
Label = pairing.Label,
@@ -981,8 +995,6 @@ namespace BTCPayServer.Controllers
return _UserManager.GetUserId(User);
}
// TODO: Need to have talk about how architect default currency implementation
// For now we have also hardcoded USD for Store creation and then Invoice creation
const string DEFAULT_CURRENCY = "USD";

View File

@@ -341,6 +341,8 @@ namespace BTCPayServer.Controllers
model.Transactions = model.Transactions.OrderByDescending(t => t.Timestamp).Skip(skip).Take(count).ToList();
}
model.CryptoCode = walletId.CryptoCode;
return View(model);
}

View File

@@ -9,6 +9,8 @@ namespace BTCPayServer.Models.AppViewModels
public class UpdateCrowdfundViewModel
{
public string StoreId { get; set; }
public string StoreName { get; set; }
[Required]
[MaxLength(30)]
public string Title { get; set; }
@@ -95,12 +97,7 @@ namespace BTCPayServer.Models.AppViewModels
[Display(Name = "Colors to rotate between with animation when a payment is made. First color is the default background. One color per line. Can be any valid css color value.")]
public string AnimationColors { get; set; }
// NOTE: Improve validation if needed
public bool ModelWithMinimumData
{
get { return Description != null && Title != null && TargetCurrency != null; }
}
public bool ModelWithMinimumData => Description != null && Title != null && TargetCurrency != null;
}
}

View File

@@ -9,6 +9,8 @@ namespace BTCPayServer.Models.AppViewModels
public class UpdatePointOfSaleViewModel
{
public string StoreId { get; set; }
public string StoreName { get; set; }
[Required]
[MaxLength(30)]
public string Title { get; set; }

View File

@@ -19,5 +19,6 @@ namespace BTCPayServer.Models.WalletViewModels
}
public HashSet<ColoredLabel> Labels { get; set; } = new HashSet<ColoredLabel>();
public List<TransactionViewModel> Transactions { get; set; } = new List<TransactionViewModel>();
public string CryptoCode { get; set; }
}
}

View File

@@ -5,14 +5,8 @@
<section>
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<div class="row justify-content-center">
<div class="col-md-6 section-heading">
<h2>@ViewData["Title"]</h2>
@@ -39,6 +33,7 @@
</div>
</div>
</section>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -7,7 +7,7 @@
}
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}
<div class="row justify-content-center mb-2">
@@ -18,10 +18,7 @@
<h1 class="h2 mb-3">Welcome to your BTCPay&nbsp;Server</h1>
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage" />
}
</div>
</div>

View File

@@ -43,5 +43,5 @@
</section>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -33,5 +33,5 @@
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -6,7 +6,7 @@
}
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}
<div class="row justify-content-center mb-2">
@@ -22,10 +22,7 @@
<span class="d-sm-block">It is secure, private, censorship-resistant and free.</span>
</p>
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage" />
}
</div>
</div>

View File

@@ -36,6 +36,7 @@
</div>
</div>
</section>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,12 +1,11 @@
@model BTCPayServer.Models.AccountViewModels.SetPasswordViewModel
@{
ViewData["Title"] = "Reset password";
Layout = "_LayoutSimple";
}
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}
<div class="row justify-content-center mb-2">
@@ -17,10 +16,7 @@
<h1 class="h2 mb-3">Welcome to your BTCPay&nbsp;Server</h1>
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage" />
}
</div>
</div>

View File

@@ -2,6 +2,6 @@ namespace BTCPayServer.Views.Apps
{
public enum AppsNavPages
{
Index, Create
Index, Create, Update
}
}

View File

@@ -1,15 +1,13 @@
@model CreateAppViewModel
@{
ViewData["Title"] = "Create a new app";
ViewData.SetActivePageAndTitle(AppsNavPages.Create, "Create a new app");
}
<section>
<div class="container">
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
</div>
</div>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-lg-12">
<form asp-action="CreateApp">
@@ -29,9 +27,9 @@
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" id="Create"/>
<a asp-action="ListApps" class="text-muted ml-3">Back to list</a>
</div>
</form>
<a asp-action="ListApps">Back to the app list</a>
</div>
</div>
</div>

View File

@@ -1,6 +1,6 @@
@model ListAppsViewModel
@{
ViewData["Title"] = "Apps";
ViewData.SetActivePageAndTitle(AppsNavPages.Index, "Apps");
var storeNameSortOrder = (string)ViewData["StoreNameSortOrder"];
var appNameSortOrder = (string)ViewData["AppNameSortOrder"];
var appTypeSortOrder = (string)ViewData["AppTypeSortOrder"];
@@ -10,27 +10,20 @@
<section>
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
<div class="d-sm-flex align-items-center justify-content-between mb-2">
<h2 class="mb-0">
@ViewData["PageTitle"]
<small>
<a href="https://docs.btcpayserver.org/Apps/" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
</small>
</h2>
<a asp-action="CreateApp" class="btn btn-primary mt-3 mt-sm-0" role="button" id="CreateNewApp"><span class="fa fa-plus"></span> Create a new app</a>
</div>
</div>
}
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
<p>Create and manage apps.</p>
</div>
</div>
<div class="row button-row mb-3">
<div class="col-lg-12">
<a asp-action="CreateApp" class="btn btn-primary" role="button" id="CreateNewApp"><span class="fa fa-plus"></span> Create a new app</a>
<a href="https://docs.btcpayserver.org/Apps/" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
</div>
</div>
<div class="row">
<div class="col-lg-12">
@if (Model.Apps.Any())

View File

@@ -2,25 +2,14 @@
@using System.Globalization
@model UpdateCrowdfundViewModel
@{
ViewData["Title"] = "Update Crowdfund";
ViewData.SetActivePageAndTitle(AppsNavPages.Update, "Update Crowdfund", Model.StoreName);
}
<section>
<div class="container">
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
</div>
</div>
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-lg-12">
<form method="post">
@@ -92,7 +81,9 @@
</div>
<span asp-validation-for="EndDate" class="text-danger"></span>
</div>
<partial name="TemplateEditor" model="@(nameof(Model.PerksTemplate), "Perks")" />
<div class="form-group">
<label asp-for="PerksTemplate" class="control-label"></label>
<textarea asp-for="PerksTemplate" rows="10" cols="40" class="js-product-template form-control"></textarea>
@@ -100,7 +91,9 @@
</div>
<div class="form-group">
<label asp-for="CustomCSSLink" class="control-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<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>
<input asp-for="CustomCSSLink" class="form-control" />
<span asp-validation-for="CustomCSSLink" class="text-danger"></span>
</div>

View File

@@ -2,24 +2,14 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@model UpdatePointOfSaleViewModel
@{
ViewData["Title"] = "Update Point of Sale";
ViewData.SetActivePageAndTitle(AppsNavPages.Update, "Update Point of Sale", Model.StoreName);
}
<section>
<div class="container">
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
</div>
</div>
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-lg-12">
<form method="post">
@@ -79,11 +69,15 @@
</div>
<div class="form-group">
<label asp-for="CustomCSSLink" class="control-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<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>
<input asp-for="CustomCSSLink" class="form-control" />
<span asp-validation-for="CustomCSSLink" class="text-danger"></span>
</div>
<partial name="TemplateEditor" model="@(nameof(Model.Template), "Products")" />
<div class="form-group">
<label asp-for="Template" class="control-label"></label>
<textarea asp-for="Template" rows="10" cols="40" class="js-product-template form-control"></textarea>

View File

@@ -1 +1,2 @@
@using BTCPayServer.Models.AppViewModels
@using BTCPayServer.Views.Apps
@using BTCPayServer.Models.AppViewModels

View File

@@ -1,6 +1,6 @@
@using BTCPayServer.Views
@using BTCPayServer.Views.Apps
@{
ViewBag.MainTitle = "Manage app";
ViewBag.CategoryTitle = "Apps";
ViewData.SetActiveCategory(typeof(AppsNavPages));
}

View File

@@ -202,10 +202,8 @@
<div id="content">
<div class="p-2 p-sm-4">
<div class="row">
@if (this.TempData.HasStatusMessage())
{
<partial name="_StatusMessage" />
}
<div class="col-sm-4 col-lg-2 order-sm-last text-right mb-2">
<a class="js-cart btn btn-lg btn-outline-primary" href="#">
<i class="fa fa-shopping-basket"></i>&nbsp;

View File

@@ -5,12 +5,12 @@
@if (Context.Request.Query.ContainsKey("simple"))
{
@await Html.PartialAsync("/Views/AppsPublic/PointOfSale/MinimalLight.cshtml", Model)
<partial name="/Views/AppsPublic/PointOfSale/MinimalLight.cshtml" model="Model" />
}
else
{
<noscript>
@await Html.PartialAsync("/Views/AppsPublic/PointOfSale/MinimalLight.cshtml", Model)
<partial name="/Views/AppsPublic/PointOfSale/MinimalLight.cshtml" model="Model" />
</noscript>
@await Html.PartialAsync("/Views/AppsPublic/PointOfSale/VueLight.cshtml", Model)
<partial name="/Views/AppsPublic/PointOfSale/VueLight.cshtml" model="Model" />
}

View File

@@ -6,10 +6,8 @@
<div class="container d-flex h-100">
<div class="justify-content-center align-self-center text-center mx-auto px-2 py-3 w-100 m-auto">
@if (TempData.HasStatusMessage())
{
<partial name="_StatusMessage" />
}
<h1 class="mb-4">@Model.Title</h1>
@if (!string.IsNullOrEmpty(Model.Description))
{

View File

@@ -40,12 +40,12 @@
<body>
@if (Context.Request.Query.ContainsKey("simple"))
{
@await Html.PartialAsync("/Views/AppsPublic/Crowdfund/MinimalCrowdfund.cshtml", Model)
<partial name="/Views/AppsPublic/Crowdfund/MinimalCrowdfund.cshtml" model="Model" />
}
else
{
<noscript>
@await Html.PartialAsync("/Views/AppsPublic/Crowdfund/MinimalCrowdfund.cshtml", Model)
<partial name="/Views/AppsPublic/Crowdfund/MinimalCrowdfund.cshtml" model="Model" />
<style>
/* Hide the below canvas or else user will be staring "Loading..." text when JS is disabled */
@@ -60,8 +60,7 @@
{
<canvas id="fireworks"></canvas>
}
@await Html.PartialAsync("/Views/AppsPublic/Crowdfund/VueCrowdfund.cshtml", Model)
<partial name="/Views/AppsPublic/Crowdfund/VueCrowdfund.cshtml" model="Model" />
}
</body>
</html>

View File

@@ -1,29 +1,20 @@
@using BTCPayServer.Views.Stores
@model BTCPayServer.Services.Altcoins.Ethereum.UI.EditEthereumPaymentMethodViewModel
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData["NavPartialName"] = "../Stores/_Nav";
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, $"{this.Context.GetRouteValue("cryptoCode")} Settings");
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, $"{Context.GetRouteValue("cryptoCode")} Settings", Context.GetStoreData().StoreName);
}
<partial name="_StatusMessage"/>
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="alert alert-warning">DO NOT USE THE WALLET TO ACCEPT PAYMENTS OUTSIDE OF THIS STORE.<br/>If you spend funds received on invoices which have not been marked complete yet, the invoice will be marked as unpaid.
</div>
<div asp-validation-summary="All" class="text-danger"></div>
<form method="post" asp-action="GetStoreEthereumLikePaymentMethod"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@this.Context.GetRouteValue("cryptoCode")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
class="mt-4" enctype="multipart/form-data">
<input type="hidden" asp-for="OriginalIndex"/>
@@ -85,8 +76,8 @@
<button type="submit" class="btn btn-primary" id="SaveButton">Save</button>
<a class="btn btn-secondary" asp-action="GetStoreEthereumLikePaymentMethods"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@this.Context.GetRouteValue("cryptoCode")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
asp-controller="EthereumLikeStore">
Back to list
</a>

View File

@@ -5,22 +5,13 @@
@inject BTCPayNetworkProvider BTCPayNetworkProvider;
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, "Ethereum Settings");
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, "Ethereum Settings", Context.GetStoreData().StoreName);
ViewData["NavPartialName"] = "../Stores/_Nav";
}
<partial name="_StatusMessage"/>
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<table class="table table-sm table-responsive-md">
<thead>
@@ -49,11 +40,10 @@
</td>
<td class="text-right">
<a id="Modify@(item.CryptoCode)" asp-action="GetStoreEthereumLikePaymentMethod"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@item.CryptoCode">
Modify
</a>
</td>
</tr>
}
@@ -67,7 +57,6 @@
var chains = BTCPayNetworkProvider.GetAll().OfType<EthereumBTCPayNetwork>().Select(network => network.ChainId).Distinct();
foreach (var chain in chains)
{
<a asp-action="UpdateChainConfig" asp-controller="EthereumConfig" asp-route-chainId="@chain">Configure Web3 for chain @chain</a>
}
}

View File

@@ -5,7 +5,7 @@
}
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}
<style>

View File

@@ -1,6 +1,6 @@
@model BTCPayServer.Models.InvoicingModels.CreateInvoiceModel
@{
ViewData["Title"] = "Create an invoice";
ViewData.SetActivePageAndTitle(InvoiceNavPages.Create, "Create an invoice");
}
<script>
$(function() {
@@ -12,12 +12,10 @@
</script>
<section>
<div class="container">
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
</div>
</div>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-lg-12">
<form asp-action="CreateInvoice" method="post" id="create-invoice-form">
@@ -69,9 +67,9 @@
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" id="Create" />
<a asp-action="ListInvoices" class="text-muted ml-3">Back to list</a>
</div>
</form>
<a asp-action="ListInvoices">Back to List</a>
</div>
</div>
</div>

View File

@@ -13,14 +13,7 @@
<section class="invoice-details">
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<div class="row mb-4">
<h2 class="col-xs-12 col-lg-9 mb-4 mb-lg-0">@ViewData["Title"]</h2>

View File

@@ -1,7 +1,6 @@
@using BTCPayServer.Payments
@model InvoicesModel
@{
ViewData["Title"] = "Invoices";
ViewData.SetActivePageAndTitle(InvoiceNavPages.Index, "Invoices");
var storeIds = string.Join("", Model.StoreIds.Select(storeId => $",storeid:{storeId}"));
}
@section HeadScripts {
@@ -11,31 +10,25 @@
@Html.HiddenFor(a => a.Count)
<section>
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
<p>Create, search or pay an invoice.</p>
</div>
</div>
<div class="row">
<div class="col-12 col-sm-4 col-lg-6 mb-3">
<a id="CreateNewInvoice" asp-action="CreateInvoice" class="btn btn-primary mb-1">
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h2 class="mb-0">
@ViewData["Title"]
<small>
<a href="https://docs.btcpayserver.org/PaymentRequests/" class="ml-1" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
</small>
</h2>
<a id="CreateNewInvoice" asp-action="CreateInvoice" class="btn btn-primary mt-3 mt-sm-0">
<span class="fa fa-plus"></span>
Create an invoice
</a>
</div>
<div class="col-12 col-sm-8 col-lg-6 mb-3">
<div class="row">
<div class="col-12 col-lg-6 mb-5 mb-lg-2 ml-auto">
<form asp-action="ListInvoices" method="get">
<input type="hidden" asp-for="Count"/>
<input asp-for="TimezoneOffset" type="hidden"/>
@@ -184,7 +177,7 @@
@if (Model.Total > 0)
{
<form method="post" id="MassAction" asp-action="MassAction" class="mt-3">
<form method="post" id="MassAction" asp-action="MassAction" class="mt-lg-n5">
<span class="mr-2">
<button class="btn btn-secondary dropdown-toggle mb-1" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Actions

View File

@@ -1 +1,2 @@
@using BTCPayServer.Services.Invoices
@using BTCPayServer.Views.Invoice

View File

@@ -7,11 +7,11 @@
ViewData.SetActivePageAndTitle(ManageNavPages.APIKeys, "Add API Key");
}
<h4>@ViewData["Title"]</h4>
<partial name="_StatusMessage" />
<p>
Generate a new api key to use BTCPay through its API.
</p>
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<p>Generate a new api key to use BTCPay through its API.</p>
<form method="post" asp-action="AddApiKey">
<div asp-validation-summary="All" class="text-danger"></div>
@@ -109,7 +109,7 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
<style>
.remove-btn {

View File

@@ -4,7 +4,6 @@
}
<form asp-action="AddU2FDevice" method="post" id="registerForm" class="hidden">
<input type="hidden" asp-for="AppId"/>
<input type="hidden" asp-for="Version"/>
<input type="hidden" asp-for="Challenge"/>
@@ -12,7 +11,6 @@
<input type="hidden" asp-for="DeviceResponse"/>
</form>
<div class="card">
<div class="card-header">
<h4 class="mb-0">

View File

@@ -5,11 +5,12 @@
@{
Layout = "_Layout";
ViewData["Title"] = $"Authorize {(Model.ApplicationName ?? "Application")}";
ViewData["Title"] = $"Authorize {Model.ApplicationName ?? "Application"}";
var permissions = Permission.ToPermissions(Model.Permissions.Split(';')).GroupBy(permission => permission.Policy);
}
<partial name="_StatusMessage" />
<form method="post" asp-action="AuthorizeAPIKey">
<input type="hidden" asp-for="RedirectUrl" value="@Model.RedirectUrl"/>
<input type="hidden" asp-for="Permissions" value="@Model.Permissions"/>

View File

@@ -5,17 +5,12 @@
<partial name="_StatusMessage" />
@if (!this.ViewContext.ModelState.IsValid)
<div class="row">
<div class="col-md-6">
@if (!ViewContext.ModelState.IsValid)
{
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
}
<div class="row">
<div class="col-md-6">
<form method="post">
<div class="form-group">
<label asp-for="OldPassword"></label>
@@ -38,5 +33,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -12,7 +12,7 @@
<partial name="Header" />
</head>
<body class="bg-light">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-dialog modal-dialog-centered min-vh-100">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title w-100 text-center">@ViewData["Title"]</h4>

View File

@@ -56,7 +56,7 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
<script type="text/javascript" src="~/js/qrcode.js" asp-append-version="true"></script>
<script type="text/javascript">
new QRCode(document.getElementById("qrCode"),

View File

@@ -3,18 +3,14 @@
ViewData.SetActivePageAndTitle(ManageNavPages.Index, "Profile");
}
<partial name="_StatusMessage" />)
<partial name="_StatusMessage" />
@if (!this.ViewContext.ModelState.IsValid)
{
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
}
<form method="post">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-row">
<div class="col-md-6 mb-3">
<label asp-for="Username"></label>
@@ -45,5 +41,5 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -6,6 +6,7 @@
}
<partial name="_StatusMessage" />
<form method="post" asp-action="NotificationSettings">
@if (Model.All)
{

View File

@@ -3,8 +3,10 @@
ViewData.SetActivePageAndTitle(ManageNavPages.ChangePassword, "Set password");
}
<h4>Set your password</h4>
<partial name="_StatusMessage" />
<h4>Set your password</h4>
<p class="text-info">
You do not have a local username/password for this site. Add a local
account so you can log in without an external login.
@@ -29,5 +31,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -83,5 +83,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,6 +1,6 @@
@inject SignInManager<ApplicationUser> SignInManager
<div class="nav flex-column nav-pills mb-4">
<div class="nav flex-column mb-4">
<a id="@ManageNavPages.Index.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.Index)" asp-action="Index">Profile</a>
<a id="@ManageNavPages.ChangePassword.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.ChangePassword)" asp-action="ChangePassword">Password</a>
<a id="@ManageNavPages.TwoFactorAuthentication.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.TwoFactorAuthentication)" asp-action="TwoFactorAuthentication">Two-factor authentication</a>

View File

@@ -2,6 +2,6 @@
@using BTCPayServer.Views.Manage
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewBag.MainTitle = "Manage your account";
ViewBag.CategoryTitle = "Account";
ViewData.SetActiveCategory(typeof(ManageNavPages));
}

View File

@@ -4,21 +4,13 @@
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData["NavPartialName"] = "../Stores/_Nav";
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, $"{Model.CryptoCode} Settings");
}
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div asp-validation-summary="All" class="text-danger"></div>
@if (Model.Summary != null)
{
<div class="card">
@@ -31,11 +23,11 @@
</div>
}
@if (!Model.WalletFileFound || Model.Summary.WalletHeight == default(long))
@if (!Model.WalletFileFound || Model.Summary.WalletHeight == default)
{
<form method="post" asp-action="GetStoreMoneroLikePaymentMethod"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@this.Context.GetRouteValue("cryptoCode")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
class="mt-4" enctype="multipart/form-data">
<div class="card my-2">
@@ -62,12 +54,12 @@
</form>
}
<form method="post" asp-action="GetStoreMoneroLikePaymentMethod"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@this.Context.GetRouteValue("cryptoCode")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
class="mt-4" enctype="multipart/form-data">
<input type="hidden" asp-for="CryptoCode"/>
@if (!Model.WalletFileFound || Model.Summary.WalletHeight == default(long))
@if (!Model.WalletFileFound || Model.Summary.WalletHeight == default)
{
<input type="hidden" asp-for="AccountIndex"/>
}
@@ -107,9 +99,8 @@
<button type="submit" class="btn btn-primary" id="SaveButton">Save</button>
<a class="btn btn-secondary" asp-action="GetStoreMoneroLikePaymentMethods"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@this.Context.GetRouteValue("cryptoCode")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@Context.GetRouteValue("cryptoCode")"
asp-controller="MoneroLikeStore">
Back to list
</a>

View File

@@ -3,22 +3,13 @@
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.ActivePage, "Monero Settings");
ViewData["NavPartialName"] = "../Stores/_Nav";
}
<partial name="_StatusMessage"/>
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<table class="table table-sm table-responsive-md">
<thead>
@@ -47,7 +38,7 @@
</td>
<td class="text-right">
<a id="Modify" asp-action="GetStoreMoneroLikePaymentMethod"
asp-route-storeId="@this.Context.GetRouteValue("storeId")"
asp-route-storeId="@Context.GetRouteValue("storeId")"
asp-route-cryptoCode="@item.CryptoCode">
Modify
</a>

View File

@@ -5,14 +5,8 @@
<section>
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>

View File

@@ -3,24 +3,14 @@
@model BTCPayServer.Models.PaymentRequestViewModels.UpdatePaymentRequestViewModel
@addTagHelper *, BundlerMinifier.TagHelpers
@{
ViewData["Title"] = (string.IsNullOrEmpty(Model.Id) ? "Create" : "Edit") + " Payment Request";
ViewData.SetActivePageAndTitle(PaymentRequestsNavPages.Create, (string.IsNullOrEmpty(Model.Id) ? "Create" : "Edit") + " Payment Request");
}
<section>
<div class="container">
<div class="row">
<div class="col-lg-12 section-heading">
<h2>@ViewData["Title"]</h2>
<hr class="primary">
</div>
</div>
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-lg-12">
<form method="post" action="@Url.Action("EditPaymentRequest", "PaymentRequest", new { id = Model.Id}, Context.Request.Scheme)">
@@ -86,7 +76,7 @@
<div class="form-group">
<label asp-for="CustomCSSLink" class="control-label"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank">
<span class="fa fa-question-circle-o" title="More information..."></span>
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<input asp-for="CustomCSSLink" class="form-control" />
<span asp-validation-for="CustomCSSLink" class="text-danger"></span>
@@ -100,28 +90,25 @@
<button type="submit" class="btn btn-primary" id="SaveButton">Save</button>
@if (!string.IsNullOrEmpty(Model.Id))
{
<a class="btn btn-secondary" target="_blank" asp-action="ViewPaymentRequest" asp-route-id="@this.Context.GetRouteValue("id")" id="@Model.Id" name="ViewAppButton">View</a>
<a class="btn btn-secondary" target="_blank" asp-action="ViewPaymentRequest" asp-route-id="@Context.GetRouteValue("id")" id="@Model.Id" name="ViewAppButton">View</a>
<a class="btn btn-secondary"
target="_blank"
asp-action="ListInvoices"
asp-controller="Invoice"
asp-route-searchterm="@($"orderid:{PaymentRequestRepository.GetOrderIdForPaymentRequest(Model.Id)}")">Invoices</a>
<a class="btn btn-secondary" asp-route-id="@this.Context.GetRouteValue("id")" asp-action="ClonePaymentRequest" id="@Model.Id">Clone</a>
<a class="btn btn-secondary" asp-route-id="@Context.GetRouteValue("id")" asp-action="ClonePaymentRequest" id="@Model.Id">Clone</a>
@if (!Model.Archived)
{
<a class="btn btn-secondary" data-toggle="tooltip" title="Archive this payment request so that it does not appear in the payment request list by default" asp-route-id="@this.Context.GetRouteValue("id")" asp-controller="PaymentRequest" asp-action="TogglePaymentRequestArchival">Archive</a>
<a class="btn btn-secondary" data-toggle="tooltip" title="Archive this payment request so that it does not appear in the payment request list by default" asp-route-id="@Context.GetRouteValue("id")" asp-controller="PaymentRequest" asp-action="TogglePaymentRequestArchival">Archive</a>
}
else
{
<a class="btn btn-secondary" data-toggle="tooltip" title="Unarchive this payment request" asp-route-id="@this.Context.GetRouteValue("id")" asp-controller="PaymentRequest" asp-action="TogglePaymentRequestArchival">Unarchive</a>
<a class="btn btn-secondary" data-toggle="tooltip" title="Unarchive this payment request" asp-route-id="@Context.GetRouteValue("id")" asp-controller="PaymentRequest" asp-action="TogglePaymentRequestArchival">Unarchive</a>
}
}
<a asp-action="GetPaymentRequests" class="text-muted ml-3">Back to list</a>
</div>
</form>
<a asp-action="GetPaymentRequests">Back to List</a>
</div>
</div>
</div>

View File

@@ -6,35 +6,25 @@
}
<section>
<div class="container">
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-lg-12 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<div class="row">
<div class="col-lg-12 section-heading">
<h2>Payment Requests</h2>
<hr class="primary">
<p>
Create, search or pay a payment request.
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h2 class="mb-0">
@ViewData["Title"]
<small>
<a href="https://docs.btcpayserver.org/PaymentRequests/" class="ml-1" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-12 col-md-4 col-lg-6 mb-3">
<a asp-action="EditPaymentRequest" class="btn btn-primary" role="button" id="CreatePaymentRequest">
</small>
</h2>
<a asp-action="EditPaymentRequest" class="btn btn-primary mt-3 mt-sm-0" role="button" id="CreatePaymentRequest">
<span class="fa fa-plus"></span>
Create a payment request
</a>
</div>
<div class="col-12 col-md-8 col-lg-6 mb-3">
<div class="row">
<div class="col-12 col-lg-6 mb-3 ml-auto">
<form asp-action="GetPaymentRequests" method="get">
<input type="hidden" asp-for="Count"/>
<input type="hidden" asp-for="TimezoneOffset" />

View File

@@ -1,7 +1,6 @@
@using BTCPayServer.Services.Invoices
@using BTCPayServer.Client.Models
@model BTCPayServer.Models.PaymentRequestViewModels.ViewPaymentRequestViewModel
@addTagHelper *, BundlerMinifier.TagHelpers
@inject BTCPayServer.Services.BTCPayServerEnvironment env
@inject BTCPayServer.HostedServices.CssThemeManager themeManager
@@ -197,7 +196,7 @@
<main class="flex-grow-1 py-4">
<div class="container">
@await Html.PartialAsync("_StatusMessage", new ViewDataDictionary(ViewData){ { "Margin", "mb-4" } })
<partial name="_StatusMessage" model="@(new ViewDataDictionary(ViewData){ { "Margin", "mb-4" } })" />
<div class="row">
<div class="col col-12 col-lg-6 mb-4">
<div class="jumbotron h-100 m-0 p-sm-5">

View File

@@ -0,0 +1 @@
@using BTCPayServer.Views.PaymentRequest

View File

@@ -76,7 +76,7 @@
<main class="flex-grow-1 py-4">
<div class="container">
@await Html.PartialAsync("_StatusMessage", new ViewDataDictionary(ViewData){ { "Margin", "mb-4" } })
<partial name="_StatusMessage" model="@(new ViewDataDictionary(ViewData){ { "Margin", "mb-4" } })" />
@if (!ViewContext.ModelState.IsValid)
{
@Html.ValidationSummary(string.Empty, new { @class = "alert alert-danger mb-4 pb-0 text-center" })

View File

@@ -1,45 +1,29 @@
@model LndServicesViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"C-Lightning {Model.ConnectionType}");
}
<h4>C-Lightning @Model.ConnectionType</h4>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-md-8">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<p>
<span>BTCPay exposes Clightning-Rest's service for outside consumption, you will find connection information here.<br /></span>
</p>
</div>
<div class="form-group">
<h5>Compatible wallets</h5>
</div>
<div class="row">
<div class="col-lg-3 ml-auto text-center">
<a href="https://github.com/ZeusLN/zeus" target="_blank">
<img src="~/img/zeus.jpg" height="100" asp-append-version="true" />
<div>
<a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block mr-3 mb-3 text-center">
<img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" />
<div class="mt-2">Zeus</div>
</a>
<p><a href="https://github.com/ZeusLN/zeus" target="_blank">Zeus</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
</div>
<div class="form-group">
@@ -147,7 +131,7 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
@if (Model.QRCode != null)
{

View File

@@ -1,10 +1,9 @@
@model LightningWalletServices
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "BTCPay Server Configurator");
}
<h4>BTCPay Server Configurator</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-md-6">
@@ -28,6 +27,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -2,18 +2,16 @@
@model BTCPayServer.Controllers.ServerController.CreateTemporaryFileUrlViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Create temporary file link");
}
<h2 class="mb-4">@ViewData["Title"]</h2>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
}
<form method="post">
<div class="form-group">
<label asp-for="IsDownload"></label>
@@ -39,5 +37,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,9 +1,9 @@
@model BTCPayServer.Controllers.RegisterFromAdminViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Users, $"Users - Create account");
ViewData.SetActivePageAndTitle(ServerNavPages.Users, "Create account");
}
<partial name="_StatusMessage"/>
<h2 class="mb-4">@ViewData["Title"]</h2>
<div class="row">
<div class="col-md-6">

View File

@@ -1,21 +1,16 @@
@model BTCPayServer.Models.ServerViewModels.DynamicDnsViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Dynamic DNS Service");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<h4>Dynamic DNS Service</h4>
<partial name="_StatusMessage" />
@if (!this.ViewContext.ModelState.IsValid)
<div class="row">
<div class="col-md-8">
@if (!ViewContext.ModelState.IsValid)
{
<div class="row">
<div class="col-md-8">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
}
<div class="row">
<div class="col-md-8">
<form method="post">
<div class="form-group">
<input type="hidden" asp-for="Modify"/>

View File

@@ -1,11 +1,9 @@
@model BTCPayServer.Models.ServerViewModels.DynamicDnsViewModel[]
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Dynamic DNS Settings");
}
<h4>Dynamic DNS Settings</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-md-8">

View File

@@ -1,17 +1,16 @@
@model BTCPayServer.Storage.Services.Providers.AmazonS3Storage.Configuration.AmazonS3StorageConfiguration
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Storage - Amazon S3");
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Amazon S3 Storage");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
}
<form method="post">
<div class="form-group">
<label asp-for="ContainerName"></label>
@@ -56,5 +55,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,17 +1,16 @@
@model BTCPayServer.Storage.Services.Providers.AzureBlobStorage.Configuration.AzureBlobStorageConfiguration
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Storage - Azure Blob Storage");
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Azure Blob Storage");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
}
<form method="post">
<div class="form-group">
<label asp-for="ContainerName"></label>
@@ -31,5 +30,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,21 +1,21 @@
@model BTCPayServer.Storage.Services.Providers.FileSystemStorage.Configuration.FileSystemStorageConfiguration
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Storage - Local Filesystem");
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Local Filesystem Storage");
}
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<p>Any uploaded files are being saved on the same machine that hosts BTCPay; please pay attention to your storage space.</p>
<div class="row">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<a asp-action="Storage" asp-route-forceChoice="true">Change Storage provider</a>
</div>
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,16 +1,16 @@
@model BTCPayServer.Storage.Services.Providers.GoogleCloudStorage.Configuration.GoogleCloudStorageConfiguration
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"Storage - Google Cloud Storage");
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Google Cloud Storage");
}
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
}
<form method="post">
<div class="form-group">
<label asp-for="ContainerName"></label>
@@ -40,5 +40,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -3,5 +3,9 @@
ViewData.SetActivePageAndTitle(ServerNavPages.Emails);
}
<partial name="EmailsBody" model="Model" />
@section Scripts {
<partial name="_ValidationScriptsPartial" />
}
<partial name="EmailsBody" model="@Model"/>

View File

@@ -1,16 +1,16 @@
@model ViewFilesViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Files);
ViewData.SetActivePageAndTitle(ServerNavPages.Files, "File Storage");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<partial name="_StatusMessage" />
<h4>File Storage</h4>
<div class="form-group">
<span>Change your <a asp-action="Services" asp-route-returnurl="@ViewData["ReturnUrl"]">external storage service</a> provider</span>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
</div>
<p>
Change your <a asp-action="Services" asp-route-returnurl="@ViewData["ReturnUrl"]">external storage service</a> provider.
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-upload-files-to-btcpay" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
</p>
@if (Model.Files.Any())
{
@@ -81,23 +81,16 @@ else
@if (Model.StorageConfigured)
{
<div class="card">
<form asp-action="CreateFile" method="post" enctype="multipart/form-data">
<h4 class="mt-5 mb-3">Upload File</h4>
<div class="card-body">
<h3 class="header">Upload File</h3>
<div class="custom-file">
<div class="custom-file mb-3">
<input type="file" class="custom-file-input" name="file" id="file" required>
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
</div>
<div class="card-footer">
<button class="btn btn-primary" role="button"><span class="fa fa-plus"></span> Upload file</button>
</div>
</form>
</div>
@section Scripts {
<script>

View File

@@ -1,23 +1,18 @@
@model ChargeServiceViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Lightning charge service");
}
<h4>Lightning charge service</h4>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-md-8">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<p>
<span>Lightning charge is a simple API for invoicing on lightning network, you can use it with several plugins:</span>
<p>Lightning charge is a simple API for invoicing on lightning network, you can use it with several plugins:</p>
<ul>
<li><a href="https://github.com/ElementsProject/woocommerce-gateway-lightning" target="_blank">WooCommerce Lightning Gateway</a>: A comprehensive e-commerce application that integrates with stock-management and order-tracking systems</li>
<li><a href="https://github.com/ElementsProject/nanopos" target="_blank">Nanopos</a>: A simple point-of-sale system for fixed-price goods</li>
@@ -28,7 +23,6 @@
<li><a href="https://github.com/ElementsProject/lightning-jukebox" target="_blank">Lightning Jukebox</a>: A fun demo that reimagines a classic technology for the Lightning Network</li>
<li><a href="https://github.com/ElementsProject/nanotip" target="_blank">Nanotip</a>: The simple tip jar, rebuilt to issue Lightning Network invoices</li>
</ul>
</p>
</div>
</div>
</div>

View File

@@ -1,11 +1,9 @@
@model LightningWalletServices
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, Model.WalletName);
}
<h4>@Model.WalletName</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
@if (Model.ShowQR)
{
@@ -19,14 +17,11 @@
}
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<h5>Browser connection</h5>
<p>
@@ -62,7 +57,7 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
@if (Model.ShowQR)
{

View File

@@ -88,8 +88,6 @@
}
}
<partial name="_StatusMessage"/>
<style>
.version-switch .nav-link { display: inline; }
.version-switch .nav-link.active { display: none; }
@@ -118,7 +116,7 @@
@if (Model.Installed.Any())
{
<h3 class="mb-3">Installed Plugins</h3>
<h2 class="mb-4">Installed Plugins</h2>
<div class="row mb-4">
@foreach (var plugin in Model.Installed)
{
@@ -235,9 +233,10 @@
}
</div>
}
@if (availableAndNotInstalled.Any())
{
<h3 class="mb-3">Available Plugins</h3>
<h2 class="mb-4">Available Plugins</h2>
<div class="row mb-4">
@foreach (var pluginT in availableAndNotInstalled)
{
@@ -250,7 +249,7 @@
@plugin.Version
@if (pluginT.Item2)
{
<div class="badge badge-light ml-2" data-toggle="tooltip" title="This plugin has been recommended to be installed by your deployment method." class="text-nowrap">Recommended <span class="fa fa-question-circle-o"></span></div>
<div class="badge badge-light ml-2" data-toggle="tooltip" title="This plugin has been recommended to be installed by your deployment method." class="text-nowrap">Recommended <span class="fa fa-question-circle-o text-secondary"></span></div>
}
</h5>
<p class="card-text">@plugin.Description</p>

View File

@@ -23,16 +23,12 @@
var sortByAsc = "Sort by ascending...";
}
<partial name="_StatusMessage"/>
<div class="row button-row">
<div class="col-12 col-sm-4 col-lg-6 mb-3">
<div class="d-flex align-items-center justify-content-between mb-4">
<h2 class="mb-0">@ViewData["Title"]</h2>
<a asp-action="CreateUser" class="btn btn-primary" role="button" id="CreateUser">
<span class="fa fa-plus"></span> Add User
</a>
</div>
<div class="col-12 col-sm-8 col-lg-6 mb-3">
<form
asp-action="ListUsers"
asp-route-sortOrder="@(userEmailSortOrder)"
@@ -47,11 +43,7 @@
</div>
<span asp-validation-for="SearchTerm" class="text-danger"></span>
</form>
</div>
</div>
<div class="row">
<div class="col-lg-9 col-xl-8">
<table class="table table-sm">
<thead>
<tr>
@@ -95,7 +87,4 @@
</tbody>
</table>
<vc:pager view-model="Model"></vc:pager>
</div>
</div>

View File

@@ -1,23 +1,14 @@
@model LndSeedBackupViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "LND Seed Backup");
}
<h4>LND Seed Backup</h4>
@if (TempData.HasStatusMessage())
{
<div class="row">
<div class="col-md-8 text-center">
<partial name="_StatusMessage" />
</div>
</div>
}
<h2 class="mb-4">@ViewData["Title"]</h2>
@if (Model.IsWalletUnlockPresent)
{
<div class="row">
<div class="col-md-8">
<div class="col-lg-8">
<div class="form-group">
<p>The LND seed backup is useful to recover funds of your LND wallet in case of a corruption of your server.</p>
<p>The recovering process is documented by LND on <a href="https://github.com/lightningnetwork/lnd/blob/master/docs/recovery.md">this page</a>.</p>

View File

@@ -1,83 +1,48 @@
@model LndServicesViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, $"LND {Model.ConnectionType}");
}
<h4>LND @Model.ConnectionType</h4>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<h2 class="mb-4">@ViewData["Title"]</h2>
<p>
<span>BTCPay exposes LND's @Model.ConnectionType service for outside consumption, you will find connection information here.<br /></span>
BTCPay exposes LND's @Model.ConnectionType service for outside consumption, you will find connection information here.
</p>
</div>
<div class="form-group">
<h5>Compatible wallets</h5>
</div>
<h4 class="mb-3">Compatible wallets</h4>
<div>
@if (Model.Uri == null) // if GRPC
{
<div class="row">
<div class="col-lg-3 ml-auto text-center">
<a href="https://www.pebble.indiesquare.me/" target="_blank">
<img src="~/img/pebblewallet.jpg" height="100" asp-append-version="true" />
<a href="https://www.pebble.indiesquare.me/" target="_blank" class="d-inline-block mr-3 text-center">
<img src="~/img/pebblewallet.jpg" width="100" height="100" asp-append-version="true" alt="Pebble" />
<div class="mt-2">Pebble</div>
</a>
<p><a href="https://www.pebble.indiesquare.me/" target="_blank">Pebble</a></p>
</div>
<div class="col-lg-3 ml-auto text-center">
<a href="https://zaphq.io/" target="_blank">
<img src="~/img/zapwallet.jpg" height="100" asp-append-version="true" />
<a href="https://zaphq.io/" target="_blank" class="d-inline-block mr-3 text-center">
<img src="~/img/zapwallet.jpg" width="100" height="100" asp-append-version="true" alt="Zap" />
<div class="mt-2">Zap</div>
</a>
<p><a href="https://zaphq.io/" target="_blank">Zap</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
</div>
}
else
{
<div class="row">
<div class="col-lg-3 ml-auto text-center">
<a href="https://lightningjoule.com/" target="_blank">
<img src="~/img/joule.png" height="100" asp-append-version="true" />
<a href="https://lightningjoule.com/" target="_blank" class="d-inline-block mr-3 mb-3 text-center">
<img src="~/img/joule.png" width="100" height="100" asp-append-version="true" alt="Joule" />
<div class="mt-2">Joule</div>
</a>
<p><a href="https://lightningjoule.com/" target="_blank">Joule</a></p>
</div>
<div class="col-lg-3 ml-auto text-center">
<a href="https://github.com/ZeusLN/zeus" target="_blank">
<img src="~/img/zeus.jpg" height="100" asp-append-version="true" />
<a href="https://github.com/ZeusLN/zeus" target="_blank" class="d-inline-block mr-3 mb-3 text-center">
<img src="~/img/zeus.jpg" width="100" height="100" asp-append-version="true" alt="Zeus" />
<div class="mt-2">Zeus</div>
</a>
<p><a href="https://github.com/ZeusLN/zeus" target="_blank">Zeus</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
<div class="col-lg-3 mr-auto text-center">
</div>
</div>
}
<div class="form-group">
<h5>QR Code connection</h5>
<p>
<span>You can use this QR Code to connect external software to your LND instance.<br /></span>
<span>This QR Code is only valid for 10 minutes</span>
</p>
</div>
<div class="form-group">
<h4 class="mt-5 mb-3">QR Code connection</h4>
<p>
You can use this QR Code to connect external software to your LND instance.<br/>
This QR Code is only valid for 10 minutes.
</p>
@if (Model.QRCode == null)
{
<div class="form-group">
@@ -92,7 +57,7 @@
<div id="qrCode"></div>
<div id="qrCodeData" data-url="@Model.QRCode"></div>
</div>
<p>See QR Code information by clicking <a href="#detailsQR" data-toggle="collapse">here</a></p>
<p>See QR Code information by clicking <a href="#detailsQR" data-toggle="collapse">here</a>.</p>
<div id="detailsQR" class="collapse">
<div class="form-group">
<label>QR Code data</label>
@@ -104,11 +69,9 @@
</div>
}
<h4 class="mt-5 mb-3">More details</h4>
<p>Alternatively, you can see the settings by clicking <a href="#details" data-toggle="collapse">here</a>.</p>
<div class="form-group">
<h5>More details...</h5>
<p>Alternatively, you can see the settings by clicking <a href="#details" data-toggle="collapse">here</a></p>
</div>
<div id="details" class="collapse">
@if (Model.Uri == null)
{
@@ -173,17 +136,15 @@
</div>
</div>
</div>
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
@if(Model.QRCode != null)
{
<script type="text/javascript" src="~/js/qrcode.js" asp-append-version="true"></script>
<script type="text/javascript">
new QRCode(document.getElementById("qrCode"),
{
new QRCode(document.getElementById("qrCode"), {
text: @Safe.Json(Model.QRCode),
width: 200,
height: 200,

View File

@@ -1,9 +1,9 @@
@model BTCPayServer.Models.ServerViewModels.LogsViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Logs);
ViewData.SetActivePageAndTitle(ServerNavPages.Logs, "Logs");
}
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<ul class="list-unstyled">
@foreach (var file in Model.LogFiles)
@@ -41,5 +41,5 @@
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,17 +1,15 @@
@model BTCPayServer.Models.ServerViewModels.MaintenanceViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Maintenance);
ViewData.SetActivePageAndTitle(ServerNavPages.Maintenance, "Maintenance");
}
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<form method="post">
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<div class="form-group">
<h5>Change domain name</h5>
<span>You can change the domain name of your server by following <a href="https://docs.btcpayserver.org/ChangeDomain" target="_blank">this guide</a></span>
</div>
<h4 class="mb-3">Change domain name</h4>
<p>You can change the domain name of your server by following <a href="https://docs.btcpayserver.org/ChangeDomain" target="_blank">this guide</a>.</p>
<div class="form-group">
<div class="form-inline">
@@ -22,28 +20,25 @@
</div>
<span asp-validation-for="DNSDomain" class="text-danger"></span>
</div>
</div>
</div>
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h5>Update</h5>
<p class="text-secondary mb-2">Update to the latest version of BTCPay server.</p>
<h4 class="mt-5 mb-3">Update</h4>
<p class="text-secondary">Update to the latest version of BTCPay server.</p>
<div class="form-group">
<div class="input-group">
<button name="command" type="submit" class="btn btn-primary" value="update" disabled="@(Model.CanUseSSH ? null : "disabled")">Update</button>
</div>
</div>
<h5 class="mt-5">Restart</h5>
<p class="text-secondary mb-2">Restart BTCPay server and related services.</p>
<h4 class="mt-5 mb-3">Restart</h4>
<p class="text-secondary">Restart BTCPay server and related services.</p>
<div class="form-group">
<div class="input-group">
<button name="command" type="submit" class="btn btn-primary" value="restart" disabled="@(Model.CanUseSSH ? null : "disabled")">Restart</button>
</div>
</div>
<h5 class="mt-5">Clean</h5>
<p class="text-secondary mb-2">Delete unused docker images present on your system.</p>
<h4 class="mt-5 mb-3">Clean</h4>
<p class="text-secondary">Delete unused docker images present on your system.</p>
<div class="form-group">
<div class="input-group">
<button name="command" type="submit" class="btn btn-secondary" value="clean" disabled="@(Model.CanUseSSH ? null : "disabled")">Clean</button>
@@ -54,5 +49,5 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,11 +1,9 @@
@model LightningWalletServices
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, Model.WalletName);
}
<h4>@Model.WalletName</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
@if (Model.ShowQR)
{
@@ -18,49 +16,31 @@
</div>
}
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<h5>Full node connection</h5>
<p>
<span>This page exposes information to connect remotely to your full node via the P2P protocol.</span>
</p>
</div>
<div class="form-group">
<h5>Compatible wallets</h5>
</div>
<div class="row">
<div class="col-lg-3 ml-auto text-center">
<a href="https://play.google.com/store/apps/details?id=com.greenaddress.greenbits_android_wallet" target="_blank">
<img src="~/img/GreenWallet.png" height="100" asp-append-version="true" />
</a>
<p><a href="https://play.google.com/store/apps/details?id=com.greenaddress.greenbits_android_wallet" target="_blank">Blockstream Green Wallet</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
<a href="https://www.wasabiwallet.io/" target="_blank">
<img src="~/img/wasabi.png" height="100" asp-append-version="true" />
</a>
<p><a href="https://www.wasabiwallet.io/" target="_blank">Wasabi Wallet</a> <a href="https://www.reddit.com/r/WasabiWallet/comments/aqlyia/how_to_connect_wasabi_wallet_to_my_own_full/" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
</div>
<div class="col-lg-3 mr-auto text-center">
<h4 class="mb-3">Full node connection</h4>
<p>This page exposes information to connect remotely to your full node via the P2P protocol.</p>
<h4 class="mb-3">Compatible wallets</h4>
<div>
<a href="https://play.google.com/store/apps/details?id=com.greenaddress.greenbits_android_wallet" target="_blank" class="d-inline-block mr-3 mb-3 text-center">
<img src="~/img/GreenWallet.png" width="100" height="100" asp-append-version="true" alt="Blockstream Green" />
<div class="mt-2">Blockstream Green</div>
</a>
<a href="https://www.wasabiwallet.io/" target="_blank" class="d-inline-block mr-3 mb-3 text-center">
<img src="~/img/wasabi.png" width="100" height="100" asp-append-version="true" alt="Wasabi Wallet" />
<div class="mt-2">Wasabi Wallet</div>
</a>
</div>
</div>
<div class="form-group">
<h5>QR Code connection</h5>
<p>
<span>You can use QR Code to connect to @Model.WalletName with compatible wallets.<br /></span>
</p>
</div>
<h4 class="mt-5 mb-3">QR Code connection</h4>
<p>You can use QR Code to connect to @Model.WalletName with compatible wallets.</p>
<div class="form-group">
@if (!Model.ShowQR)
{
@@ -90,7 +70,7 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
@if (Model.ShowQR)
{

View File

@@ -6,7 +6,7 @@
ViewData.SetActivePageAndTitle(ServerNavPages.Policies);
}
<partial name="_StatusMessage"/>
<h2 class="mb-4">@ViewData["Title"]</h2>
@if (!ViewContext.ModelState.IsValid)
{
@@ -14,18 +14,22 @@
}
<form method="post">
<div class="form-group mb-4">
<h5>Existing User Settings</h5>
<div class="form-group mb-5">
<h4 class="mb-3">Existing User Settings</h4>
<div class="form-check my-1">
<input asp-for="AllowLightningInternalNodeForAll" type="checkbox" class="form-check-input"/>
<label asp-for="AllowLightningInternalNodeForAll" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-LightningNetwork/#how-many-users-can-use-lightning-network-in-btcpay" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-LightningNetwork/#how-many-users-can-use-lightning-network-in-btcpay" target="_blank">\
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="AllowLightningInternalNodeForAll" class="text-danger"></span>
</div>
<div class="form-check my-1">
<input asp-for="AllowHotWalletForAll" type="checkbox" class="form-check-input"/>
<label asp-for="AllowHotWalletForAll" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/CreateWallet/#requirements-to-create-wallets" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/CreateWallet/#requirements-to-create-wallets" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="AllowHotWalletForAll" class="text-danger"></span>
</div>
<div class="form-check my-1">
@@ -35,8 +39,8 @@
</div>
</div>
<div class="form-group mb-4">
<h5>New User Settings</h5>
<div class="form-group mb-5">
<h4 class="mb-3">New User Settings</h4>
<div class="form-check my-1">
@{
var emailSettings = (await _SettingsRepository.GetSettingAsync<EmailSettings>()) ?? new EmailSettings();
@@ -46,7 +50,9 @@
}
<input asp-for="RequiresConfirmedEmail" type="checkbox" class="form-check-input" disabled="@(isEmailConfigured ? null : "disabled")"/>
<label asp-for="RequiresConfirmedEmail" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-allow-registration-on-my-btcpay-server" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-allow-registration-on-my-btcpay-server" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="RequiresConfirmedEmail" class="text-danger"></span>
@if (!isEmailConfigured)
{
@@ -68,24 +74,28 @@
</div>
</div>
<div class="form-group mb-4">
<h5>Notification Settings</h5>
<div class="form-group mb-5">
<h4 class="mb-3">Notification Settings</h4>
<div class="form-check my-1">
<input asp-for="DisableInstantNotifications" type="checkbox" class="form-check-input"/>
<label asp-for="DisableInstantNotifications" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/Notifications/#notifications" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/Notifications/#notifications" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="DisableInstantNotifications" class="text-danger"></span>
</div>
<div class="form-check my-1">
<input asp-for="DisableStoresToUseServerEmailSettings" type="checkbox" class="form-check-input"/>
<label asp-for="DisableStoresToUseServerEmailSettings" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/Notifications/#server-emails" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/Notifications/#server-emails" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="DisableStoresToUseServerEmailSettings" class="text-danger"></span>
</div>
</div>
<div class="form-group mb-4">
<h5>Maintenance Settings</h5>
<div class="form-group mb-5">
<h4 class="mb-3">Maintenance Settings</h4>
@if (ViewBag.UpdateUrlPresent)
{
<div class="form-check my-1">
@@ -97,12 +107,14 @@
<div class="form-check my-1">
<input asp-for="DiscourageSearchEngines" type="checkbox" class="form-check-input"/>
<label asp-for="DiscourageSearchEngines" class="form-check-label"></label>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-hide-my-btcpay-server-from-search-engines" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/FAQ/FAQ-ServerSettings/#how-to-hide-my-btcpay-server-from-search-engines" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<span asp-validation-for="DiscourageSearchEngines" class="text-danger"></span>
</div>
</div>
<h5>Customization Settings</h5>
<h4 class="mb-3">Customization Settings</h4>
<div class="form-group">
<label asp-for="RootAppId"></label>

View File

@@ -1,11 +1,9 @@
@model LightningWalletServices
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, Model.WalletName);
}
<h4>@Model.WalletName</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
@if (Model.ShowQR)
{
@@ -18,49 +16,31 @@
</div>
}
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<h5>Full node connection</h5>
<p>
<span>This page exposes information to connect remotely to your full node via the RPC protocol.</span>
</p>
</div>
<div class="form-group">
<h5>Compatible wallets</h5>
</div>
<div class="row">
<div class="col-lg-3 ml-auto text-center">
<a href="https://apps.apple.com/us/app/fully-noded/id1436425586" target="_blank">
<img src="~/img/fullynoded.png" height="100" asp-append-version="true" />
</a>
<p><a href="https://apps.apple.com/us/app/fully-noded/id1436425586" target="_blank">Fully Noded</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
<a href="https://github.com/cryptoadvance/specter-desktop" target="_blank">
<img src="~/img/Specter.png" height="100" asp-append-version="true" />
</a>
<p><a href="https://github.com/cryptoadvance/specter-desktop" target="_blank">Specter</a></p>
</div>
<div class="col-lg-3 mr-auto text-center">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
</div>
<div class="col-lg-3 mr-auto text-center">
<h4 class="mb-3">Full node connection</h4>
<p>This page exposes information to connect remotely to your full node via the RPC protocol.</p>
<h4 class="mb-3">Compatible wallets</h4>
<div>
<a href="https://apps.apple.com/us/app/fully-noded/id1436425586" target="_blank" class="d-inline-block mr-3 text-center">
<img src="~/img/fullynoded.png" width="100" height="100" asp-append-version="true" alt="Fully Noded" />
<div class="mt-2">Fully Noded</div>
</a>
<a href="https://github.com/cryptoadvance/specter-desktop" target="_blank" class="d-inline-block mr-3 text-center">
<img src="~/img/specter.png" width="100" height="100" asp-append-version="true" alt="Specter Desktop" />
<div class="mt-2">Specter Desktop</div>
</a>
</div>
</div>
<div class="form-group">
<h5>QR Code connection</h5>
<p>
<span>You can use QR Code to connect to @Model.WalletName with compatible wallets.<br /></span>
</p>
</div>
<h4 class="mt-5 mb-3">QR Code connection</h4>
<p>You can use QR Code to connect to @Model.WalletName with compatible wallets.</p>
<div class="form-group">
@if (!Model.ShowQR)
{
@@ -90,7 +70,7 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
@if (Model.ShowQR)
{

View File

@@ -1,19 +1,11 @@
@model BTCPayServer.Models.ServerViewModels.SSHServiceViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "SSH settings");
}
<h4>SSH settings</h4>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<p>
@@ -21,6 +13,10 @@
</p>
</div>
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<div class="form-group">

View File

@@ -1,20 +1,13 @@
@model BTCPayServer.Models.ServerViewModels.ServicesViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Services");
}
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-9 col-xl-8">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h4>Crypto services exposed by your server</h4>
<h4 class="mb-3">Crypto services exposed by your server</h4>
<table class="table table-sm mt-2">
<thead>
<tr>
@@ -50,7 +43,7 @@
{
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h4>Other external services</h4>
<h4 class="mb-3">Other external services</h4>
<table class="table table-sm mt-2">
<thead>
@@ -88,7 +81,7 @@
{
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h4>HTTP-based TOR hidden services</h4>
<h4 class="mb-3">HTTP-based TOR hidden services</h4>
<table class="table table-sm mt-2">
<thead>
@@ -117,7 +110,7 @@
{
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h4>Other TOR hidden services</h4>
<h4 class="mb-3">Other TOR hidden services</h4>
<table class="table table-sm mt-2">
<thead>
@@ -143,7 +136,7 @@
}
<div class="row mb-5">
<div class="col-lg-9 col-xl-8">
<h4>External storage services</h4>
<h4 class="mb-3">External storage services</h4>
<p class="text-secondary mb-0">Integrated storage providers to store file uploads from BTCPay Server.</p>
<table class="table table-sm mt-2">
@@ -169,5 +162,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,35 +1,34 @@
@using BTCPayServer.Storage.Models
@model BTCPayServer.Storage.ViewModels.ChooseStorageViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Services);
ViewData.SetActivePageAndTitle(ServerNavPages.Services, "Storage");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<partial name="_StatusMessage" />
@if (Model.ShowChangeWarning)
{
<div class="alert alert-danger">
If you change your configured storage provider, your current files will become inaccessible.
</div>
}
<div class="row">
<div class="col-lg-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<form method="post">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<label asp-for="Provider"></label>
<select asp-for="Provider" asp-items="@Html.GetEnumSelectList<StorageProvider>()" class="form-control"></select>
</div>
<button type="submit" class="btn btn-primary" name="command" value="Save">Next</button>
</form>
</div>
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,20 +1,19 @@
@model BTCPayServer.Services.ThemeSettings
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Theme);
ViewData.SetActivePageAndTitle(ServerNavPages.Theme, "Theme");
}
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row">
<div class="col-lg-6">
<form method="post">
<h4>Custom theme</h4>
<h4 class="mb-3">Custom theme</h4>
<p>Select one of our predefined themes. Optionally you can also provide a CSS file that customizes the chosen theme.</p>
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<label asp-for="ThemeCssUri"></label>
<select asp-for="ThemeCssUri" class="form-control">
@@ -27,14 +26,19 @@
</div>
<div class="form-group mb-5">
<label asp-for="CustomThemeCssUri"></label>
<a href="https://docs.btcpayserver.org/Theme/#1-custom-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<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>
<input asp-for="CustomThemeCssUri" class="form-control" />
<span asp-validation-for="CustomThemeCssUri" class="text-danger"></span>
</div>
<h4>Bootstrap theme</h4>
<h4 class="mb-3">Bootstrap theme</h4>
<div class="form-group">
<label asp-for="BootstrapCssUri"></label>
<a href="https://docs.btcpayserver.org/Theme/#2-bootstrap-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<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>
<input asp-for="BootstrapCssUri" class="form-control" />
<span asp-validation-for="BootstrapCssUri" class="text-danger"></span>
<p class="form-text text-muted">
@@ -51,11 +55,12 @@
is used on top of Bootstrap
</p>
</div>
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
</form>
</div>
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,21 +1,16 @@
@model UsersViewModel.UserViewModel
@{
ViewData.SetActivePageAndTitle(ServerNavPages.Users);
ViewData.SetActivePageAndTitle(ServerNavPages.Users, Model.Email);
}
<h4>Modify User - @Model.Email</h4>
<partial name="_StatusMessage" />
<h2 class="mb-4">@ViewData["PageTitle"]</h2>
<div class="row">
<div class="col-md-8">
<form method="post">
<div class="form-group">
<div class="form-check">
<input asp-for="IsAdmin" type="checkbox" class="form-check-input" />
<label asp-for="IsAdmin" class="form-check-label"></label>
</div>
<label asp-for="IsAdmin">Is admin</label>
<input asp-for="IsAdmin" type="checkbox" class="btcpay-toggle ml-2"/>
</div>
<button name="command" type="submit" class="btn btn-primary" value="Save">Save</button>
</form>

View File

@@ -1,6 +1,6 @@
@using BTCPayServer.Configuration
@inject BTCPayServerOptions BTCPayServerOptions
<div class="nav flex-column nav-pills mb-4">
<div class="nav flex-column mb-4">
<a asp-controller="Server" id="Server-@ServerNavPages.Users" class="nav-link @ViewData.IsActivePage(ServerNavPages.Users)" asp-action="ListUsers">Users</a>
<a asp-controller="Server" id="Server-@ServerNavPages.Emails" class="nav-link @ViewData.IsActivePage(ServerNavPages.Emails)" asp-action="Emails">Email server</a>
<a asp-controller="Server" id="Server-@ServerNavPages.Policies" class="nav-link @ViewData.IsActivePage(ServerNavPages.Policies)" asp-action="Policies">Policies</a>

View File

@@ -2,6 +2,6 @@
@using BTCPayServer.Views.Server
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewBag.MainTitle = "Server settings";
ViewBag.CategoryTitle = "Server settings";
ViewData.SetActiveCategory(typeof(ServerNavPages));
}

View File

@@ -11,7 +11,7 @@
<partial name="Header" />
</head>
<body class="bg-light">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-dialog modal-dialog-centered min-vh-100">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title w-100 text-center">@Model.Title</h4>

View File

@@ -1,17 +1,12 @@
@model BTCPayServer.Models.ServerViewModels.EmailsViewModel
<partial name="_StatusMessage" />
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
<div class="row row-quick-fill" style="display: none">
<div class="col-sm-6">
<div class="dropdown quick-fill">
<div class="col-lg-6">
<div class="d-flex align-items-center justify-content-between mb-4">
<h2 class="mb-0">@ViewData["Title"]</h2>
<div class="dropdown quick-fill" style="display: none">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Quick fill settings for...
</button>
@@ -23,45 +18,17 @@
<a class="dropdown-item" href="" data-Server="smtp.sendgrid.net" data-Port="587" data-EnableSSL="true">SendGrid</a>
</div>
</div>
<p></p>
</div>
</div>
<script>
$(document).ready(function () {
$('.row-quick-fill').show();
$('.dropdown.quick-fill a').click(function (e) {
e.preventDefault();
var aNode = $(this);
var data = aNode.data();
for (var key in data) {
var value = data[key];
var inputNodes = $('input[name*="Settings.' + key + '" i]');
if (inputNodes.length) {
inputNodes.each(function (i, input) {
input = $(input);
var type = input.attr('type');
if (type === 'checkbox') {
input.prop('checked', value);
} else {
input.val(value);
}
});
}
}
});
});
</script>
</div>
<form method="post" autocomplete="off">
<div class="row">
<div class="col-md-6">
<div class="col-lg-6">
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
<div class="form-group">
<label asp-for="Settings.Server"></label>
<input asp-for="Settings.Server" class="form-control"/>
@@ -143,6 +110,33 @@
</div>
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<script>
$(document).ready(function () {
$('.dropdown.quick-fill').show();
$('.dropdown.quick-fill a').click(function (e) {
e.preventDefault();
var aNode = $(this);
var data = aNode.data();
for (var key in data) {
var value = data[key];
var inputNodes = $('input[name*="Settings.' + key + '" i]');
if (inputNodes.length) {
inputNodes.each(function (i, input) {
input = $(input);
var type = input.attr('type');
if (type === 'checkbox') {
input.prop('checked', value);
} else {
input.val(value);
}
});
}
}
});
});
</script>

View File

@@ -24,7 +24,7 @@
<input type="hidden" name="@o.Key" value="@o.Value"/>
}
<noscript>
<div class="modal-dialog modal-dialog-centered">
<div class="modal-dialog modal-dialog-centered min-vh-100">
<div class="modal-content">
<div class="modal-body text-center my-3">
<p>

View File

@@ -13,15 +13,12 @@
<!DOCTYPE html>
<html lang="en"@(Env.IsDeveloping ? " data-devenv" : "")>
<head>
<partial name="Header" />
@await RenderSectionAsync("HeadScripts", false)
@await RenderSectionAsync("HeaderContent", false)
</head>
<body id="page-top">
@{
if (ViewBag.AlwaysShrinkNavBar == null)
{
@@ -29,7 +26,6 @@
}
var additionalStyle = ViewBag.AlwaysShrinkNavBar ? "navbar-shrink always-shrinked" : "";
}
<!-- Navigation -->
<nav class="navbar navbar-expand-lg fixed-top @additionalStyle" id="mainNav">
<div class="container px-sm-3">
@@ -133,5 +129,4 @@
}
</script>
</body>
</html>

View File

@@ -1,44 +1,57 @@
@{
Layout = "/Views/Shared/_Layout.cshtml";
ViewBag.ShowMenu = ViewBag.ShowMenu ?? true;
ViewBag.ShowMainTitle = ViewBag.ShowMainTitle ?? true;
ViewBag.ShowBreadcrumb = ViewBag.ShowBreadcrumb ?? false;
if (!ViewData.ContainsKey("NavPartialName"))
{
ViewData["NavPartialName"] = "_Nav";
}
var title = $"{(ViewData.ContainsKey("MainTitle") ? $"{ViewData["MainTitle"]}:" : String.Empty)} {ViewData["Title"]}";
}
<section>
<div class="container">
@if (ViewBag.ShowBreadcrumb)
{
<nav aria-label="breadcrumb" class="mt-n3 mb-4">
<ol class="breadcrumb px-0">
@if (!string.IsNullOrEmpty(ViewData["CategoryTitle"] as string))
{
<li class="breadcrumb-item" aria-current="page">@ViewData["CategoryTitle"]</li>
}
@if (!string.IsNullOrEmpty(ViewData["MainTitle"] as string))
{
<li class="breadcrumb-item" aria-current="page">@ViewData["MainTitle"]</li>
}
@if (!string.IsNullOrEmpty(ViewData["PageTitle"] as string))
{
<li class="breadcrumb-item" aria-current="page">@ViewData["PageTitle"]</li>
}
</ol>
</nav>
}
else if (!string.IsNullOrEmpty(ViewData["MainTitle"] as string))
{
<h2 class="mb-5">@ViewData["MainTitle"]</h2>
}
<div class="row">
<div class="col-lg-12 section-heading">
@if (ViewBag.ShowMenu)
{
<h2>@title</h2>
<hr class="primary ml-0">
<div class="col-md-3 ml-n3 ml-md-0">
<partial name="@ViewData["NavPartialName"].ToString()" />
</div>
}
</div>
</div>
<div>
<div class="row">
<div class="col-md-3">
@if (ViewBag.ShowMenu)
{
@await Html.PartialAsync(ViewData["NavPartialName"].ToString())
}
</div>
<div class="col-md-9">
<partial name="_StatusMessage" />
@RenderBody()
</div>
</div>
</div>
</div>
</section>
@section HeadScripts {
@RenderSection("HeadScripts", required: false)
}
@section Scripts {
@RenderSection("Scripts", required: false)
@section HeadScripts {
@await RenderSectionAsync("HeadScripts", false)
}
@section Scripts {
@await RenderSectionAsync("Scripts", false)
}

View File

@@ -14,9 +14,11 @@
<form method="post" id="shopifyForm">
<h4 class="mb-3">
Shopify
<small>
<a href="https://docs.btcpayserver.org/Shopify" target="_blank">
<span class="fa fa-question-circle-o" title="More information..."></span>
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
</small>
</h4>
@if (!shopifyCredsSet)
{

View File

@@ -1,12 +1,12 @@
@model LightningNodeViewModel
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.Index, "Add lightning node");
ViewData.SetActivePageAndTitle(StoreNavPages.Index, "Lightning node settings", Context.GetStoreData().StoreName);
}
<partial name="_StatusMessage" />
<h4 class="mb-3">@ViewData["PageTitle"]</h4>
<div class="alert alert-warning alert-dismissible mb-5" role="alert">
<div class="alert alert-warning alert-dismissible my-4" role="alert">
<p class="mb-0">
Please understand that the Lightning Network is still under active development and considered experimental.
Before you proceed, take time to familiarize yourself with the risks.
@@ -122,5 +122,5 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -2,23 +2,16 @@
@model CheckoutExperienceViewModel
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.Checkout, "Checkout experience");
ViewData.SetActivePageAndTitle(StoreNavPages.Checkout, "Checkout experience", Context.GetStoreData().StoreName);
}
<partial name="_StatusMessage" />
<div class="row">
<div class="col-lg-8">
<form method="post">
@if (!ViewContext.ModelState.IsValid)
{
<div class="row">
<div class="col-md-6">
<div asp-validation-summary="All" class="text-danger"></div>
</div>
</div>
}
<div class="row">
<div class="col-md-8">
<form method="post">
<h4 class="mb-3">Payment</h4>
@if (Model.PaymentMethods.Any())
{
@@ -117,13 +110,17 @@
</div>
<div class="form-group">
<label asp-for="CustomLogo"></label>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<input asp-for="CustomLogo" class="form-control"/>
<span asp-validation-for="CustomLogo" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CustomCSS"></label>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank"><span class="fa fa-question-circle-o" title="More information..."></span></a>
<a href="https://docs.btcpayserver.org/Theme/#checkout-page-themes" target="_blank">
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
</a>
<input asp-for="CustomCSS" class="form-control"/>
<span asp-validation-for="CustomCSS" class="text-danger"></span>
<p class="form-text text-muted">
@@ -151,5 +148,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -1,14 +1,14 @@
@model CreateTokenViewModel
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.Tokens, "Create a new token");
ViewData.SetActivePageAndTitle(StoreNavPages.Tokens, "Create a new token", Context.GetStoreData()?.StoreName);
ViewBag.HidePublicKey = ViewBag.HidePublicKey ?? false;
ViewBag.ShowStores = ViewBag.ShowStores ?? false;
}
<div class="row">
<div class="col-md-6">
<div class="col-lg-6">
<h4 class="mb-4">@ViewData["PageTitle"]</h4>
<form method="post">
<div class="form-group">
<label asp-for="Label"></label>

View File

@@ -1,8 +1,11 @@
@model BTCPayServer.Models.ServerViewModels.EmailsViewModel
@{
Layout = "../Shared/_NavLayout.cshtml";
ViewData.SetActivePageAndTitle(StoreNavPages.Index, "Update Store Email Settings");
ViewData.SetActivePageAndTitle(StoreNavPages.Index, "Email Settings", Context.GetStoreData().StoreName);
}
<partial name="EmailsBody" model="Model" />
<partial name="EmailsBody" model="@Model"/>
@section Scripts {
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -4,7 +4,7 @@
var isHotWallet = Model.Method == WalletSetupMethod.HotWallet;
var type = isHotWallet ? "Hot" : "Watch-Only";
Layout = "_LayoutWalletSetup";
ViewData["Title"] = $"Create {Model.CryptoCode} {type} Wallet";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, $"Create {Model.CryptoCode} {type} Wallet", Context.GetStoreData().StoreName);
ViewData.Add(nameof(Model.CanUseHotWallet), Model.CanUseHotWallet);
ViewData.Add(nameof(Model.CanUseRPCImport), Model.CanUseRPCImport);
ViewData.Add(nameof(Model.Method), Model.Method);
@@ -18,9 +18,8 @@
<h1 class="text-center">@ViewData["Title"]</h1>
<br>
@await Html.PartialAsync("_GenerateWalletForm", Model.SetupRequest)
<partial name="_GenerateWalletForm" model="Model.SetupRequest" />
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = $"Generate {Model.CryptoCode} Wallet";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, $"Generate {Model.CryptoCode} Wallet", Context.GetStoreData().StoreName);
}
@section Navbar {

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = "Confirm addresses";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, "Confirm addresses", Context.GetStoreData().StoreName);
}
@section Navbar {
@@ -104,8 +104,8 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
@await Html.PartialAsync("VaultElements")
<partial name="_ValidationScriptsPartial" />
<partial name="VaultElements" />
<script src="~/js/vaultbridge.js" type="text/javascript" defer asp-append-version="true"></script>
<script src="~/js/vaultbridge.ui.js" type="text/javascript" defer asp-append-version="true"></script>

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = "Import your wallet file";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, "Import your wallet file", Context.GetStoreData().StoreName);
}
@section Navbar {

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = "Connect your hardware wallet";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, "Connect your hardware wallet", Context.GetStoreData().StoreName);
}
@section Navbar {
@@ -79,8 +79,8 @@
</form>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
@await Html.PartialAsync("VaultElements")
<partial name="_ValidationScriptsPartial" />
<partial name="VaultElements" />
<script src="~/js/vaultbridge.js" defer asp-append-version="true"></script>
<script src="~/js/vaultbridge.ui.js" defer asp-append-version="true"></script>

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = "Scan QR code";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, "Scan QR code", Context.GetStoreData().StoreName);
}
@section Navbar {
@@ -58,7 +58,7 @@
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
<bundle name="wwwroot/bundles/camera-bundle.min.js"></bundle>
<link href="~/vendor/vue-qrcode-reader/vue-qrcode-reader.css" rel="stylesheet" asp-append-version="true"/>

View File

@@ -2,7 +2,7 @@
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWalletSetup";
ViewData["Title"] = "Enter the wallet seed";
ViewData.SetActivePageAndTitle(StoreNavPages.Wallet, "Enter the wallet seed", Context.GetStoreData().StoreName);
}
@section Navbar {
@@ -23,7 +23,7 @@
ViewData.Add(nameof(Model.CanUseRPCImport), Model.CanUseRPCImport);
ViewData.Add(nameof(Model.Method), Model.Method);
@await Html.PartialAsync("_GenerateWalletForm", Model.SetupRequest)
<partial name="_GenerateWalletForm" model="Model.SetupRequest" />
}
else
{
@@ -32,5 +32,5 @@
</div>
@section Scripts {
@await Html.PartialAsync("_ValidationScriptsPartial")
<partial name="_ValidationScriptsPartial" />
}

Some files were not shown because too many files have changed in this diff Show More