170 lines
7.7 KiB
Text
170 lines
7.7 KiB
Text
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>@ViewData["Title"] - Web</title>
|
|
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
|
|
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
|
|
<link rel="stylesheet" href="~/Web.styles.css" asp-append-version="true" />
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
|
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" />
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<div class="wrapper d-flex align-items-stretch">
|
|
<nav id="sidebar" class="active">
|
|
<h1><a class="logo">OS</a></h1>
|
|
<ul class="list-unstyled components mb-5">
|
|
<li class="sidebarCollapse">
|
|
<a asp-controller="admin" asp-action="index"><span class="bi bi-speedometer"></span> Admin</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="Page" asp-action="index"><span class="bi bi-file-earmark-fill"></span> Pages</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="banner" asp-action="index"><span class="bi bi-card-image"></span> Banners</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="footer" asp-action="index"><span class="bi bi-c-circle-fill"></span> Footer</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="address" asp-action="index"><span class="bi bi-pin-map"></span> Address</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="SocialMedia" asp-action="index"><span class="bi bi-collection-play-fill"></span> Social Media</a>
|
|
</li>
|
|
<li>
|
|
|
|
<a asp-controller="Questionnaire" asp-action="index"><span class="bi bi-question-circle"></span> Survey</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="SurveyAnalysis" asp-action="index"><span class="bi bi-graph-up-arrow"></span> Analyzer</a>
|
|
</li>
|
|
<li>
|
|
|
|
<a asp-controller="UserResponse" asp-action="index"><span class="bi bi-clipboard-data"></span> Response</a>
|
|
</li>
|
|
<li>
|
|
|
|
<a asp-controller="UserResponseStatus" asp-action="index"><span class="bi bi-heart-pulse"></span> User status</a>
|
|
</li>
|
|
<li>
|
|
<a asp-controller="newsletters" asp-action="index"><span class="bi bi-newspaper"></span> Subscibers</a>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
|
|
<!-- Page Content -->
|
|
<div id="content">
|
|
|
|
<nav class="navbar navbar-expand-lg navbar-light bg-brimary">
|
|
<div class="container-fluid">
|
|
<button type="button" id="sidebarCollapse" class="btn btn-primary">
|
|
<i class="bi bi-list"></i>
|
|
<span class="sr-only">Toggle Menu</span>
|
|
</button>
|
|
<button class="navbar-toggler btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
|
|
aria-expanded="false" aria-label="Toggle navigation">
|
|
<i class="bi bi-list"></i>
|
|
<span class="sr-only"></span>
|
|
</button>
|
|
|
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
<ul class="nav navbar-nav ml-auto">
|
|
|
|
<span class="dropdown mr-2">
|
|
<button class="btn btn-info btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
Notifications <span class="badge badge-danger" id="notificationCount">0</span>
|
|
</a>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li>
|
|
<a class="dropdown-item" href="#">
|
|
<h6 class="dropdown-header">New Notifications</h6>
|
|
<div id="notifications">
|
|
|
|
</div>
|
|
</a>
|
|
</li>
|
|
|
|
</ul>
|
|
</span>
|
|
|
|
|
|
<span class="dropdown mr-2">
|
|
<button class="btn btn-primary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
Account
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li><a class="dropdown-item" asp-controller="Roles" asp-action="index">Roles</a></li>
|
|
<li><a class="dropdown-item" asp-controller="Users" asp-action="index">Users</a></li>
|
|
</ul>
|
|
</span>
|
|
<li class="nav-item">
|
|
<form asp-area="Admin" asp-controller="Admin" asp-action="Logout" method="post">
|
|
<button type="submit" class="btn btn-danger btn-sm"><span class="bi bi-box-arrow-left"></span> Logout</button>
|
|
</form>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
<main>
|
|
|
|
@RenderBody()
|
|
</main>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
|
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="~/js/site.js" asp-append-version="true"></script>
|
|
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/5.0.11/signalr.min.js"></script>
|
|
<script type="text/javascript">
|
|
// Establish a connection to the SignalR hub
|
|
const connection = new signalR.HubConnectionBuilder()
|
|
.withUrl("/notificationHub")
|
|
.build();
|
|
|
|
// Function to add a notification to the list
|
|
function addNotification(userName, email) {
|
|
const notificationsList = document.getElementById("notifications");
|
|
const li = document.createElement("li");
|
|
li.className = "list-group-item";
|
|
li.textContent = `New submission from ${userName}`;
|
|
notificationsList.appendChild(li);
|
|
|
|
// Update the notification count
|
|
const notificationCount = document.getElementById("notificationCount");
|
|
notificationCount.textContent = parseInt(notificationCount.textContent) + 1;
|
|
}
|
|
|
|
// Receive notification from the server
|
|
connection.on("ReceiveNotification", function (userName, email) {
|
|
addNotification(userName, email);
|
|
});
|
|
|
|
// Start the connection
|
|
connection.start().catch(function (err) {
|
|
return console.error(err.toString());
|
|
});
|
|
</script>
|
|
|
|
@await RenderSectionAsync("Scripts", required: false)
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|