199 lines
8.8 KiB
Plaintext
199 lines
8.8 KiB
Plaintext
@model SbmModel_Portal
|
|
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery AntiForgery;
|
|
@inject SbmLocaliser Localiser
|
|
@*
|
|
Application: BusinessMgr Web Portal
|
|
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>
|
|
|
|
@* Set base URL the same for all pages so that relative URLs work the same for all. *@
|
|
<base href="@Model.RedirectLocation.Base" />
|
|
<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"] - BusinessMgr</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/sbm-base.css?@Model.HrefVersion" />
|
|
<link rel="stylesheet" href="~/css/sbm-main.css?@Model.HrefVersion" />
|
|
<link rel="stylesheet" href="~/css/sbm-form.css?@Model.HrefVersion" />
|
|
<link rel="stylesheet" href="~/css/sbm-data.css?@Model.HrefVersion" />
|
|
@foreach (var cssFile in Model.AdditionalFiles_CSS)
|
|
{
|
|
<link rel="stylesheet" href="~/@cssFile?@Model.HrefVersion" />
|
|
}
|
|
|
|
@* Scripts *@
|
|
<script>
|
|
var sbm = sbm || { page: {}, url: {}, links: {}, data: {}, form: {}, ajax: {}, msg: {}, lbl: {}, dlg: { title: {}, btn: {} }, $frm: {}, $dlg: {}, $pnl: {} };
|
|
sbm.url.base = '@Model.RedirectLocation.Base';
|
|
sbm.url.home = '@Model.RedirectLocation.Home';
|
|
sbm.url.sessionExpired = '@Model.RedirectLocation.Home_SessionExpired';
|
|
sbm.form.calendarDateFormat = '@(Model.CalendarDateFormat)';
|
|
sbm.lbl.calendar = '@Localiser.GetJavascriptText("label.calendar")';
|
|
sbm.dlg.title.alert = '@Localiser.GetJavascriptText("dialog.title.alert")';
|
|
sbm.dlg.title.confirm = '@Localiser.GetJavascriptText("dialog.title.confirm")';
|
|
sbm.dlg.title.progress = '@Localiser.GetJavascriptText("dialog.title.progress")';
|
|
sbm.dlg.title.signOut = '@Localiser.GetJavascriptText("label.signout")';
|
|
sbm.dlg.btn.yes = '@Localiser["label.yes"]';
|
|
sbm.dlg.btn.no = '@Localiser["label.no"]';
|
|
sbm.dlg.btn.ok = '@Localiser["label.ok"]';
|
|
sbm.dlg.btn.close = '@Localiser["label.close"]';
|
|
sbm.dlg.btn.cancel = '@Localiser["label.cancel"]';
|
|
sbm.lbl.availableCharacter = '@Localiser.GetJavascriptText("label.characters.one")';
|
|
sbm.lbl.availableCharacters = '@Localiser.GetJavascriptText("label.characters.count", "{0}")';
|
|
sbm.lbl.noneSelected = '@Localiser.GetJavascriptText("label.selected.none")';
|
|
sbm.lbl.numberSelected = '@Localiser.GetJavascriptText("label.selected.count", "{0}")';
|
|
sbm.msg.itemRemoveConfirm = '@Localiser.GetJavascriptText("msg.confirm.item.remove")';
|
|
sbm.msg.signOutConfirm = '@Localiser.GetJavascriptText("security.msg.signout.confirm")';
|
|
sbm.msg.somethingGoneWrong = '@Localiser.GetJavascriptText("msg.something.gone.wrong")';
|
|
sbm.msg.dataRefreshing = '@Localiser.GetJavascriptText("msg.data.refreshing")';
|
|
sbm.msg.dataQuerying = '@Localiser.GetJavascriptText("msg.data.querying")';
|
|
sbm.msg.dataNoneFound = '@Localiser.GetJavascriptText("msg.data.noneFound")';
|
|
sbm.maxProfileImageSize = 2 * 10 ** 6;
|
|
sbm.sessionCookieName = '@Model.SessionCookieName';
|
|
sbm.awaitingLogin = @awaitingLogin;
|
|
sbm.keepLoggedIn = @keepLoggedIn;
|
|
sbm.keepLoggedInDelay = @(Sbm.Config.Control.Session.Cookie.KeepLoggedInTimeoutMillis);
|
|
sbm.debugMode = @debug;
|
|
</script>
|
|
|
|
</head>
|
|
<body>
|
|
|
|
@* Header *@
|
|
<header id="sbm-page-header">
|
|
|
|
@* Navigation bar *@
|
|
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
|
|
<div class="container">
|
|
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">Sarand BusinessMgr</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">
|
|
<li class="nav-item">
|
|
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">@Localiser["label.home"]</a>
|
|
</li>
|
|
@if (Model.AwaitingLogin)
|
|
{
|
|
<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 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.reference"]
|
|
</a>
|
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
|
<div class="dropdown-item text-dark sbm-action" onclick="sbm.goToPage('Contact');">@Localiser["label.contacts"]</div>
|
|
<div class="dropdown-item text-dark sbm-action" onclick="sbm.goToPage('Commodity');">@Localiser["label.commodities"]</div>
|
|
<div class="dropdown-item text-dark sbm-action" onclick="sbm.goToPage('Association');">@Localiser["label.associations"]</div>
|
|
</div>
|
|
</li>
|
|
<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 sbm-action" onclick="sbm.navigateTo('Security/ChangePassword');">@Localiser["label.change.password"]</div>
|
|
<div class="dropdown-divider"></div>
|
|
<div class="dropdown-item text-dark sbm-action" onclick="sbm.onSignOut();">@Localiser["label.signout"]</div>
|
|
</div>
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
|
|
@* Page body *@
|
|
<div id="sbm-page-body" class="container">
|
|
<main role="main" class="pb-3">
|
|
@RenderBody()
|
|
</main>
|
|
</div>
|
|
|
|
@* Footer *@
|
|
<footer id="sbm-page-footer" class="">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-6 text-center text-md-left">@(Model.OrganisationName)</div>
|
|
<div class="col-md-6 text-center text-md-right">@(Model.CopyrightNotice) - Sarand BusinessMgr Portal</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
@* Form to allow page navigation. *@
|
|
@using (@Html.BeginForm(FormMethod.Post, new { @id = "frmNavigate" })) { }
|
|
<div id='sbm-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/sbm-main.js?@Model.HrefVersion"></script>
|
|
@foreach (var jsFile in Model.AdditionalFiles_JS)
|
|
{
|
|
<script src="~/@jsFile?@Model.HrefVersion"></script>
|
|
}
|
|
@if (Model.IncludeGoogleAnalytics)
|
|
{
|
|
<partial name="~/Views/Shared/_GoogleAnalytics.cshtml" />
|
|
}
|
|
@RenderSection("Scripts", required: false)
|
|
|
|
</body>
|
|
</html>
|