Первая загрузка
This commit is contained in:
96
src/Otchinslator/Components/Layout/MainLayout.razor
Normal file
96
src/Otchinslator/Components/Layout/MainLayout.razor
Normal file
@@ -0,0 +1,96 @@
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@inject AuthenticationStateProvider AuthenticationStateProvider
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
@code {
|
||||
private MarkupString GetLinkIfAuth(string link) => new MarkupString(AuthenticationStateProvider.GetAuthenticationStateAsync().Result.User.Identity?.IsAuthenticated == true ? link : "MicrosoftIdentity/Account/SignIn");
|
||||
}
|
||||
|
||||
<body class="flex items-center accent-error justify-center min-h-screen font-roboto text-primary-content">
|
||||
<div class="relative">
|
||||
@* TODO: Дописать модальное окно *@
|
||||
<dialog id="info_modal" class="modal modal-bottom sm:modal-middle">
|
||||
<div class="modal-box">
|
||||
<h3 class="text-lg font-bold">Сервис отчислений</h3>
|
||||
<p class="py-4">Привет, это сервис отчислений!<br>Автор: <a target="_blank" href="https://t.me/serega404">@@serega404</a></p>
|
||||
<div class="modal-action">
|
||||
<form method="dialog">
|
||||
<button class="btn">Закрыть</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</dialog>
|
||||
@* TODO: Исправить расположение названия *@
|
||||
<div class="text-center font-bold text-4xl md:text-5xl w-max absolute left-1/2 -top-1/3 transform -translate-x-1/2 italic"><br>Отчислятор 3000</div>
|
||||
<div class="flex flex-col space-y-4 w-96">
|
||||
<div class="card rounded-badge bg-base-200 p-4">
|
||||
<h2 class="card-title text-center text-3xl justify-center my-4">Мне нужно...</h2>
|
||||
<div class="flex flex-col space-y-4 mt-1">
|
||||
<a href="@GetLinkIfAuth("otchislenie")" class="btn h-16 btn-primary rounded-full text-2xl relative">
|
||||
Отчислиться
|
||||
<div class="absolute bg-base-200 rounded-full right-1 w-14 h-14">
|
||||
@{
|
||||
if (new Random().Next(0, 100) < 10)
|
||||
{
|
||||
<img class="p-2" src="img/soldier.svg" alt=""/>
|
||||
}
|
||||
else
|
||||
{
|
||||
<img class="p-3" src="img/wheelchair.svg" alt=""/>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</a>
|
||||
<button class="btn h-16 btn-primary rounded-full text-2xl relative">
|
||||
Понизить курс
|
||||
<div class="absolute bg-base-200 rounded-full right-1 w-14 h-14">
|
||||
<svg class="p-2" fill="none" viewBox="0 0 24 24" id="down-trend-round" xmlns="http://www.w3.org/2000/svg">
|
||||
<path id="primary" d="M3,7l5.79,5.79a1,1,0,0,0,1.42,0l2.58-2.58a1,1,0,0,1,1.42,0L21,17" style="fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5;"></path><polyline id="primary-2" data-name="primary" points="17 17 21 17 21 13" style="fill: none; stroke: rgb(0, 0, 0); stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5;"></polyline>
|
||||
</svg>
|
||||
</div>
|
||||
<i class="absolute text-sm bottom-0 text-base-200 font-medium">временно не доступно</i>
|
||||
</button>
|
||||
<button class="btn h-16 btn-primary p-0 rounded-full text-2xl relative">
|
||||
Уйти в академ
|
||||
<div class="absolute bg-base-200 rounded-full right-1 w-14 h-14">
|
||||
<img class="p-2" src="img/akadem.svg" alt=""/>
|
||||
</div>
|
||||
<i class="absolute text-sm bottom-0 text-base-200 font-medium">временно не доступно</i>
|
||||
</button>
|
||||
<div class="divider"></div>
|
||||
<CascadingAuthenticationState>
|
||||
<AuthorizeView>
|
||||
<Authorized>
|
||||
<a href="MicrosoftIdentity/Account/SignOut" class="btn btn-lg btn-primary rounded-full text-2xl relative">
|
||||
@context.User.Identity?.Name!.Split("@")[0]
|
||||
<div class="absolute bg-base-200 rounded-full right-1 w-14 h-14">
|
||||
<svg class="p-3" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.5 15V19.5H5.5V5.5H16.5V10M10 12.5H22.5" stroke="#121923" stroke-width="1.2"/>
|
||||
<path d="M20 10L22.5 12.5L20 15" stroke="#121923" stroke-width="1.2"/>
|
||||
</svg>
|
||||
</div>
|
||||
</a>
|
||||
</Authorized>
|
||||
<NotAuthorized>
|
||||
<a class="btn btn-lg bg-green-300 rounded-full text-2xl" href="MicrosoftIdentity/Account/SignIn">Начать</a>
|
||||
</NotAuthorized>
|
||||
</AuthorizeView>
|
||||
</CascadingAuthenticationState>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button onclick="info_modal.showModal()" class="btn btn-sm btn-primary bg-base-200 rounded-full text-1xl">?</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@* <footer class="card fixed bottom-0 w-96 h-20 bg-base-200 rounded-badge p-4 mb-3"> *@
|
||||
@* <div class="flex justify-center items-center"> *@
|
||||
@* <ul class="steps justify-center center"> *@
|
||||
@* <li class="step step-primary">Выбор</li> *@
|
||||
@* <li class="step">...</li> *@
|
||||
@* <li class="step">Заявление</li> *@
|
||||
@* <li class="step" data-content="♿">Свобода</li> *@
|
||||
@* </ul> *@
|
||||
@* </div> *@
|
||||
@* </footer> *@
|
||||
</body>
|
||||
36
src/Otchinslator/Components/Layout/MainLayoutBACK.razor
Normal file
36
src/Otchinslator/Components/Layout/MainLayoutBACK.razor
Normal file
@@ -0,0 +1,36 @@
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@inherits LayoutComponentBase
|
||||
|
||||
<div class="page">
|
||||
<div class="sidebar">
|
||||
@* <NavMenu/> *@
|
||||
</div>
|
||||
|
||||
<main>
|
||||
<div class="top-row px-4">
|
||||
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
|
||||
<!-- Add @using Microsoft.AspNetCore.Components.Authorization at the top-->
|
||||
<CascadingAuthenticationState>
|
||||
<AuthorizeView>
|
||||
<Authorized>
|
||||
<a asp-controller="Home" asp-action="Index">Welcome @context.User.Identity?.Name!</a>
|
||||
<a href="MicrosoftIdentity/Account/SignOut">Logout</a>
|
||||
</Authorized>
|
||||
<NotAuthorized>
|
||||
<a href="MicrosoftIdentity/Account/SignIn">Login</a>
|
||||
</NotAuthorized>
|
||||
</AuthorizeView>
|
||||
</CascadingAuthenticationState>
|
||||
</div>
|
||||
|
||||
<article class="content px-4">
|
||||
@Body
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div id="blazor-error-ui">
|
||||
An unhandled error has occurred.
|
||||
<a href="" class="reload">Reload</a>
|
||||
<a class="dismiss">🗙</a>
|
||||
</div>
|
||||
96
src/Otchinslator/Components/Layout/MainLayoutBACK.razor.css
Normal file
96
src/Otchinslator/Components/Layout/MainLayoutBACK.razor.css
Normal file
@@ -0,0 +1,96 @@
|
||||
.page {
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
|
||||
}
|
||||
|
||||
.top-row {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #d6d5d5;
|
||||
justify-content: flex-end;
|
||||
height: 3.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.top-row ::deep a, .top-row ::deep .btn-link {
|
||||
white-space: nowrap;
|
||||
margin-left: 1.5rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.top-row ::deep a:first-child {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
.top-row {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.top-row ::deep a, .top-row ::deep .btn-link {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 641px) {
|
||||
.page {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 250px;
|
||||
height: 100vh;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.top-row {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-row.auth ::deep a:first-child {
|
||||
flex: 1;
|
||||
text-align: right;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
.top-row, article {
|
||||
padding-left: 2rem !important;
|
||||
padding-right: 1.5rem !important;
|
||||
}
|
||||
}
|
||||
|
||||
#blazor-error-ui {
|
||||
background: lightyellow;
|
||||
bottom: 0;
|
||||
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
|
||||
display: none;
|
||||
left: 0;
|
||||
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
#blazor-error-ui .dismiss {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 0.75rem;
|
||||
top: 0.5rem;
|
||||
}
|
||||
35
src/Otchinslator/Components/Layout/NavMenu.razor
Normal file
35
src/Otchinslator/Components/Layout/NavMenu.razor
Normal file
@@ -0,0 +1,35 @@
|
||||
@inject NavigationManager Navigation
|
||||
|
||||
@code {
|
||||
private static string _returnClass = "step-primary";
|
||||
private int _lvl = 0;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
base.OnInitialized();
|
||||
switch (Navigation.ToBaseRelativePath(Navigation.Uri))
|
||||
{
|
||||
case "otchislenie/questionnaire":
|
||||
case "otchislenie":
|
||||
_lvl = 1;
|
||||
break;
|
||||
case "otchislenie/statement":
|
||||
_lvl = 2;
|
||||
break;
|
||||
case "otchislenie/congratulation":
|
||||
_lvl = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<footer class="card fixed bottom-0 w-96 h-20 bg-base-200 rounded-badge p-4 mb-3">
|
||||
<div class="flex justify-center items-center">
|
||||
<ul class="steps justify-center center">
|
||||
<a href="/" class="step step-primary">Выбор</a>
|
||||
<a href="/otchislenie/questionnaire" class="step @((MarkupString)(_lvl >= 1 ? _returnClass : ""))">Анкета</a>
|
||||
<a href="/otchislenie/statement" class="step @((MarkupString)(_lvl >= 2 ? _returnClass : ""))">Заявление</a>
|
||||
<a href="/otchislenie/congratulation" class="step @((MarkupString)(_lvl >= 3 ? _returnClass : ""))" data-content="♿">Свобода</a>
|
||||
</ul>
|
||||
</div>
|
||||
</footer>
|
||||
11
src/Otchinslator/Components/Layout/OtchislenieLayout.razor
Normal file
11
src/Otchinslator/Components/Layout/OtchislenieLayout.razor
Normal file
@@ -0,0 +1,11 @@
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@inherits LayoutComponentBase
|
||||
@attribute [Authorize] // НЕ РАБОТАЕТ
|
||||
|
||||
<div class="flex items-center accent-error justify-center min-h-screen font-roboto text-primary-content">
|
||||
|
||||
@Body
|
||||
|
||||
<NavMenu/>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user