mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-20 10:40:29 +01:00
206 lines
8.6 KiB
Plaintext
206 lines
8.6 KiB
Plaintext
@inject SignInManager<ApplicationUser> SignInManager
|
|
@inject UserManager<ApplicationUser> UserManager
|
|
@inject RoleManager<IdentityRole> RoleManager
|
|
@inject BTCPayServer.Services.BTCPayServerEnvironment env
|
|
@inject BTCPayServer.NBXplorerWaiterAccessor waiter
|
|
|
|
@{
|
|
var waiterState = waiter.Instance.State;
|
|
var lastStatus = waiter.Instance.LastStatus;
|
|
var verificationProgress = waiter.Instance.LastStatus?.BitcoinStatus != null ? waiter.Instance.LastStatus.BitcoinStatus.VerificationProgress * 100 : 0.0;
|
|
}
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<meta name="description" content="">
|
|
<meta name="author" content="">
|
|
|
|
<title>BTCPay Server</title>
|
|
|
|
<!-- Bootstrap core CSS -->
|
|
<link href="~/vendor/bootstrap/css/bootstrap.css" rel="stylesheet">
|
|
|
|
<!-- Custom fonts for this template -->
|
|
@*<link href="~/vendor/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css">
|
|
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
|
<link href='https://fonts.googleapis.com/css?family=Merriweather:400,300,300italic,400italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>*@
|
|
|
|
<!-- Plugin CSS -->
|
|
<link href="~/vendor/magnific-popup/magnific-popup.css" rel="stylesheet">
|
|
|
|
<!-- Custom styles for this template -->
|
|
<link href="~/css/creative.css" rel="stylesheet" />
|
|
|
|
<!-- Custom styles for this template -->
|
|
<link href="~/css/site.css" rel="stylesheet" />
|
|
|
|
</head>
|
|
|
|
<body id="page-top">
|
|
|
|
@{
|
|
if(ViewBag.AlwaysShrinkNavBar == null)
|
|
{
|
|
ViewBag.AlwaysShrinkNavBar = true;
|
|
}
|
|
var additionalStyle = ViewBag.AlwaysShrinkNavBar ? "navbar-shrink always-shrinked" : "";
|
|
}
|
|
|
|
<!-- Navigation -->
|
|
<nav class='navbar navbar-expand-lg navbar-light fixed-top @additionalStyle' id="mainNav">
|
|
<div class="container">
|
|
<a class="navbar-brand js-scroll-trigger" href="~/"><img src="~/img/logo.png" height="45"></a>
|
|
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarResponsive">
|
|
<ul class="navbar-nav ml-auto">
|
|
@if(SignInManager.IsSignedIn(User))
|
|
{
|
|
@if(User.IsInRole(Roles.ServerAdmin))
|
|
{
|
|
<li class="nav-item"><a asp-area="" asp-controller="Server" asp-action="ListUsers" class="nav-link js-scroll-trigger">Server settings</a></li>
|
|
}
|
|
<li class="nav-item"><a asp-area="" asp-controller="Stores" asp-action="ListStores" class="nav-link js-scroll-trigger">Stores</a></li>
|
|
<li class="nav-item"><a asp-area="" asp-controller="Invoice" asp-action="ListInvoices" class="nav-link js-scroll-trigger">Invoices</a></li>
|
|
<li class="nav-item">
|
|
<a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage" class="nav-link js-scroll-trigger">My settings</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a asp-area="" asp-controller="Account" asp- asp-action="Logout" title="Manage" class="nav-link js-scroll-trigger">Log out</a>
|
|
</li>}
|
|
else
|
|
{
|
|
<li class="nav-item"><a asp-area="" asp-controller="Account" asp-action="Register" class="nav-link js-scroll-trigger">Register</a></li>
|
|
<li class="nav-item"><a asp-area="" asp-controller="Account" asp-action="Login" class="nav-link js-scroll-trigger">Log in</a></li>}
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
@RenderBody()
|
|
|
|
|
|
@if(waiterState == NBXplorerState.NotConnected)
|
|
{
|
|
<!-- Modal -->
|
|
<div id="no-nbxplorer" class="modal fade" role="dialog">
|
|
<div class="modal-dialog">
|
|
|
|
<!-- Modal content-->
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title">NBXplorer is not running</h4>
|
|
<button type="button" class="close" data-dismiss="modal">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>NBXplorer is not running, BTCPay Server will not be functional.</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
@if(waiterState == NBXplorerState.Synching && lastStatus.BitcoinStatus != null)
|
|
{
|
|
<!-- Modal -->
|
|
<div id="synching-modal" class="modal fade" role="dialog">
|
|
<div class="modal-dialog">
|
|
|
|
<!-- Modal content-->
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title">Bitcoin Core node is synching...</h4>
|
|
<button type="button" class="close" data-dismiss="modal">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>Bitcoin Core is synching (Chain height: @lastStatus.BitcoinStatus.Headers, Block height: @lastStatus.BitcoinStatus.Blocks)</p>
|
|
<p>BTCPay Server will not work correctly until it is over.</p>
|
|
<div class="progress">
|
|
<div class="progress-bar" role="progressbar" aria-valuenow="@((int)verificationProgress)"
|
|
aria-valuemin="0" aria-valuemax="100" style="width:@((int)verificationProgress)%">
|
|
@((int)verificationProgress)%
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
}
|
|
else if(waiterState == NBXplorerState.Synching && lastStatus.BitcoinStatus == null)
|
|
{
|
|
<!-- Modal -->
|
|
<div id="synching-modal" class="modal fade" role="dialog">
|
|
<div class="modal-dialog">
|
|
|
|
<!-- Modal content-->
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 class="modal-title">Bitcoin Core node is starting...</h4>
|
|
<button type="button" class="close" data-dismiss="modal">×</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>Satoshi is rolling the blocks forward... Time to drink a cup of tea?</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
<footer class="bg-dark">
|
|
<div class="container text-right"><span style="font-size:8px;">@env.ToString()</span></div>
|
|
</footer>
|
|
|
|
<!-- Bootstrap core JavaScript -->
|
|
<script src="~/vendor/jquery/jquery.min.js"></script>
|
|
<script src="~/vendor/popper/popper.min.js"></script>
|
|
<script src="~/vendor/bootstrap/js/bootstrap.min.js"></script>
|
|
|
|
<!-- Plugin JavaScript -->
|
|
<script src="~/vendor/jquery-easing/jquery.easing.min.js"></script>
|
|
<script src="~/vendor/scrollreveal/scrollreveal.min.js"></script>
|
|
<script src="~/vendor/magnific-popup/jquery.magnific-popup.min.js"></script>
|
|
|
|
<!-- Custom scripts for this template -->
|
|
<script src="~/js/creative.js"></script>
|
|
|
|
@if(waiterState == NBXplorerState.NotConnected)
|
|
{
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
$("#no-nbxplorer").modal();
|
|
});
|
|
</script>
|
|
}
|
|
@if(waiterState == NBXplorerState.Synching)
|
|
{
|
|
<script type="text/javascript">
|
|
$(function () {
|
|
$("#synching-modal").modal();
|
|
});
|
|
</script>
|
|
}
|
|
|
|
@RenderSection("Scripts", required: false)
|
|
</body>
|
|
|
|
</html>
|