Files
BusinessMgr-2019/SaBusinessMgrCoreWebControl/Views/Shared/_Layout.cshtml
T

225 lines
10 KiB
Plaintext

@model SbmModel_Control
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery AntiForgery;
@inject SbmLocaliser Localiser
@*
Application: BusinessMgr Web Control
Purpose: Page template.
*@
@{
// Model properties to become javascript values.
var awaitingLogin = Model.AwaitingLogin ? "1" : "0";
var keepLoggedIn = Model.KeepLoggedIn ? "1" : "0";
var debug = Model.DebugMode ? "1" : "0";
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
@* IE11 incompatibility eg. 'border-radius' not recognised. Must be at top of head *@
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
@if (Model.ProhibitCache)
{
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="application/javascript" />
<title>@ViewData["Title"] - BusMgr Control</title>
@* Stylesheets *@
<link rel="stylesheet" href="~/lib/jqueryui/jquery-ui.css" />
<environment include="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
</environment>
<environment exclude="Development">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute"
crossorigin="anonymous"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" />
</environment>
<link rel="stylesheet" href="~/css/sbc-base.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sbc-main.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sbc-data.css?@Model.HrefVersion" />
<link rel="stylesheet" href="~/css/sbc-form.css?@Model.HrefVersion" />
@foreach (var cssFile in Model.AdditionalFiles_CSS)
{
<link rel="stylesheet" href="~/@cssFile?@Model.HrefVersion" />
}
@* Scripts *@
<script>
var sbc = sbc || { page: {}, mdl: {}, fn: {}, url: {}, links: {}, form: {}, data: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {}, session: {}, kli: {} };
sbc.url.base = '@Model.RedirectLocation.Base';
sbc.url.home = '@Model.RedirectLocation.Home';
sbc.url.sessionExpired = '@Model.RedirectLocation.Home_SessionExpired';
sbc.links.facebook = '@Model.Links.Facebook';
sbc.links.linkedin = '@Model.Links.LinkedIn';
sbc.dlg.title.alert = '@Localiser.GetJavascriptText("dialog.title.alert")';
sbc.dlg.title.confirm = '@Localiser.GetJavascriptText("dialog.title.confirm")';
sbc.dlg.title.progress = '@Localiser.GetJavascriptText("dialog.title.progress")';
sbc.dlg.title.signOut = '@Localiser.GetJavascriptText("dialog.title.signout")';
sbc.lbl.yes = '@Localiser["label.yes"]';
sbc.lbl.no = '@Localiser["label.no"]';
sbc.lbl.ok = '@Localiser["label.ok"]';
sbc.lbl.save = '@Localiser["label.save"]';
sbc.lbl.close = '@Localiser["label.close"]';
sbc.lbl.cancel = '@Localiser["label.cancel"]';
sbc.lbl.refresh = '@(Localiser.GetJavascriptText("label.refresh"))';
sbc.lbl.create = '@(Localiser.GetJavascriptText("label.create"))';
sbc.lbl.edit = '@(Localiser.GetJavascriptText("label.edit"))';
sbc.lbl.init = '@(Localiser.GetJavascriptText("label.initialise"))';
sbc.lbl.emails = '@(Localiser.GetJavascriptText("label.emails"))';
sbc.lbl.charAvailable = '@Localiser.GetJavascriptText("info.char.available")';
sbc.lbl.charsAvailable = '@Localiser.GetJavascriptText("info.chars.available", "{0}")';
sbc.lbl.noneSelected = '@Localiser.GetJavascriptText("label.selected.none")';
sbc.lbl.numberSelected = '@Localiser.GetJavascriptText("label.selected.count", "{0}")';
sbc.msg.signOutConfirm = '@Localiser.GetJavascriptText("security.msg.signout.confirm")';
sbc.msg.somethingGoneWrong = '@Localiser.GetJavascriptText("msg.something.gone.wrong")';
sbc.msg.dataRefreshing = '@Localiser.GetJavascriptText("msg.data.refreshing")';
sbc.msg.dataQuerying = '@Localiser.GetJavascriptText("msg.data.querying")';
sbc.msg.dataNoneFound = '@Localiser.GetJavascriptText("msg.data.noneFound")';
sbc.session.cookieName = '@Model.SessionCookieName';
sbc.awaitingLogin = @awaitingLogin;
sbc.kli.active = @keepLoggedIn;
sbc.kli.interval = @(Sbm.Config.Control.Session.Cookie.KeepLoggedInTimeoutMillis);
sbc.debugMode = @debug;
</script>
</head>
<body>
@* Header *@
<header id="sbc-page-header">
@* Navigation bar *@
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">SBM Control</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
@if (Model.AwaitingLogin)
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Policies" asp-action="Privacy">@Localiser["label.privacy"]</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Security" asp-action="">@Localiser["label.signin"]</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["label.home"]</a>
</li>
@* Instances *@
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.instances"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Owner');">@Localiser["label.owners"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/Repository');">@Localiser["label.repositories"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Instance/CoreDatabase');">@Localiser["label.database.core"]</div>
</div>
</li>
@* Configuration *@
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.configuration"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Param/Param');">@Localiser["label.params"]</div>
</div>
</li>
@* System *@
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.system"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('System/Database');">@Localiser["label.database"]</div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('System/Logs');">@Localiser["label.logs"]</div>
</div>
</li>
@* Security *@
<li class="nav-item dropdown">
<a class="nav-link text-dark dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@Localiser["label.security"]
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<div class="dropdown-item text-dark sbc-action" onclick="sbc.goToPage('Account/UserAccount');">@Localiser["label.users"]</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.navigateTo('Security/ChangePassword');">@Localiser["caption.change.password"]</div>
<div class="dropdown-divider"></div>
<div class="dropdown-item text-dark sbc-action" onclick="sbc.onSignOut();">@Localiser["label.signout"]</div>
</div>
</li>
}
</ul>
</div>
</div>
</nav>
</header>
@* Page body *@
<div id="sbc-page-body">
<main role="main" class="container pt-2 pb-2 fullheight">
@RenderBody()
</main>
</div>
@* Footer *@
<footer id="sbc-page-footer" class="border-top footer text-muted">
<div class="container">
<div class="row">
<div class="col">BusinessMgr v@(Sbm.Version.GetAppVersion())</div>
<div class="fixed">@(Model.CopyrightNotice) - Sarand</div>
</div>
</div>
</footer>
@* Form to allow page navigation. *@
@using (@Html.BeginForm("", null, FormMethod.Post, new { @id = "frmNavigate" })) { }
<div id='sbc-please-wait'></div>
@* Scripts *@
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o">
</script>
</environment>
<script src="~/lib/jqueryui/jquery-ui.js"></script>
<script src="~/js/sbc-main.js?@Model.HrefVersion"></script>
@foreach (var jsFile in Model.AdditionalFiles_JS)
{
<script src="~/@jsFile?@Model.HrefVersion"></script>
}
@RenderSection("Scripts", required: false)
</body>
</html>