mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-11 01:35:22 +01:00
Content Consistency Updates (1.4.0) (#3316)
* updates * updates * updates * updates * updates * moves api key CTA to top right * updates * more updates * more updates * Fix active state when "Account" is selected * Update wording in subnav: Profile becomes Account * Fix email test * Update Emails wording * Try to fix email test * Make General first tab in store settings Co-authored-by: Dennis Reimann <mail@dennisreimann.de>
This commit is contained in:
parent
1fc2fc7a11
commit
c3f73c0de3
64 changed files with 220 additions and 214 deletions
|
@ -16,6 +16,7 @@ using BTCPayServer.Payments.Lightning;
|
|||
using BTCPayServer.Services.Apps;
|
||||
using BTCPayServer.Services.Invoices;
|
||||
using BTCPayServer.Tests.Logging;
|
||||
using BTCPayServer.Views.Stores;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NBitcoin;
|
||||
using NBitcoin.Scripting.Parser;
|
||||
|
@ -429,7 +430,7 @@ namespace BTCPayServer.Tests
|
|||
s.GoToInvoiceCheckout(invoiceId);
|
||||
s.Driver.FindElement(By.ClassName("payment__currencies_noborder"));
|
||||
s.GoToHome();
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
s.AddDerivationScheme("LTC");
|
||||
s.AddLightningNode(LightningConnectionType.CLightning);
|
||||
//there should be three now
|
||||
|
|
|
@ -186,8 +186,7 @@ namespace BTCPayServer.Tests
|
|||
s.RegisterNewUser(true);
|
||||
s.CreateNewStore();
|
||||
s.AddLightningNode();
|
||||
s.GoToStore();
|
||||
s.Driver.FindElement(By.Id("Modify-LightningBTC")).Click();
|
||||
s.GoToLightningSettings();
|
||||
s.Driver.SetCheckbox(By.Id("LightningAmountInSatoshi"), true);
|
||||
s.Driver.FindElement(By.Id("save")).Click();
|
||||
Assert.Contains("BTC Lightning settings successfully updated", s.FindAlertMessage().Text);
|
||||
|
@ -205,7 +204,7 @@ namespace BTCPayServer.Tests
|
|||
s.GoToRegister();
|
||||
s.RegisterNewUser();
|
||||
s.CreateNewStore();
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
s.AddDerivationScheme();
|
||||
var invoiceId = s.CreateInvoice(0.001m, "BTC", "a@x.com");
|
||||
var invoice = await s.Server.PayTester.InvoiceRepository.GetInvoice(invoiceId);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
@ -152,7 +153,7 @@ namespace BTCPayServer.Tests
|
|||
Driver.WaitForElement(By.Id("Name")).SendKeys(name);
|
||||
Driver.WaitForElement(By.Id("Create")).Click();
|
||||
Driver.FindElement(By.Id("StoreNav-StoreSettings")).Click();
|
||||
Driver.FindElement(By.Id($"SectionNav-{StoreNavPages.GeneralSettings.ToString()}")).Click();
|
||||
Driver.FindElement(By.Id($"SectionNav-{StoreNavPages.General.ToString()}")).Click();
|
||||
var storeId = Driver.WaitForElement(By.Id("Id")).GetAttribute("value");
|
||||
Driver.FindElement(By.Id($"SectionNav-{StoreNavPages.PaymentMethods.ToString()}")).Click();
|
||||
if (keepId)
|
||||
|
@ -360,37 +361,40 @@ namespace BTCPayServer.Tests
|
|||
Driver.FindElement(By.Id("LoginButton")).Click();
|
||||
}
|
||||
|
||||
public void GoToStore(StoreNavPages storeNavPage = StoreNavPages.PaymentMethods)
|
||||
public void GoToStore(StoreNavPages storeNavPage = StoreNavPages.General)
|
||||
{
|
||||
GoToStore(null, storeNavPage);
|
||||
}
|
||||
|
||||
public void GoToStore(string storeId, StoreNavPages storeNavPage = StoreNavPages.PaymentMethods)
|
||||
public void GoToStore(string storeId, StoreNavPages storeNavPage = StoreNavPages.General)
|
||||
{
|
||||
if (storeId is not null)
|
||||
GoToUrl($"/stores/{storeId}/");
|
||||
|
||||
Driver.FindElement(By.Id("StoreNav-StoreSettings")).Click();
|
||||
|
||||
if (storeNavPage != StoreNavPages.PaymentMethods)
|
||||
if (storeNavPage != StoreNavPages.General)
|
||||
{
|
||||
// FIXME: Review and optimize this once we decided on where which items belong
|
||||
try
|
||||
switch (storeNavPage)
|
||||
{
|
||||
Driver.FindElement(By.Id($"StoreNav-{storeNavPage.ToString()}")).Click();
|
||||
}
|
||||
catch (NoSuchElementException)
|
||||
{
|
||||
Driver.FindElement(By.Id($"SectionNav-{storeNavPage.ToString()}")).Click();
|
||||
case StoreNavPages.Dashboard:
|
||||
case StoreNavPages.Payouts:
|
||||
case StoreNavPages.PayButton:
|
||||
case StoreNavPages.PullPayments:
|
||||
Driver.FindElement(By.Id($"StoreNav-{storeNavPage.ToString()}")).Click();
|
||||
break;
|
||||
default:
|
||||
Driver.FindElement(By.Id($"SectionNav-{storeNavPage.ToString()}")).Click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void GoToWalletSettings(string storeId, string cryptoCode = "BTC")
|
||||
{
|
||||
try
|
||||
{
|
||||
GoToStore(storeId);
|
||||
GoToStore(storeId, StoreNavPages.PaymentMethods);
|
||||
Driver.FindElement(By.Id($"Modify{cryptoCode}")).Click();
|
||||
}
|
||||
catch (NoSuchElementException)
|
||||
|
@ -401,7 +405,7 @@ namespace BTCPayServer.Tests
|
|||
|
||||
public void GoToLightningSettings(string cryptoCode = "BTC")
|
||||
{
|
||||
GoToStore();
|
||||
GoToStore(StoreNavPages.PaymentMethods);
|
||||
Driver.FindElement(By.Id($"StoreNav-Lightning{cryptoCode}")).Click();
|
||||
}
|
||||
|
||||
|
|
|
@ -274,11 +274,11 @@ namespace BTCPayServer.Tests
|
|||
{
|
||||
using var s = CreateSeleniumTester();
|
||||
await s.StartAsync();
|
||||
s.RegisterNewUser(isAdmin: true);
|
||||
s.RegisterNewUser(true);
|
||||
s.Driver.Navigate().GoToUrl(s.Link("/server/emails"));
|
||||
if (s.Driver.PageSource.Contains("Configured"))
|
||||
{
|
||||
s.Driver.FindElement(By.CssSelector("button[value=\"ResetPassword\"]")).Submit();
|
||||
s.Driver.FindElement(By.Id("ResetPassword")).Submit();
|
||||
s.FindAlertMessage();
|
||||
}
|
||||
CanSetupEmailCore(s);
|
||||
|
@ -406,7 +406,7 @@ namespace BTCPayServer.Tests
|
|||
Assert.True(s.Driver.PageSource.Contains(onchainHint), "Wallet hint not present");
|
||||
Assert.True(s.Driver.PageSource.Contains(offchainHint), "Lightning hint not present");
|
||||
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
Assert.Contains(storeName, s.Driver.PageSource);
|
||||
Assert.True(s.Driver.PageSource.Contains(onchainHint), "Wallet hint should be present at this point");
|
||||
Assert.True(s.Driver.PageSource.Contains(offchainHint),
|
||||
|
@ -518,7 +518,7 @@ namespace BTCPayServer.Tests
|
|||
// Alice should be able to delete the store
|
||||
s.Logout();
|
||||
s.LogIn(alice);
|
||||
s.GoToStore(StoreNavPages.GeneralSettings);
|
||||
s.GoToStore(StoreNavPages.General);
|
||||
s.Driver.FindElement(By.Id("DeleteStore")).Click();
|
||||
s.Driver.WaitForElement(By.Id("ConfirmInput")).SendKeys("DELETE");
|
||||
s.Driver.FindElement(By.Id("ConfirmContinue")).Click();
|
||||
|
@ -791,7 +791,7 @@ namespace BTCPayServer.Tests
|
|||
Assert.Contains(server.ServerUri.AbsoluteUri, s.Driver.PageSource);
|
||||
|
||||
TestLogs.LogInformation("Let's see if we can generate an event");
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
s.AddDerivationScheme();
|
||||
s.CreateInvoice();
|
||||
var request = await server.GetNextRequest();
|
||||
|
@ -840,7 +840,7 @@ namespace BTCPayServer.Tests
|
|||
server.Done();
|
||||
|
||||
TestLogs.LogInformation("Let's see if we can delete store with some webhooks inside");
|
||||
s.GoToStore(StoreNavPages.GeneralSettings);
|
||||
s.GoToStore(StoreNavPages.General);
|
||||
s.Driver.FindElement(By.Id("DeleteStore")).Click();
|
||||
s.Driver.WaitForElement(By.Id("ConfirmInput")).SendKeys("DELETE");
|
||||
s.Driver.FindElement(By.Id("ConfirmContinue")).Click();
|
||||
|
@ -913,7 +913,7 @@ namespace BTCPayServer.Tests
|
|||
receiveAddr = s.Driver.FindElement(By.Id("address")).GetAttribute("value");
|
||||
|
||||
//change the wallet and ensure old address is not there and generating a new one does not result in the prev one
|
||||
s.GoToStore(storeId);
|
||||
s.GoToStore(storeId, StoreNavPages.PaymentMethods);
|
||||
s.GenerateWallet(cryptoCode, "", true);
|
||||
s.Driver.FindElement(By.Id($"StoreNav-Wallet{cryptoCode}")).Click();
|
||||
s.Driver.FindElement(By.Id("SectionNav-Receive")).Click();
|
||||
|
@ -929,7 +929,7 @@ namespace BTCPayServer.Tests
|
|||
var result =
|
||||
await s.Server.ExplorerNode.GetAddressInfoAsync(BitcoinAddress.Create(address, Network.RegTest));
|
||||
Assert.True(result.IsWatchOnly);
|
||||
s.GoToStore(storeId);
|
||||
s.GoToStore(storeId, StoreNavPages.PaymentMethods);
|
||||
var mnemonic = s.GenerateWallet(cryptoCode, "", true, true);
|
||||
|
||||
//lets import and save private keys
|
||||
|
@ -1302,7 +1302,7 @@ namespace BTCPayServer.Tests
|
|||
|
||||
s.RegisterNewUser(true);
|
||||
s.CreateNewStore();
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
s.AddLightningNode(LightningConnectionType.CLightning, false);
|
||||
s.GoToLightningSettings();
|
||||
s.Driver.SetCheckbox(By.Id("LNURLEnabled"), true);
|
||||
|
@ -1345,7 +1345,7 @@ namespace BTCPayServer.Tests
|
|||
s.RegisterNewUser(true);
|
||||
(_, string storeId) = s.CreateNewStore();
|
||||
var network = s.Server.NetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode).NBitcoinNetwork;
|
||||
s.GoToStore();
|
||||
s.GoToStore(StoreNavPages.PaymentMethods);
|
||||
s.AddLightningNode(LightningConnectionType.CLightning, false);
|
||||
s.GoToLightningSettings();
|
||||
// LNURL is false by default
|
||||
|
@ -1539,7 +1539,7 @@ namespace BTCPayServer.Tests
|
|||
//ensure ln address is not available as Lightning is not enable
|
||||
s.Driver.AssertElementNotFound(By.Id("StoreNav-LightningAddress"));
|
||||
|
||||
s.GoToStore(s.StoreId);
|
||||
s.GoToStore(s.StoreId, StoreNavPages.PaymentMethods);
|
||||
s.AddLightningNode(LightningConnectionType.LndREST, false);
|
||||
//ensure ln address is not available as lnurl is not configured
|
||||
s.Driver.AssertElementNotFound(By.Id("StoreNav-LightningAddress"));
|
||||
|
@ -1709,18 +1709,17 @@ retry:
|
|||
{
|
||||
s.Driver.FindElement(By.Id("QuickFillDropdownToggle")).Click();
|
||||
s.Driver.FindElement(By.CssSelector("#quick-fill .dropdown-menu .dropdown-item:first-child")).Click();
|
||||
|
||||
s.Driver.FindElement(By.Id("Settings_Login")).SendKeys("test@gmail.com");
|
||||
s.Driver.FindElement(By.CssSelector("button[value=\"Save\"]")).Submit();
|
||||
s.FindAlertMessage();
|
||||
s.Driver.FindElement(By.Id("Settings_Password")).SendKeys("mypassword");
|
||||
s.Driver.FindElement(By.CssSelector("button[value=\"Save\"]")).Submit();
|
||||
s.Driver.FindElement(By.Id("Save")).SendKeys(Keys.Enter);
|
||||
Assert.Contains("Configured", s.Driver.PageSource);
|
||||
s.Driver.FindElement(By.Id("Settings_Login")).SendKeys("test_fix@gmail.com");
|
||||
s.Driver.FindElement(By.CssSelector("button[value=\"Save\"]")).Submit();
|
||||
s.Driver.FindElement(By.Id("Save")).SendKeys(Keys.Enter);
|
||||
Assert.Contains("Configured", s.Driver.PageSource);
|
||||
Assert.Contains("test_fix", s.Driver.PageSource);
|
||||
s.Driver.FindElement(By.CssSelector("button[value=\"ResetPassword\"]")).Submit();
|
||||
s.Driver.FindElement(By.Id("ResetPassword")).SendKeys(Keys.Enter);
|
||||
s.FindAlertMessage();
|
||||
Assert.DoesNotContain("Configured", s.Driver.PageSource);
|
||||
Assert.Contains("test_fix", s.Driver.PageSource);
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a asp-area="" asp-controller="UIStores" asp-action="PaymentMethods" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.PaymentMethods) @ViewData.IsActivePage(StoreNavPages.Rates) @ViewData.IsActivePage(StoreNavPages.CheckoutAppearance) @ViewData.IsActivePage(StoreNavPages.GeneralSettings) @ViewData.IsActivePage(StoreNavPages.Tokens) @ViewData.IsActivePage(StoreNavPages.Users) @ViewData.IsActivePage(StoreNavPages.Integrations) @ViewData.IsActivePage(StoreNavPages.Webhooks)" id="StoreNav-StoreSettings">
|
||||
<a asp-area="" asp-controller="UIStores" asp-action="GeneralSettings" asp-route-storeId="@Model.Store.Id" class="nav-link js-scroll-trigger @ViewData.IsActivePage(StoreNavPages.PaymentMethods) @ViewData.IsActivePage(StoreNavPages.Rates) @ViewData.IsActivePage(StoreNavPages.CheckoutAppearance) @ViewData.IsActivePage(StoreNavPages.General) @ViewData.IsActivePage(StoreNavPages.Tokens) @ViewData.IsActivePage(StoreNavPages.Users) @ViewData.IsActivePage(StoreNavPages.Integrations) @ViewData.IsActivePage(StoreNavPages.Webhooks)" id="StoreNav-StoreSettings">
|
||||
<vc:icon symbol="settings"/>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
|
@ -232,7 +232,7 @@
|
|||
</a>
|
||||
</li>
|
||||
<li class="nav-item dropup">
|
||||
<a class="nav-link js-scroll-trigger" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="Nav-Account">
|
||||
<a class="nav-link js-scroll-trigger @ViewData.IsActiveCategory(typeof(ManageNavPages))" role="button" data-bs-toggle="dropdown" aria-expanded="false" id="Nav-Account">
|
||||
<vc:icon symbol="account"/>
|
||||
<span>Account</span>
|
||||
</a>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="d-flex align-items-center justify-content-between mb-4">
|
||||
<h2 class="mb-0">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-0">@ViewData["Title"]</h3>
|
||||
<div class="dropdown only-for-js" id="quick-fill">
|
||||
<button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" id="QuickFillDropdownToggle">
|
||||
Quick Fill
|
||||
|
@ -71,18 +71,18 @@
|
|||
<label asp-for="Settings.Password" class="form-label"></label>
|
||||
<div class="input-group">
|
||||
<input value="Configured" type="text" readonly class="form-control"/>
|
||||
<button type="submit" class="btn btn-danger" name="command" value="ResetPassword">Reset</button>
|
||||
<button type="submit" class="btn btn-danger" name="command" value="ResetPassword" id="ResetPassword">Reset</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<input asp-for="PasswordSet" type="hidden"/>
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Save</button>
|
||||
<button type="submit" class="btn btn-primary mt-2" name="command" value="Save" id="Save">Save</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<h4 class="mt-5 mb-3">Testing</h4>
|
||||
<h3 class="mt-5 mb-3">Testing</h3>
|
||||
<p>
|
||||
To test your settings, enter an email address below.
|
||||
</p>
|
||||
|
@ -90,7 +90,7 @@
|
|||
<input asp-for="TestEmail" class="form-control" />
|
||||
<span asp-validation-for="TestEmail" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-secondary mt-2" name="command" value="Test">Send Test Email</button>
|
||||
<button type="submit" class="btn btn-secondary mt-2" name="command" value="Test" id="Test">Send Test Email</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-6 section-heading">
|
||||
<h2>@ViewData["Title"]</h2>
|
||||
<h3>@ViewData["Title"]</h3>
|
||||
<hr class="primary">
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<div class="col account-form">
|
||||
<div class="modal-content border-0 p-3">
|
||||
<div class="modal-header align-items-center border-0 py-2">
|
||||
<h4 class="modal-title">Set Password</h4>
|
||||
<h3 class="modal-title">Set Password</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form method="post" asp-action="SetPassword">
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<div id="template-editor-app" v-cloak>
|
||||
<div class="form-group">
|
||||
<h4 class="mt-5 mb-4">@Model.title </h4>
|
||||
<h3 class="mt-5 mb-4">@Model.title </h3>
|
||||
@if (ViewContext.ViewData.ModelState.TryGetValue(Model.templateId, out var errors))
|
||||
{
|
||||
foreach (var error in errors.Errors)
|
||||
|
|
|
@ -115,7 +115,7 @@
|
|||
<textarea asp-for="PerksTemplate" rows="10" cols="40" class="js-product-template form-control"></textarea>
|
||||
<span asp-validation-for="PerksTemplate" class="text-danger"></span>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-4">Contributions</h4>
|
||||
<h3 class="mt-5 mb-4">Contributions</h3>
|
||||
<div class="form-check mb-3">
|
||||
<input asp-for="SortPerksByPopularity" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="SortPerksByPopularity" class="form-check-label"></label>
|
||||
|
@ -136,7 +136,7 @@
|
|||
<label asp-for="EnforceTargetAmount" class="form-check-label"></label>
|
||||
<span asp-validation-for="EnforceTargetAmount" class="text-danger"></span>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-4">Crowdfund Behavior</h4>
|
||||
<h3 class="mt-5 mb-4">Crowdfund Behavior</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="NotificationUrl" class="form-label"></label>
|
||||
<input asp-for="NotificationUrl" class="form-control" />
|
||||
|
@ -147,7 +147,7 @@
|
|||
<label asp-for="UseAllStoreInvoices" class="form-check-label"></label>
|
||||
<span asp-validation-for="UseAllStoreInvoices" class="text-danger"></span>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-4">Sound</h4>
|
||||
<h3 class="mt-5 mb-4">Sound</h3>
|
||||
<div class="form-group mb-3">
|
||||
<div class="d-flex align-items-center mb-3">
|
||||
<input asp-for="SoundsEnabled" type="checkbox" class="btcpay-toggle me-2" data-bs-toggle="collapse" data-bs-target="#SoundsEnabledSettings" aria-expanded="@Model.SoundsEnabled" aria-controls="SoundsEnabledSettings"/>
|
||||
|
@ -162,7 +162,7 @@
|
|||
<span asp-validation-for="Sounds" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-4">Animation</h4>
|
||||
<h3 class="mt-5 mb-4">Animation</h3>
|
||||
<div class="form-group mb-3">
|
||||
<div class="d-flex align-items-center mb-3">
|
||||
<input asp-for="AnimationsEnabled" type="checkbox" class="btcpay-toggle me-2" data-bs-toggle="collapse" data-bs-target="#AnimationsEnabledSettings" aria-expanded="@Model.AnimationsEnabled" aria-controls="AnimationsEnabledSettings"/>
|
||||
|
@ -177,7 +177,7 @@
|
|||
<span asp-validation-for="AnimationColors" class="text-danger"></span>
|
||||
</div>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-4">Discussion</h4>
|
||||
<h3 class="mt-5 mb-4">Discussion</h3>
|
||||
<div class="form-group mb-3">
|
||||
<div class="d-flex align-items-center mb-3">
|
||||
<input asp-for="DisqusEnabled" type="checkbox" class="btcpay-toggle me-2" data-bs-toggle="collapse" data-bs-target="#DisqusEnabledSettings" aria-expanded="@Model.DisqusEnabled" aria-controls="DisqusEnabledSettings"/>
|
||||
|
@ -193,7 +193,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="mt-5 mb-2">Additional Options</h4>
|
||||
<h3 class="mt-5 mb-2">Additional Options</h3>
|
||||
<div class="form-group">
|
||||
<div class="accordion" id="additional">
|
||||
<div class="accordion-item">
|
||||
|
@ -251,7 +251,7 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
<h4 class="mt-5 mb-3">Other actions</h4>
|
||||
<h3 class="mt-5 mb-4">Other Actions</h3>
|
||||
<div id="danger-zone">
|
||||
<a id="DeleteApp" class="btn btn-outline-danger mb-5" asp-action="DeleteApp" asp-route-appId="@Model.AppId" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-description="The app <strong>@Model.AppName</strong> and its settings will be permanently deleted." data-confirm-input="DELETE">Delete this app</a>
|
||||
</div>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<h4 class="mt-5 mb-4">Appearance</h4>
|
||||
<h3 class="mt-5 mb-4">Appearance</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="DefaultView" class="form-label" data-required></label>
|
||||
<select asp-for="DefaultView" asp-items="@Html.GetEnumSelectList<PosViewType>()" class="form-select" required></select>
|
||||
|
@ -67,7 +67,7 @@
|
|||
<span asp-validation-for="RequiresRefundEmail" class="text-danger"></span>
|
||||
</div>
|
||||
<section id="discounts" class="p-0">
|
||||
<h4 class="mt-5 mb-4">Discounts</h4>
|
||||
<h3 class="mt-5 mb-4">Discounts</h3>
|
||||
<div class="form-check mb-4">
|
||||
<input asp-for="ShowDiscount" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="ShowDiscount" class="form-check-label"></label>
|
||||
|
@ -78,7 +78,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<section id="custom-payments" class="p-0">
|
||||
<h4 class="mt-5 mb-4">Custom Payments</h4>
|
||||
<h3 class="mt-5 mb-4">Custom Payments</h3>
|
||||
<div class="form-group mb-4 d-flex align-items-center">
|
||||
<input asp-for="ShowCustomAmount" type="checkbox" class="btcpay-toggle me-2" data-bs-toggle="collapse" data-bs-target="#CustomAmountSettings" aria-expanded="@Model.ShowCustomAmount" aria-controls="CustomAmountSettings"/>
|
||||
<label asp-for="ShowCustomAmount" class="form-label mb-0"></label>
|
||||
|
@ -93,7 +93,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<section id="tips" class="p-0">
|
||||
<h4 class="mt-5 mb-4">Tips</h4>
|
||||
<h3 class="mt-5 mb-4">Tips</h3>
|
||||
<div class="form-group mb-4 d-flex align-items-center">
|
||||
<input asp-for="EnableTips" type="checkbox" class="btcpay-toggle me-2" data-bs-toggle="collapse" data-bs-target="#CustomTipsSettings" aria-expanded="@Model.EnableTips" aria-controls="CustomTipsSettings" />
|
||||
<label asp-for="EnableTips" class="form-label mb-0"></label>
|
||||
|
@ -114,7 +114,7 @@
|
|||
</section>
|
||||
</div>
|
||||
<div class="col-lg-9">
|
||||
<h4 class="mt-5 mb-2">Additional Options</h4>
|
||||
<h3 class="mt-5 mb-2">Additional Options</h3>
|
||||
<div class="form-group">
|
||||
<div class="accordion" id="additional">
|
||||
<div class="accordion-item">
|
||||
|
@ -252,7 +252,7 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
<h4 class="mt-5 mb-3">Other actions</h4>
|
||||
<h3 class="mt-5 mb-4">Other Actions</h3>
|
||||
<div id="danger-zone">
|
||||
<a id="DeleteApp" class="btn btn-outline-danger mb-5" asp-action="DeleteApp" asp-route-appId="@Model.Id" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-description="The app <strong>@Model.AppName</strong> and its settings will be permanently deleted." data-confirm-input="DELETE">Delete this app</a>
|
||||
</div>
|
||||
|
|
|
@ -3,16 +3,19 @@
|
|||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.APIKeys, "API Keys");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<div class="d-flex align-items-center justify-content-between mb-3">
|
||||
<h3 class="mb-0">@ViewData["Title"]</h3>
|
||||
<a class="btn btn-primary" asp-action="AddApiKey" id="AddApiKey">
|
||||
<span class="fa fa-plus"></span>
|
||||
Generate Key
|
||||
</a>
|
||||
</div>
|
||||
<p>
|
||||
The <a asp-controller="UIHome" asp-action="SwaggerDocs" target="_blank">BTCPay Server Greenfield API</a> offers programmatic access to your instance. You can manage your BTCPay
|
||||
Server (e.g. stores, invoices, users) as well as automate workflows and integrations (see <a href="https://docs.btcpayserver.org/Development/GreenFieldExample/" rel="noreferrer noopener">use case examples</a>).
|
||||
For that you need the API keys, which can be generated here. Find more information in the <a href="@Url.Action("SwaggerDocs", "UIHome")#section/Authentication" target="_blank" rel="noreferrer noopener">API authentication docs</a>.
|
||||
</p>
|
||||
<a class="btn btn-primary" asp-action="AddApiKey" id="AddApiKey">
|
||||
<span class="fa fa-plus"></span>
|
||||
Generate Key
|
||||
</a>
|
||||
|
||||
@if (Model.ApiKeyDatas.Any())
|
||||
{
|
||||
<table class="table table-lg">
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
</script>
|
||||
}
|
||||
|
||||
<h2 class="mb-3">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
|
||||
<p>Generate a new api key to use BTCPay through its API.</p>
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
<
|
||||
<div class="row">
|
||||
<div class="col-lg-12 section-heading">
|
||||
<h2>Authorization Request</h2>
|
||||
<h3>Authorization Request</h3>
|
||||
<p class="my-3">@(Model.ApplicationName ?? "An application") is requesting access to your account.</p>
|
||||
@if (Model.RedirectUrl != null)
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.ChangePassword, "Change your password");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
@if (!ViewContext.ModelState.IsValid)
|
||||
|
@ -20,12 +20,12 @@
|
|||
<input asp-for="NewPassword" class="form-control"/>
|
||||
<span asp-validation-for="NewPassword" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group mb-4">
|
||||
<div class="form-group">
|
||||
<label asp-for="ConfirmPassword" class="form-label" data-required></label>
|
||||
<input asp-for="ConfirmPassword" class="form-control"/>
|
||||
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" id="UpdatePassword">Update Password</button>
|
||||
<button type="submit" class="btn btn-primary mt-2" id="UpdatePassword">Update Password</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<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>
|
||||
<h3 class="modal-title w-100 text-center">@ViewData["Title"]</h3>
|
||||
</div>
|
||||
|
||||
<div class="modal-body text-center">
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
}
|
||||
|
||||
<div>
|
||||
<p>To use an authenticator app go through the following steps:</p>
|
||||
<h3>Enable Authenticator</h3>
|
||||
<p class="my-3">To use an authenticator app go through the following steps:</p>
|
||||
<ol class="list">
|
||||
<li class="mb-5">
|
||||
<div class="mb-2">Download a two-factor authenticator app like …</div>
|
||||
|
@ -46,7 +47,7 @@
|
|||
<input asp-for="Code" class="form-control" autocomplete="off" />
|
||||
<span asp-validation-for="Code" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Verify</button>
|
||||
<button type="submit" class="btn btn-primary mt-2">Verify</button>
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.Index, "Update your account");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
<form method="post">
|
||||
@if (!ViewContext.ModelState.IsValid)
|
||||
{
|
||||
|
@ -35,7 +35,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<button type="submit" id="save" class="btn btn-primary">Save</button>
|
||||
<h4 class="mt-5 mb-3">Delete Account</h4>
|
||||
<h3 class="mt-5 mb-4">Delete Account</h3>
|
||||
<div id="danger-zone">
|
||||
<a id="delete-user" class="btn btn-outline-danger mb-5" data-confirm-input="DELETE" data-bs-toggle="modal" data-bs-target="#ConfirmModal" asp-action="DeleteUserPost" data-description="This action will also delete all stores, invoices, apps and data associated with the user.">Delete Account</a>
|
||||
</div>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
@model string
|
||||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.LoginCodes, "Login codes");
|
||||
ViewData.SetActivePage(ManageNavPages.LoginCodes, "Login Codes");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
<p>Easily log into BTCPay Server on another device using a simple login code from an already authenticated device.</p>
|
||||
<div class="d-inline-flex flex-column qr-container" style="width:256px">
|
||||
<vc:qr-code data="@Model" />
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.Notifications, "Notification Settings");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
|
||||
<form method="post" asp-action="NotificationSettings">
|
||||
@if (Model.All)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ManageNavPages.ChangePassword, "Set password");
|
||||
}
|
||||
|
||||
<h4>Set your password</h4>
|
||||
<h3>Set your password</h3>
|
||||
|
||||
<p class="text-info">
|
||||
You do not have a local username/password for this site. Add a local
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
@{
|
||||
ViewData.SetActivePage(ManageNavPages.TwoFactorAuthentication, "Two-Factor Authentication");
|
||||
}
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-10 col-xl-8">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@inject SignInManager<ApplicationUser> SignInManager
|
||||
<nav id="SectionNav" class="nav">
|
||||
<a id="SectionNav-@ManageNavPages.Index.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.Index)" asp-controller="UIManage" asp-action="Index">Profile</a>
|
||||
<a id="SectionNav-@ManageNavPages.Index.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.Index)" asp-controller="UIManage" asp-action="Index">Account</a>
|
||||
<a id="SectionNav-@ManageNavPages.ChangePassword.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.ChangePassword)" asp-controller="UIManage" asp-action="ChangePassword">Password</a>
|
||||
<a id="SectionNav-@ManageNavPages.TwoFactorAuthentication.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.TwoFactorAuthentication)" asp-controller="UIManage" asp-action="TwoFactorAuthentication">Two-Factor Authentication</a>
|
||||
<a id="SectionNav-@ManageNavPages.APIKeys.ToString()" class="nav-link @ViewData.IsActivePage(ManageNavPages.APIKeys)" asp-controller="UIManage" asp-action="APIKeys">API Keys</a>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
{
|
||||
<div class="form-group">
|
||||
<form method="post">
|
||||
<button type="submit" class="btn btn-primary">Show QR Code</button>
|
||||
<button type="submit" class="btn btn-primary mt-2">Show QR Code</button>
|
||||
</form>
|
||||
</div>
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "BTCPay Server Configurator");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, $"Create temporary file link");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
|
@ -28,7 +28,7 @@
|
|||
<span asp-validation-for="TimeAmount" class="text-danger"></span>
|
||||
<span asp-validation-for="TimeType" class="text-danger"></span>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Generate">Generate</button>
|
||||
<button type="submit" class="btn btn-primary mt-2" name="command" value="Generate">Generate</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Users, "Create account");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
</script>
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
@ -68,7 +68,7 @@
|
|||
<input asp-for="Settings.Enabled" disabled type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
}
|
||||
<button name="command" class="btn btn-primary" type="submit" value="Save">Save</button>
|
||||
<button name="command" class="btn btn-primary mt-2" type="submit" value="Save">Save</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="d-sm-flex align-items-center justify-content-between mb-3">
|
||||
<h2 class="mb-0">
|
||||
<h3 class="mb-0">
|
||||
@ViewData["Title"]
|
||||
<small>
|
||||
<a href="https://docs.btcpayserver.org/Apps/" target="_blank" rel="noreferrer noopener">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
</small>
|
||||
</h2>
|
||||
</h3>
|
||||
<form method="post" asp-action="DynamicDnsService">
|
||||
<button id="AddDynamicDNS" class="btn btn-primary" type="submit"><span class="fa fa-plus"></span> Add service</button>
|
||||
<button id="AddDynamicDNS" class="btn btn-primary mt-2" type="submit"><span class="fa fa-plus"></span> Add service</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Amazon S3 Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Azure Blob Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, $"Local Filesystem Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<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">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Google Cloud Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
@model EmailsViewModel
|
||||
@{
|
||||
ViewData.SetActivePage(ServerNavPages.Emails);
|
||||
ViewData.SetActivePage(ServerNavPages.Emails, "Email Server");
|
||||
}
|
||||
|
||||
<partial name="EmailsBody" model="Model" />
|
||||
|
|
|
@ -3,15 +3,13 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Files, "File Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (!Model.StorageConfigured)
|
||||
{
|
||||
<p>
|
||||
Before being able to upload you first need to
|
||||
<a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]">
|
||||
choose your file storage service provider
|
||||
</a>.
|
||||
<a asp-action="storage" asp-route-forceChoice="true" asp-route-returnurl="@ViewData["ReturnUrl"]">choose your file storage service provider</a>.
|
||||
<a href="https://docs.btcpayserver.org/FAQ/ServerSettings/#how-to-upload-files-to-btcpay" target="_blank" rel="noreferrer noopener">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Lightning charge service");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, Model.WalletName);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (Model.ShowQR)
|
||||
{
|
||||
|
|
|
@ -121,7 +121,7 @@
|
|||
|
||||
@if (Model.Installed.Any())
|
||||
{
|
||||
<h2 class="mb-4">Installed Plugins</h2>
|
||||
<h3 class="mb-4">Installed Plugins</h3>
|
||||
<div class="row mb-4">
|
||||
@foreach (var plugin in Model.Installed)
|
||||
{
|
||||
|
@ -241,7 +241,7 @@
|
|||
|
||||
@if (availableAndNotInstalled.Any())
|
||||
{
|
||||
<h2 class="mb-4">Available Plugins</h2>
|
||||
<h3 class="mb-4">Available Plugins</h3>
|
||||
<div class="row mb-4">
|
||||
@foreach (var plugin in availableAndNotInstalled)
|
||||
{
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
var sortByAsc = "Sort by ascending...";
|
||||
}
|
||||
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-between mb-2">
|
||||
<form asp-action="ListUsers" asp-route-sortOrder="@(userEmailSortOrder)">
|
||||
<div class="input-group mb-2">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "LND Seed Backup");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (Model.IsWalletUnlockPresent)
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
<p>
|
||||
BTCPay exposes LND's @Model.ConnectionType service for outside consumption, you will find connection information here.
|
||||
</p>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Logs, "Logs");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<ul class="list-unstyled">
|
||||
@foreach (var file in Model.LogFiles)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Maintenance, "Maintenance");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<form method="post">
|
||||
<div class="row mb-5">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, Model.WalletName);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (Model.ShowQR)
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Policies);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (!ViewContext.ModelState.IsValid)
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, Model.WalletName);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (Model.ShowQR)
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "SSH settings");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="form-group">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Services");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="mb-5">
|
||||
<h4 class="mb-3">Crypto services exposed by your server</h4>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Services, "Storage");
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
@if (Model.ShowChangeWarning)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@
|
|||
<label asp-for="Provider" class="form-label"></label>
|
||||
<select asp-for="Provider" asp-items="@Model.ProvidersList" class="form-select"></select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary" name="command" value="Save">Next</button>
|
||||
<button type="submit" class="btn btn-primary mt-2" name="command" value="Save">Next</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<partial name="_ValidationScriptsPartial" />
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
ViewData.SetActivePage(ServerNavPages.Users, Model.Email);
|
||||
}
|
||||
|
||||
<h2 class="mb-4">@ViewData["Title"]</h2>
|
||||
<h3 class="mb-4">@ViewData["Title"]</h3>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
<nav id="SectionNav" class="nav">
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Users" class="nav-link @ViewData.IsActivePage(ServerNavPages.Users)" asp-action="ListUsers">Users</a>
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Emails" class="nav-link @ViewData.IsActivePage(ServerNavPages.Emails)" asp-action="Emails">Email Server</a>
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Emails" class="nav-link @ViewData.IsActivePage(ServerNavPages.Emails)" asp-action="Emails">Email</a>
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Policies" class="nav-link @ViewData.IsActivePage(ServerNavPages.Policies)" asp-action="Policies">Policies</a>
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Services" class="nav-link @ViewData.IsActivePage(ServerNavPages.Services)" asp-action="Services">Services</a>
|
||||
<a asp-controller="UIServer" id="SectionNav-@ServerNavPages.Theme" class="nav-link @ViewData.IsActivePage(ServerNavPages.Theme)" asp-action="Theme">Theme</a>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<input class="form-control" id="exampleUrl" name="exampleUrl">
|
||||
</div>
|
||||
|
||||
<button name="command" type="submit" class="btn btn-primary" value="ShopifySaveCredentials">Connect to Shopify</button>
|
||||
<button name="command" type="submit" class="btn btn-primary mt-3" value="ShopifySaveCredentials">Connect to Shopify</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -77,7 +77,7 @@
|
|||
Started: @Model.IntegratedAt.Value.ToBrowserDate()
|
||||
</p>
|
||||
|
||||
<button name="command" type="submit" class="btn btn-danger" value="ShopifyClearCredentials">
|
||||
<button name="command" type="submit" class="btn btn-danger mt-3" value="ShopifyClearCredentials">
|
||||
Stop Shopify calls and clear credentials
|
||||
</button>
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
{
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<h4 class="mb-3">Invoice Settings</h4>
|
||||
<h3 class="mb-3">Invoice Settings</h3>
|
||||
@if (Model.PaymentMethods.Any())
|
||||
{
|
||||
<div class="form-group mb-4">
|
||||
|
@ -27,7 +27,7 @@
|
|||
var criteria = Model.PaymentMethodCriteria[index];
|
||||
<tr>
|
||||
<td class="border-0 ps-0 align-middle">
|
||||
<input type="hidden" asp-for="PaymentMethodCriteria[index].PaymentMethod"/>
|
||||
<input type="hidden" asp-for="PaymentMethodCriteria[index].PaymentMethod" />
|
||||
@PaymentMethodId.Parse(criteria.PaymentMethod).ToPrettyString()
|
||||
</td>
|
||||
<td class="border-0">
|
||||
|
@ -36,7 +36,7 @@
|
|||
</select>
|
||||
</td>
|
||||
<td class="border-0">
|
||||
<input placeholder="6.15 USD" asp-for="PaymentMethodCriteria[index].Value" class="form-control my-0" style="max-width: 20ch;"/>
|
||||
<input placeholder="6.15 USD" asp-for="PaymentMethodCriteria[index].Value" class="form-control my-0" style="max-width: 20ch;" />
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
|
@ -44,7 +44,7 @@
|
|||
</div>
|
||||
}
|
||||
<div class="form-check my-1">
|
||||
<input asp-for="RequiresRefundEmail" type="checkbox" class="form-check-input"/>
|
||||
<input asp-for="RequiresRefundEmail" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="RequiresRefundEmail" class="form-check-label"></label>
|
||||
</div>
|
||||
<div class="form-check my-1">
|
||||
|
@ -56,10 +56,11 @@
|
|||
<label asp-for="RedirectAutomatically" class="form-check-label"></label>
|
||||
</div>
|
||||
|
||||
<h4 class="mt-5 mb-3">Appearance</h4>
|
||||
|
||||
<h3 class="mt-5 mb-3">Language</h3>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input asp-for="AutoDetectLanguage" type="checkbox" class="form-check-input"/>
|
||||
<input asp-for="AutoDetectLanguage" type="checkbox" class="form-check-input" />
|
||||
<label asp-for="AutoDetectLanguage" class="form-check-label"></label>
|
||||
<p class="form-text text-muted">Detects the language of the customer's browser with 99.9% accuracy.</p>
|
||||
</div>
|
||||
|
@ -68,9 +69,11 @@
|
|||
<label asp-for="DefaultLang" class="form-label"></label>
|
||||
<select asp-for="DefaultLang" asp-items="Model.Languages" class="form-select w-auto"></select>
|
||||
</div>
|
||||
|
||||
<h3 class="mt-5 mb-3">Appearance</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="HtmlTitle" class="form-label"></label>
|
||||
<input asp-for="HtmlTitle" class="form-control"/>
|
||||
<input asp-for="HtmlTitle" class="form-control" />
|
||||
<span asp-validation-for="HtmlTitle" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -78,7 +81,7 @@
|
|||
<a href="https://docs.btcpayserver.org/Development/Theme/#checkout-page-themes" target="_blank" rel="noreferrer noopener">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
<input asp-for="CustomLogo" class="form-control"/>
|
||||
<input asp-for="CustomLogo" class="form-control" />
|
||||
<span asp-validation-for="CustomLogo" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
@ -86,7 +89,7 @@
|
|||
<a href="https://docs.btcpayserver.org/Development/Theme/#checkout-page-themes" target="_blank" rel="noreferrer noopener">
|
||||
<span class="fa fa-question-circle-o text-secondary" title="More information..."></span>
|
||||
</a>
|
||||
<input asp-for="CustomCSS" class="form-control"/>
|
||||
<input asp-for="CustomCSS" class="form-control" />
|
||||
<span asp-validation-for="CustomCSS" class="text-danger"></span>
|
||||
<p class="form-text text-muted">
|
||||
Bundled Themes:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@model BTCPayServer.Models.ServerViewModels.EmailsViewModel
|
||||
@model BTCPayServer.Models.ServerViewModels.EmailsViewModel
|
||||
@{
|
||||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData.SetActivePage(StoreNavPages.GeneralSettings, "Email Settings", Context.GetStoreData().Id);
|
||||
ViewData.SetActivePage(StoreNavPages.General, "Email Server", Context.GetStoreData().Id);
|
||||
}
|
||||
|
||||
<partial name="EmailsBody" model="Model" />
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@model GeneralSettingsViewModel
|
||||
@{
|
||||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData.SetActivePage(StoreNavPages.GeneralSettings, "General Settings", Context.GetStoreData().Id);
|
||||
ViewData.SetActivePage(StoreNavPages.General, "General", Context.GetStoreData().Id);
|
||||
}
|
||||
|
||||
<div class="row">
|
||||
|
@ -11,7 +11,7 @@
|
|||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<form method="post">
|
||||
<h4 class="mb-3">General</h4>
|
||||
<h3 class="mb-3">General</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="Id" class="form-label"></label>
|
||||
<input asp-for="Id" readonly class="form-control" />
|
||||
|
@ -27,10 +27,9 @@
|
|||
<span asp-validation-for="StoreWebsite" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button name="command" type="submit" class="btn btn-primary" value="Save" id="Save">Save Store Settings</button>
|
||||
<button name="command" type="submit" class="btn btn-primary mt-2" value="Save" id="Save">Save</button>
|
||||
</form>
|
||||
|
||||
<h4 class="mt-5 mb-3">Services</h4>
|
||||
<h3 class="mt-5 mb-3">Services</h3>
|
||||
<div class="table-responsive-md">
|
||||
<table class="table table-hover mt-1 mb-5">
|
||||
<thead>
|
||||
|
@ -53,12 +52,11 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@if (Model.CanDelete)
|
||||
{
|
||||
<h4 class="mt-5 mb-3">Other actions</h4>
|
||||
<h3 class="mt-5 mb-3">Additional Actions</h3>
|
||||
<div id="danger-zone">
|
||||
<a id="DeleteStore" class="btn btn-outline-danger mb-5" asp-action="DeleteStore" asp-route-storeId="@Model.Id" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-description="The store <strong>@Model.StoreName</strong> will be permanently deleted. This action will also delete all invoices, apps and data associated with the store." data-confirm-input="DELETE">Delete this store</a>
|
||||
<a id="DeleteStore" class="btn btn-outline-danger mb-5 mt-2" asp-action="DeleteStore" asp-route-storeId="@Model.Id" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-description="The store <strong>@Model.StoreName</strong> will be permanently deleted. This action will also delete all invoices, apps and data associated with the store." data-confirm-input="DELETE">Delete this store</a>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<h3 class="mb-0 mb-4">@ViewData["Title"]</h3>
|
||||
@if (!ViewContext.ModelState.IsValid)
|
||||
{
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
|
@ -15,7 +16,7 @@
|
|||
<vc:ui-extension-point location="store-integrations-list" model="@Model" />
|
||||
</ul>
|
||||
|
||||
<h4 class="mt-5 mb-3">Other Integrations</h4>
|
||||
<h3 class="mt-5 mb-3">Other Integrations</h3>
|
||||
<p>Take a look at documentation for the list of other integrations we support and the directions on how to enable them:</p>
|
||||
<ul>
|
||||
<li><a href="https://docs.btcpayserver.org/WooCommerce/" target="_blank" rel="noreferrer noopener">WooCommerce</a></li>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<form method="post">
|
||||
<h4 class="mb-3">@ViewData["Title"]</h4>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="PayloadUrl" class="form-label">Payload URL</label>
|
||||
<input asp-for="PayloadUrl" class="form-control" />
|
||||
|
@ -41,7 +41,7 @@
|
|||
<input asp-for="Active" type="checkbox" class="btcpay-toggle ms-2" />
|
||||
</div>
|
||||
|
||||
<h4 class="mb-3">Events</h4>
|
||||
<h3 class="mb-3">Events</h3>
|
||||
<label asp-for="Everything" class="form-label">Which events would you like to trigger this webhook?</label>
|
||||
<select asp-for="Everything" class="form-select w-auto mb-3">
|
||||
<option value="true">Send me everything</option>
|
||||
|
@ -69,11 +69,11 @@
|
|||
</div>
|
||||
@if (Model.IsNew)
|
||||
{
|
||||
<button name="add" type="submit" class="btn btn-primary mb-5" value="New" id="New">Add webhook</button>
|
||||
<button name="add" type="submit" class="btn btn-primary mb-5 mt-2" value="New" id="New">Add webhook</button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<button name="update" type="submit" class="btn btn-primary mb-5" value="Save" id="Save">Update webhook</button>
|
||||
<button name="update" type="submit" class="btn btn-primary mb-5 mt-2" value="Save" id="Save">Update webhook</button>
|
||||
}
|
||||
</form>
|
||||
@if (!Model.IsNew && Model.Deliveries.Count > 0)
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
}
|
||||
<div class="mb-5">
|
||||
<h4 class="mb-3">Wallet</h4>
|
||||
<h3 class="mb-3">Wallet</h3>
|
||||
@if (Model.HintWallet)
|
||||
{
|
||||
<p>Set up your wallet to receive payments at your store.</p>
|
||||
|
@ -105,7 +105,7 @@
|
|||
</div>
|
||||
|
||||
<div class="mb-5">
|
||||
<h4 class="mb-3">Lightning</h4>
|
||||
<h3 class="mb-3">Lightning</h3>
|
||||
@if (Model.HintLightning)
|
||||
{
|
||||
<p>A connection to a Lightning node is required to receive Lightning payments.</p>
|
||||
|
@ -184,7 +184,7 @@
|
|||
</div>
|
||||
|
||||
<form method="post">
|
||||
<h4 class="mb-3">Payment</h4>
|
||||
<h3 class="mb-3">Payment</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="DefaultCurrency" class="form-label"></label>
|
||||
<input asp-for="DefaultCurrency" class="form-control" style="max-width:10ch;" />
|
||||
|
@ -231,7 +231,7 @@
|
|||
<span asp-validation-for="PaymentTolerance" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
<button name="command" type="submit" class="btn btn-primary px-4" value="Save" id="Save">Save</button>
|
||||
<button name="command" type="submit" class="btn btn-primary px-4 mt-3" value="Save" id="Save">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<h4 class="mb-3">@ViewData["Title"]</h4>
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
@if (!ViewContext.ModelState.IsValid)
|
||||
{
|
||||
<div asp-validation-summary="All" class="text-danger"></div>
|
||||
|
@ -175,7 +175,7 @@
|
|||
</div>
|
||||
<span asp-validation-for="Spread" class="text-danger"></span>
|
||||
</div>
|
||||
<h4 class="mt-5 mb-3">Testing</h4>
|
||||
<h3 class="mt-5 mb-3">Testing</h3>
|
||||
|
||||
<div class="form-group">
|
||||
<label asp-for="ScriptTest" class="form-label">Currency pairs to test against your rule (e.g. <code>DOGE_USD,DOGE_CAD,BTC_CAD,BTC_USD</code>)</label>
|
||||
|
@ -184,16 +184,15 @@
|
|||
<button name="command" value="Test" type="submit" class="btn btn-secondary ms-3" title="Test">Test</button>
|
||||
</div>
|
||||
<span asp-validation-for="ScriptTest" class="text-danger"></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<h4 class="mt-5 mb-3">Default Currency Pairs</h4>
|
||||
<h3 class="mt-5 mb-3">Default Currency Pairs</h3>
|
||||
<div class="form-group">
|
||||
<label asp-for="DefaultCurrencyPairs" class="form-label">Query pairs via REST by querying <a asp-controller="BitpayRate" asp-action="GetRates2" asp-route-storeId="@Model.StoreId" target="_blank">this link</a> without the need to specify currencyPairs.</label>
|
||||
<input asp-for="DefaultCurrencyPairs" class="form-control" placeholder="BTC_USD, BTC_CAD" />
|
||||
<span asp-validation-for="DefaultCurrencyPairs" class="text-danger"></span>
|
||||
</div>
|
||||
<button name="command" type="submit" class="btn btn-primary mt-3" value="Save">Save</button>
|
||||
<button name="command" type="submit" class="btn btn-primary mt-2" value="Save">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,6 +2,6 @@ namespace BTCPayServer.Views.Stores
|
|||
{
|
||||
public enum StoreNavPages
|
||||
{
|
||||
Index, Create, Dashboard, Rates, PaymentMethods, OnchainSettings, LightningSettings, CheckoutAppearance, GeneralSettings, Tokens, Users, PayButton, Integrations, Webhooks, PullPayments, Payouts
|
||||
Create, Dashboard, Rates, PaymentMethods, OnchainSettings, LightningSettings, CheckoutAppearance, General, Tokens, Users, PayButton, Integrations, Webhooks, PullPayments, Payouts
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,8 +8,7 @@
|
|||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<form method="post">
|
||||
<h4 class="mb-3">@ViewData["Title"]</h4>
|
||||
|
||||
<h3 class="mb-3">@ViewData["Title"]</h3>
|
||||
<div class="form-group">
|
||||
<label for="Type" class="form-label">Event type</label>
|
||||
<select
|
||||
|
@ -19,8 +18,7 @@
|
|||
class="form-select w-auto"
|
||||
></select>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">Send test webhook</button>
|
||||
<button type="submit" class="btn btn-primary mt-3">Send test webhook</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,70 +3,70 @@
|
|||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData.SetActivePage(StoreNavPages.Webhooks, "Webhooks", Context.GetStoreData().Id);
|
||||
}
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="d-flex align-items-center justify-content-between mb-3">
|
||||
<h3 class="mb-0">@ViewData["Title"]</h3>
|
||||
<a id="CreateWebhook" asp-action="NewWebhook" class="btn btn-primary" role="button" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
||||
<span class="fa fa-plus"></span>
|
||||
Create Webhook
|
||||
</a>
|
||||
</div>
|
||||
<p>Webhooks allow BTCPay Server to send HTTP events related to your store to another server.</p>
|
||||
|
||||
<div class="d-flex align-items-center justify-content-between mb-3">
|
||||
<h4 class="mb-0">@ViewData["Title"]</h4>
|
||||
<a id="CreateWebhook" asp-action="NewWebhook" class="btn btn-primary" role="button" asp-route-storeId="@Context.GetRouteValue("storeId")">
|
||||
<span class="fa fa-plus"></span>
|
||||
Create Webhook
|
||||
</a>
|
||||
</div>
|
||||
<p>Webhooks allow BTCPay Server to send HTTP events related to your store to another server.</p>
|
||||
|
||||
@if (Model.Webhooks.Any())
|
||||
{
|
||||
<table class="table table-hover table-responsive-md">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Status</th>
|
||||
<th>Url</th>
|
||||
<th class="text-end">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var wh in Model.Webhooks)
|
||||
@if (Model.Webhooks.Any())
|
||||
{
|
||||
<tr>
|
||||
<td class="align-baseline">
|
||||
@if (wh.LastDeliverySuccessful)
|
||||
<table class="table table-hover table-responsive-md">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Status</th>
|
||||
<th>Url</th>
|
||||
<th class="text-end">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var wh in Model.Webhooks)
|
||||
{
|
||||
<span
|
||||
class="fa fa-check text-success"
|
||||
id="delivery-status-icon"
|
||||
data-bs-toggle="tooltip"
|
||||
title="@(wh.LastDeliveryTimeStamp == null ? "No deliveries for this webhook yet" : "Last delivery " + @wh.LastDeliveryTimeStamp?.ToTimeAgo())"></span>
|
||||
<tr>
|
||||
<td class="align-baseline">
|
||||
@if (wh.LastDeliverySuccessful)
|
||||
{
|
||||
<span class="fa fa-check text-success"
|
||||
id="delivery-status-icon"
|
||||
data-bs-toggle="tooltip"
|
||||
title="@(wh.LastDeliveryTimeStamp == null ? "No deliveries for this webhook yet" : "Last delivery " + @wh.LastDeliveryTimeStamp?.ToTimeAgo())"></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fa fa-times text-danger"
|
||||
id="delivery-status-icon"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-html="true"
|
||||
title="Error: @wh.LastDeliveryErrorMessage. <br/> Delivery last attempted <span id='last-delivery-time'>@wh.LastDeliveryTimeStamp?.ToTimeAgo()</span>"></span>
|
||||
}
|
||||
</td>
|
||||
<td class="d-block text-break">@wh.Url</td>
|
||||
<td class="text-end text-md-nowrap">
|
||||
<a asp-action="TestWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id">Test</a> -
|
||||
<a asp-action="ModifyWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id">Modify</a> -
|
||||
<a asp-action="DeleteWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-confirm-input="DELETE">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span
|
||||
class="fa fa-times text-danger"
|
||||
id="delivery-status-icon"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-html="true"
|
||||
title="Error: @wh.LastDeliveryErrorMessage. <br/> Delivery last attempted <span id='last-delivery-time'>@wh.LastDeliveryTimeStamp?.ToTimeAgo()</span>"></span>
|
||||
}
|
||||
</td>
|
||||
<td class="d-block text-break">@wh.Url</td>
|
||||
<td class="text-end text-md-nowrap">
|
||||
<a asp-action="TestWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id">Test</a> -
|
||||
<a asp-action="ModifyWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id">Modify</a> -
|
||||
<a asp-action="DeleteWebhook" asp-route-storeId="@Context.GetRouteValue("storeId")" asp-route-webhookId="@wh.Id" data-bs-toggle="modal" data-bs-target="#ConfirmModal" data-confirm-input="DELETE">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<partial name="_Confirm" model="@(new ConfirmModel("Delete Webhook", "This webhook will be removed from this store.", "Delete"))" />
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<partial name="_Confirm" model="@(new ConfirmModel("Delete webhook", "This webhook will be removed from this store.", "Delete"))" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<p class="text-secondary mt-3">
|
||||
There are no webhooks yet.
|
||||
</p>
|
||||
}
|
||||
else
|
||||
{
|
||||
<p class="text-secondary mt-3">
|
||||
There are no webhooks yet.
|
||||
</p>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section PageFootContent {
|
||||
<partial name="_ValidationScriptsPartial" />
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
@using BTCPayServer.Client
|
||||
<nav id="SectionNav" class="nav">
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.General))" class="nav-link @ViewData.IsActivePage(StoreNavPages.General)" asp-controller="UIStores" asp-action="GeneralSettings" asp-route-storeId="@Context.GetRouteValue("storeId")">General</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.PaymentMethods))" class="nav-link @ViewData.IsActivePage(StoreNavPages.PaymentMethods)" asp-controller="UIStores" asp-action="PaymentMethods" asp-route-storeId="@Context.GetRouteValue("storeId")">Payment Methods</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.Rates))" class="nav-link @ViewData.IsActivePage(StoreNavPages.Rates)" asp-controller="UIStores" asp-action="Rates" asp-route-storeId="@Context.GetRouteValue("storeId")">Rates</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.CheckoutAppearance))" class="nav-link @ViewData.IsActivePage(StoreNavPages.CheckoutAppearance)" asp-controller="UIStores" asp-action="CheckoutAppearance" asp-route-storeId="@Context.GetRouteValue("storeId")">Checkout Appearance</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.GeneralSettings))" class="nav-link @ViewData.IsActivePage(StoreNavPages.GeneralSettings)" asp-controller="UIStores" asp-action="GeneralSettings" asp-route-storeId="@Context.GetRouteValue("storeId")">General Settings</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.Tokens))" class="nav-link @ViewData.IsActivePage(StoreNavPages.Tokens)" asp-controller="UIStores" asp-action="ListTokens" asp-route-storeId="@Context.GetRouteValue("storeId")">Access Tokens</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.Users))" class="nav-link @ViewData.IsActivePage(StoreNavPages.Users)" asp-controller="UIStores" asp-action="StoreUsers" asp-route-storeId="@Context.GetRouteValue("storeId")">Users</a>
|
||||
<a permission="@Policies.CanModifyStoreSettings" id="SectionNav-@(nameof(StoreNavPages.Integrations))" class="nav-link @ViewData.IsActivePage(StoreNavPages.Integrations)" asp-controller="UIStores" asp-action="Integrations" asp-route-storeId="@Context.GetRouteValue("storeId")">Integrations</a>
|
||||
|
|
Loading…
Add table
Reference in a new issue