initial commit
This commit is contained in:
13
Views/Home/Index.cshtml
Normal file
13
Views/Home/Index.cshtml
Normal file
@@ -0,0 +1,13 @@
|
||||
@model BasePageModel
|
||||
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
Дигитална библиотека
|
||||
</b></div>
|
||||
|
||||
<div class="text-center">
|
||||
<img src="~/@Configuration["Images"]/logo_sm.png" alt="Дигитална библиотека">
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<br/>
|
||||
<img src="~/@Configuration["Images"]/main_bairaci_sm.png">
|
||||
</div>
|
||||
8
Views/Home/Login.cshtml
Normal file
8
Views/Home/Login.cshtml
Normal file
@@ -0,0 +1,8 @@
|
||||
@model BasePageModel
|
||||
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
LOGIN
|
||||
</b></div>
|
||||
|
||||
<div class="text-center">
|
||||
</div>
|
||||
94
Views/Home/Repository.cshtml
Normal file
94
Views/Home/Repository.cshtml
Normal file
@@ -0,0 +1,94 @@
|
||||
@model RepositoryPageModel
|
||||
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
ДИГИТАЛНИ КОЛЕКЦИИ
|
||||
</b></div>
|
||||
|
||||
<style>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); /* Подрежда елементите в грид с ширина от поне 200px, но равномерно разпределя останалото пространство */
|
||||
grid-gap: 50px; /* Разстояние между елементите */
|
||||
}
|
||||
|
||||
.grid-item {
|
||||
border: 0px solid #ccc;
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
@if (Model.CategoryData.Depth == 0)
|
||||
{
|
||||
<div>
|
||||
<div class="grid-container">
|
||||
@foreach (CategoryItemData category in Model.CategoryData.Children)
|
||||
{
|
||||
int q = category.Depth;
|
||||
<div class="grid-item">
|
||||
<div>
|
||||
<img src="~/@Configuration["Images"]/book_@(@category.ID.ToString()).png" ) width="320" height="370">
|
||||
</div>
|
||||
<div>
|
||||
<a href="/Repository/@category.ID">@category.Name</a>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="container row mt-3 mb-3">
|
||||
<div class="nav_tree">
|
||||
@foreach (CategoryItemData category in Model.CategoryPath)
|
||||
{
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x < category.Depth; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-down"></i></span>
|
||||
<a href="/Repository/@category.ID">@category.Name </a>
|
||||
</div>
|
||||
}
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x < Model.CategoryData.Depth; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-down"></i></span>
|
||||
<span><b>@Model.CategoryData.Name</b></span>
|
||||
</div>
|
||||
@foreach (CategoryItemData category in Model.CategoryData.Children)
|
||||
{
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x < category.Depth; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-right"></i></span>
|
||||
<a href="/Repository/@category.ID">@category.Name</a>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center display-6 page-title-color mt-3">
|
||||
<font size=4><b> Публикации в категория </b></font>
|
||||
<font size=5><b> @Model.CategoryData.Name </b></font>
|
||||
<div class="container row mt-3 mb-3">
|
||||
<font size=3 color="#000000" align=left>
|
||||
<b><i>
|
||||
@Model.CategoryData.Catego_opis
|
||||
</i></b>
|
||||
</font>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="container row mt-3 mb-3">
|
||||
@foreach ( BookData book in Model.Books ) {
|
||||
@await Html.PartialAsync("~/Views/Shared/RepositoryBookElement.cshtml", book);
|
||||
}
|
||||
</div>
|
||||
@await Html.PartialAsync( "~/Views/Shared/PagingArea.cshtml" , Model.PagingData )
|
||||
85
Views/Home/RepositoryDetails.cshtml
Normal file
85
Views/Home/RepositoryDetails.cshtml
Normal file
@@ -0,0 +1,85 @@
|
||||
@model RepositoryDetailsPageModel
|
||||
|
||||
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
ДИГИТАЛНИ КОЛЕКЦИИ
|
||||
</b></div>
|
||||
|
||||
<div class="col-12 py-1">
|
||||
<div class="nav_tree">
|
||||
@foreach (CategoryItemData category in Model.CategoryPath)
|
||||
{
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x < category.Depth; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-down"></i></span>
|
||||
<a href="/Repository/@category.ID">@category.Name</a>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x <= Model.CategoryPath[Model.CategoryPath.Count-1].Depth ; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-down"></i></span>
|
||||
<b>@Model.BookData.Title</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@await Html.PartialAsync("~/Views/Shared/RepositoryBookElement_1.cshtml", Model.BookData)
|
||||
|
||||
<div class="col-12 py-1">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Съдържание
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach ( AttachmentData attachment in Model.Attachments )
|
||||
{
|
||||
if ( attachment.Format == "pdf")
|
||||
{
|
||||
<a href="/Repository/PDFView/@attachment.UUID" target="preview_frame">
|
||||
<h5 class="card-title display-7"><font size="2">@attachment.Title</font></h5>
|
||||
</a>
|
||||
}
|
||||
else if (attachment.Format == "jpg")
|
||||
{
|
||||
<a href="/Repository/Image/@attachment.UUID" target="preview_frame">
|
||||
<h5 class="card-title display-7"><font size="2">@attachment.Title</font></h5>
|
||||
</a>
|
||||
}
|
||||
else if (attachment.Format == "mp4")
|
||||
{
|
||||
<a href="/Repository/Video/@attachment.UUID" target="preview_frame">
|
||||
<h5 class="card-title display-7"><font size="2">@attachment.Title</font></h5>
|
||||
</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@attachment.Link" target="_blank">
|
||||
<h5 class="card-title display-7"><font size="2">@attachment.Title</font></h5>
|
||||
</a>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-12 py-1">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Преглед
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="w-100 ratio ratio-1x1">
|
||||
<iframe name="preview_frame" title="Заглавие"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
25
Views/Home/Search.cshtml
Normal file
25
Views/Home/Search.cshtml
Normal file
@@ -0,0 +1,25 @@
|
||||
@model SearchPageModel
|
||||
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
Търсене
|
||||
</b></div>
|
||||
|
||||
<form action="/Search">
|
||||
<input type="text" name="q" value="@Model.SearchTerm" />
|
||||
<input type="submit" />
|
||||
</form>
|
||||
|
||||
<div class="text-center display-6 page-title-color"><font size=5><b>
|
||||
Резултати за : @Model.SearchTerm
|
||||
</font></b></div>
|
||||
|
||||
|
||||
<div class="container row mt-3 mb-3">
|
||||
@foreach (BookData book in Model.Books)
|
||||
{
|
||||
@await Html.PartialAsync("~/Views/Shared/RepositoryBookElement.cshtml", book)
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
@await Html.PartialAsync( "~/Views/Shared/PagingArea.cshtml" , Model.PagingData )
|
||||
5
Views/Home/Sitemap.cshtml
Normal file
5
Views/Home/Sitemap.cshtml
Normal file
@@ -0,0 +1,5 @@
|
||||
@model BasePageModel
|
||||
<div class="text-center display-6 page-title-color"><b>
|
||||
Карта на сайта
|
||||
</b></div>
|
||||
@await Html.PartialAsync( "~/Views/Shared/SiteMapTree.cshtml" , Model.CategoryTree )
|
||||
51
Views/Repository/PDFView.cshtml
Normal file
51
Views/Repository/PDFView.cshtml
Normal file
@@ -0,0 +1,51 @@
|
||||
@model PDFViewModel
|
||||
@{
|
||||
Layout = null;
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" href="~/css/pdf_view.css" />
|
||||
<title>Виртуална библиотека</title>
|
||||
</head>
|
||||
|
||||
<body class="full-view-height">
|
||||
<main role="main" class="full-view-height">
|
||||
<div class="full-width full-height no-padding">
|
||||
<div class="vlayout full-height">
|
||||
|
||||
<div class="header">
|
||||
<div class="header-info-bar">@Model.Title</div>
|
||||
<div class="header-paging-bar">Страница: <span id="current_page">1</span> / @Model.PageCount</div>
|
||||
</div>
|
||||
|
||||
<div class="full-width hlayout layout-scale-1 overflow-auto">
|
||||
<div class="navigation-bar">
|
||||
<div class="vlayout">
|
||||
@for ( int p = 0 ; p < Model.PageCount ; p++ )
|
||||
{
|
||||
<a class="pdf-page-link @Html.IF( p == 0 , "selected" )" href="/Repository/PDFPage/@Model.UUID/@p" data-page="@(p+1)">
|
||||
<img class="pdf-page-thumb" src="/Repository/PDFThumb/@Model.UUID/@p" />
|
||||
<div class="pdf-page-label">#@(p+1) / @Model.PageCount</div>
|
||||
</a>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="content_div" class="content-area overflow-auto">
|
||||
<img id="page_preview" style="max-width: 100%;" src="/Repository/PDFPage/@Model.UUID/0" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script src="~/js/vendor/jquery-3.6.0.min.js"></script>
|
||||
<script src="~/js/pdf_view.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
59
Views/Shared/PagingArea.cshtml
Normal file
59
Views/Shared/PagingArea.cshtml
Normal file
@@ -0,0 +1,59 @@
|
||||
@model PagingData
|
||||
@{
|
||||
bool has_previous = Model.CurrentPage > 0;
|
||||
bool has_next = Model.CurrentPage < Model.LastPage;
|
||||
|
||||
int first_page = Math.Max( 0 , Model.CurrentPage - 3 );
|
||||
int last_page = Math.Min( first_page + 6 , Model.LastPage );
|
||||
if ( last_page - first_page < 6 )
|
||||
first_page = Math.Max( 0 , last_page - 6 );
|
||||
|
||||
bool show_dots_before = first_page > 0;
|
||||
if ( show_dots_before )
|
||||
first_page += 2; // shift first page to make room for [1][...]
|
||||
|
||||
bool show_dots_after = last_page < Model.LastPage;
|
||||
if (show_dots_after)
|
||||
last_page -= 2; // shift last page to make room for [...][last]
|
||||
}
|
||||
|
||||
@if ( Model.LastPage > 0 )
|
||||
{
|
||||
<nav>
|
||||
<ul class="pagination justify-content-center pagination-sm">
|
||||
|
||||
<li class="page-item @(has_previous ? "" : "disabled")">
|
||||
<a class="page-link" href="@Model.Url( Model.CurrentPage - 1 )" tabindex="-1">Previous</a>
|
||||
</li>
|
||||
|
||||
@if ( show_dots_before )
|
||||
{
|
||||
<li class="page-item"><a class="page-link" href="@Model.Url( 0 )">1</a></li>
|
||||
<li class="page-item disabled"><span class="page-link">...</span></li>
|
||||
}
|
||||
|
||||
@for ( int p = first_page ; p <= last_page; p++ )
|
||||
{
|
||||
if ( Model.CurrentPage == p )
|
||||
{
|
||||
<li class="page-item active"><span class="page-link">@(p+1)</span></li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li class="page-item"><a class="page-link" href="@Model.Url( p )">@(p+1)</a></li>
|
||||
}
|
||||
}
|
||||
|
||||
@if ( show_dots_after )
|
||||
{
|
||||
<li class="page-item disabled"><span class="page-link">...</span></li>
|
||||
<li class="page-item"><a class="page-link" href="@Model.Url( Model.LastPage )">@( Model.LastPage + 1 )</a></li>
|
||||
}
|
||||
|
||||
<li class="page-item @(has_next ? "" : "disabled")">
|
||||
<a class="page-link" href="@Model.Url( Model.CurrentPage + 1 )" tabindex="-1">Next</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
}
|
||||
58
Views/Shared/RepositoryBookElement.cshtml
Normal file
58
Views/Shared/RepositoryBookElement.cshtml
Normal file
@@ -0,0 +1,58 @@
|
||||
@model BookData
|
||||
|
||||
<!-- <div class="col-xs-12 col-sm-12 col-md-4 col-lg-4 px-1 py-1"> -->
|
||||
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 px-1 py-1">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
@Model.BookTypeName
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (!string.IsNullOrEmpty(Model.UUID))
|
||||
{
|
||||
<img src="/Repository/Cover/@Model.UUID" style="width: 8em;" />
|
||||
}
|
||||
<a href="/Repository/Details/@Model.ID">
|
||||
<h7 class="card-title display-7"><br><b>@Model.Title</b></h7>
|
||||
</a>
|
||||
<p><font size="2">
|
||||
<b>Автор : </b>@Model.Author<br>
|
||||
<b>Ключови думи : </b>@Model.Keywords<br>
|
||||
@if (!string.IsNullOrEmpty(Model.Publisher))
|
||||
{ <b>Издат.данни : </b> @Model.Publisher<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.PublishYear))
|
||||
{ <b>Год.издаване : </b>@Model.PublishYear<br>}
|
||||
@if (!string.IsNullOrEmpty(Model.Description))
|
||||
{ <b>Размер : </b>@Model.Description<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.Opisanie))
|
||||
{ <b>Описание : </b>@Model.Opisanie<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.KodDrugi))
|
||||
{ <b>Език : </b>@Model.KodDrugi<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.Access))
|
||||
{ <b>Access : </b>@Model.Access <br> }
|
||||
</font>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--
|
||||
|
||||
<a href="/Repository/Details/@Model.ID">
|
||||
<h7 class="card-title display-7"><b>@Model.Title</b></h7>
|
||||
</a>
|
||||
<p><font size="2"><b>Автор : </b>@Model.Author</font></p>
|
||||
<p><font size="2"><b>Ключови думи : </b><small class="card-text">@Model.Keywords</small></font></p>
|
||||
<p><font size="2"><b>Издат.данни : </b><small class="card-text">@Model.Publisher</small></font></p>
|
||||
<p><font size="2"><b>Год.издаване : </b><small class="card-text">@Model.PublishYear</small></font></p>
|
||||
<p><font size="2"><b>Размер : </b><small class="card-text">@Model.Description</small></font></p>
|
||||
<p><font size="2"><b>Описание : </b><small class="card-text">@Model.Opisanie</small></font></p>
|
||||
<p><font size="2"><b>Език : </b><small class="card-text">@Model.KodDrugi</small></font></p>
|
||||
|
||||
<p><b>Автор : </b><class ="h6">@Model.Author</p>
|
||||
<p><b>Ключови думи : </b><small class="card-text">@Model.Keywords</small></p>
|
||||
<p><b>Издат.данни : </b><small class="card-text">@Model.Publisher</small></p>
|
||||
<p><b>Год.издаване : </b><small class="card-text">@Model.PublishYear</small></p>
|
||||
<p><b>Размер : </b><small class="card-text">@Model.Description</small></p>
|
||||
<p><b>Описание : </b><small class="card-text">@Model.Opisanie</small></p>
|
||||
<p><b>Език : </b><small class="card-text">@Model.KodDrugi</small></p>
|
||||
-->
|
||||
35
Views/Shared/RepositoryBookElement_1.cshtml
Normal file
35
Views/Shared/RepositoryBookElement_1.cshtml
Normal file
@@ -0,0 +1,35 @@
|
||||
@model BookData
|
||||
|
||||
<div class="col-12 py-1">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
@Model.BookTypeName
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@if (!string.IsNullOrEmpty(Model.UUID))
|
||||
{
|
||||
<img src="./Repository/Cover/@Model.UUID" style="width: 8em;" />
|
||||
}
|
||||
<a href="/Repository/Details/@Model.ID">
|
||||
<h7 class="card-title display-7"><br><b>@Model.Title</b></h7>
|
||||
</a>
|
||||
<p><font size="2">
|
||||
<b>Автор : </b>@Model.Author<br>
|
||||
<b>Ключови думи : </b>@Model.Keywords<br>
|
||||
@if (!string.IsNullOrEmpty(Model.Publisher))
|
||||
{ <b>Издат.данни : </b> @Model.Publisher<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.PublishYear))
|
||||
{ <b>Год.издаване : </b>@Model.PublishYear<br>}
|
||||
@if (!string.IsNullOrEmpty(Model.Description))
|
||||
{ <b>Размер : </b>@Model.Description<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.Opisanie))
|
||||
{ <b>Описание : </b>@Model.Opisanie<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.KodDrugi))
|
||||
{ <b>Език : </b>@Model.KodDrugi<br> }
|
||||
@if (!string.IsNullOrEmpty(Model.Access))
|
||||
{ <b>Access : </b>@Model.Access<br> }
|
||||
</font>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
8
Views/Shared/SiteMapTree.cshtml
Normal file
8
Views/Shared/SiteMapTree.cshtml
Normal file
@@ -0,0 +1,8 @@
|
||||
@model CategoryTreeData
|
||||
|
||||
<div class="nav_tree">
|
||||
@foreach (CategoryItemData root_item in Model.RootElements)
|
||||
{
|
||||
@await Html.PartialAsync( "~/Views/Shared/SiteMapTreeItem.cshtml" , root_item )
|
||||
}
|
||||
</div>
|
||||
19
Views/Shared/SiteMapTreeItem.cshtml
Normal file
19
Views/Shared/SiteMapTreeItem.cshtml
Normal file
@@ -0,0 +1,19 @@
|
||||
@model CategoryItemData
|
||||
|
||||
<div class="nav_tree_item_container">
|
||||
@for (int x = 0; x < Model.Depth; x++)
|
||||
{
|
||||
<span class="indent"></span>
|
||||
}
|
||||
<span class="indent"><i class="fa fa-caret-right"></i></span>
|
||||
|
||||
<div class="nav_tree_item_data">
|
||||
<a href="/Repository/@Model.ID">@Model.Name</a>
|
||||
<span>Публикации: @Model.ElementCount</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@foreach ( CategoryItemData child in Model.Children )
|
||||
{
|
||||
@await Html.PartialAsync( "~/Views/Shared/SiteMapTreeItem.cshtml" , child )
|
||||
}
|
||||
22
Views/Shared/_DialogForgotPassword.cshtml
Normal file
22
Views/Shared/_DialogForgotPassword.cshtml
Normal file
@@ -0,0 +1,22 @@
|
||||
<div class="modal" id="forgotPasswordDialog" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<form class="js_service" data-service="/Api/User/Forgot">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Забравена парола</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label for="Username">Потребител (e-mail)<span class="text-danger">*</span></label>
|
||||
<input type="text" name="username" class="form-control" placeholder="Потребител" autocomplete="off" autofocus required>
|
||||
</div>
|
||||
<div class="form-error-message mb-3"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success mx-auto w-100">Изпрати</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
35
Views/Shared/_DialogLogin.cshtml
Normal file
35
Views/Shared/_DialogLogin.cshtml
Normal file
@@ -0,0 +1,35 @@
|
||||
<div class="modal" id="loginDialog" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<form class="js_service" data-service="/Api/User/Login">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Вход в системата</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label for="Username">Потребител<span class="---text-danger">*</span></label>
|
||||
<input type="text" name="username" >
|
||||
<!-- <input type="email" name="username" class="form-control" placeholder="Потребител" autocomplete="current-user" autofocus required>-->
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="Password">Парола<span class="---text-danger">*</span></label>
|
||||
<input type="password" name="password" class="form-control" placeholder="Парола" autocomplete="current-password" required minlength="5">
|
||||
<div class="d-flex flex-column align-items-end justify-content-end">
|
||||
<a class="toggle_dialog link-success" data-hide="loginDialog" data-show="forgotPasswordDialog" href="#"><small>Забравена парола?</small></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-error-message mb-3"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success mx-auto w-100">Влез</button>
|
||||
</div>
|
||||
<!--<div class="modal-footer d-flex flex-column align-items-center justify-content-center">
|
||||
Нямате регистрация?
|
||||
<a class="toggle_dialog link-success" data-hide="loginDialog" data-show="registerDialog" href="#">Регистрирай се</a>
|
||||
</div>
|
||||
-->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
38
Views/Shared/_DialogRegister.cshtml
Normal file
38
Views/Shared/_DialogRegister.cshtml
Normal file
@@ -0,0 +1,38 @@
|
||||
<div class="modal" id="registerDialog" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<form class="js_service" data-service="/Api/User/Register">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title">Регистрация</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="mb-3">
|
||||
<label for="Username">Потребител (e-mail)<span class="text-danger">*</span></label>
|
||||
<input type="email" name="username" class="form-control" placeholder="Потребител" autocomplete="off" autofocus required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="Username">Име<span class="text-danger">*</span></label>
|
||||
<input type="text" name="name" class="form-control" placeholder="Име" autocomplete="off" required minlength="5">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="Password">Парола<span class="text-danger">*</span></label>
|
||||
<input type="password" id="password" name="password" class="form-control" placeholder="Парола" autocomplete="off" required minlength="5">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="Password">Парола (отново)<span class="text-danger">*</span></label>
|
||||
<input type="password" name="repeat" class="form-control" placeholder="Парола" data-rule-equalTo="#password" autocomplete="off" required minlength="5">
|
||||
</div>
|
||||
<div class="form-error-message mb-3"></div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="submit" class="btn btn-success mx-auto w-100">Регистрация</button>
|
||||
</div>
|
||||
<div class="modal-footer d-flex flex-column align-items-center justify-content-center">
|
||||
Вече сте регистриран?
|
||||
<a class="toggle_dialog link-success" data-hide="registerDialog" data-show="loginDialog" href="#">Влез в системата</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
14
Views/Shared/_DialogWait.cshtml
Normal file
14
Views/Shared/_DialogWait.cshtml
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="modal" id="pleaseWaitDialog" data-backdrop="static" data-keyboard="true" role="dialog">
|
||||
<div class="modal-dialog modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Моля изчакайте...</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="text-center py-5">
|
||||
<div class="spinner-border text-success" role="status" style="width: 5rem; height: 5rem;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
98
Views/Shared/_LayoutDefault.cshtml
Normal file
98
Views/Shared/_LayoutDefault.cshtml
Normal file
@@ -0,0 +1,98 @@
|
||||
@model BasePageModel
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Виртуална библиотека</title>
|
||||
<link rel="stylesheet" href="~/css/vendor/bootstrap.css" />
|
||||
<link rel="stylesheet" href="~/css/vendor/fontawesome/css/all.css" />
|
||||
<link rel="stylesheet" href="~/css/common.css" />
|
||||
@await RenderSectionAsync("Styles", required: false)
|
||||
</head>
|
||||
<body class="d-flex flex-column min-vh-100">
|
||||
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-lg navbar navbar-dark">
|
||||
<div class="container-fluid">
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Покажи">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<a class="navbar-brand hstack" href="/Home/Index">
|
||||
<img src="~/@Configuration["Images"]/logo_sm.png" alt="Дигитална библиотека" width="40" height="80">
|
||||
|
||||
<span>
|
||||
<font color="#ffffff">
|
||||
<b> Дигитална библиотека</b>
|
||||
<br />
|
||||
@Configuration["OB_project"]
|
||||
<br />
|
||||
Университетска библиотека
|
||||
</font>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarTogglerDemo03">
|
||||
<div class="flex-grow-1"></div>
|
||||
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/Repository"><font color="#ffffff"><b><u>ДИГИТАЛНИ КОЛЕКЦИИ</u></b></font></a>
|
||||
<a class="nav-link" href="/Search"><font color="#ffffff"><b><u>ТЪРСЕНЕ</u></b></font></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
@if (Model.UserData == null)
|
||||
{
|
||||
<a class="nav-link"><font color="#ffffff">Непознат потребител</font></a>
|
||||
<a class="nav-link js_dialog" href="#" data-target="loginDialog"><font color="#ffffff"><b><u>ВХОД</u></b></font></a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="btn-group flex-wrap">
|
||||
<button class="btn btn-success btn-sm dropdown-toggle" type="button" id="dropdownAdminMenu" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
@Model.UserData.Name
|
||||
</button>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownAdminMenu">
|
||||
<li><a class="link-danger dropdown-item js_service" href="#" data-navigate="/" data-service="/Api/User/Logout">Излез</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main role="main" class="my-3">
|
||||
<div class="container-xl">
|
||||
@RenderBody( )
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="mt-auto border-top text-muted">
|
||||
<div class="footer">
|
||||
<div class="text-center">© 2022 - Дигитална библиотека InexLib/INEX-Project Ltd.</div>
|
||||
<div class="text-center">@Configuration["SN_project"]</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@if (Model.UserData == null)
|
||||
{
|
||||
@await Html.PartialAsync( "~/Views/Shared/_DialogLogin.cshtml" );
|
||||
@await Html.PartialAsync( "~/Views/Shared/_DialogRegister.cshtml" );
|
||||
@await Html.PartialAsync( "~/Views/Shared/_DialogForgotPassword.cshtml" );
|
||||
@await Html.PartialAsync( "~/Views/Shared/_DialogWait.cshtml" );
|
||||
}
|
||||
|
||||
<script src="~/js/vendor/jquery-3.6.0.min.js"></script>
|
||||
<script src="~/js/vendor/jquery.validate.min.js"></script>
|
||||
<script src="~/js/vendor/messages_bg.min.js"></script>
|
||||
<script src="~/js/vendor/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/common.js"></script>
|
||||
|
||||
<view-script append-version="false" />
|
||||
@await RenderSectionAsync("Scripts", required: false)
|
||||
|
||||
</body>
|
||||
</html>
|
||||
30
Views/Shared/_LayoutEmpty.cshtml
Normal file
30
Views/Shared/_LayoutEmpty.cshtml
Normal file
@@ -0,0 +1,30 @@
|
||||
@model BasePageModel
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Виртуална библиотека</title>
|
||||
<link rel="stylesheet" href="~/css/vendor/bootstrap.css" />
|
||||
<link rel="stylesheet" href="~/css/vendor/fontawesome/css/all.css" />
|
||||
<link rel="stylesheet" href="~/css/common.css" />
|
||||
@await RenderSectionAsync("Styles", required: false)
|
||||
</head>
|
||||
|
||||
<body class="vh-100">
|
||||
|
||||
<main role="main" class="vh-100">
|
||||
@RenderBody( )
|
||||
</main>
|
||||
|
||||
<script src="~/js/vendor/jquery-3.6.0.min.js"></script>
|
||||
<script src="~/js/vendor/jquery.validate.min.js"></script>
|
||||
<script src="~/js/vendor/messages_bg.min.js"></script>
|
||||
<script src="~/js/vendor/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/common.js"></script>
|
||||
|
||||
<view-script append-version="false" />
|
||||
@await RenderSectionAsync("Scripts", required: false)
|
||||
|
||||
</body>
|
||||
</html>
|
||||
7
Views/_ViewImports.cshtml
Normal file
7
Views/_ViewImports.cshtml
Normal file
@@ -0,0 +1,7 @@
|
||||
@using Library
|
||||
@using Library.Models
|
||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||
@addTagHelper *, Library
|
||||
|
||||
@using Microsoft.Extensions.Configuration
|
||||
@inject IConfiguration Configuration
|
||||
3
Views/_ViewStart.cshtml
Normal file
3
Views/_ViewStart.cshtml
Normal file
@@ -0,0 +1,3 @@
|
||||
@{
|
||||
Layout = "_LayoutDefault";
|
||||
}
|
||||
Reference in New Issue
Block a user