Implemented databases. Fixed nav bars. Some fixes

This commit is contained in:
Marcel Baumgartner
2023-04-19 22:35:18 +02:00
parent fd008e56aa
commit 746b4112bd
15 changed files with 181 additions and 166 deletions

View File

@@ -9,33 +9,36 @@
@inject NavigationManager NavigationManager
@inject CookieService CookieService
<div class="menu menu-column justify-content-center"
data-kt-menu="true">
<div class="menu-item">
<div class="dropdown">
<button class="btn btn-success dropdown-toggle" type="button" data-bs-toggle="dropdown">
<TL>Create</TL>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item py-2" href="/servers/create">
<TL>Server</TL>
</a>
</li>
<li>
<a class="dropdown-item py-2" href="/domains/create">
<TL>Domain</TL>
</a>
</li>
<li>
<a class="dropdown-item py-2" href="/websites/create">
<TL>Website</TL>
</a>
</li>
</ul>
@if (User != null)
{
<div class="menu menu-column justify-content-center"
data-kt-menu="true">
<div class="menu-item">
<div class="dropdown">
<button class="btn btn-success dropdown-toggle" type="button" data-bs-toggle="dropdown">
<TL>Create</TL>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item py-2" href="/servers/create">
<TL>Server</TL>
</a>
</li>
<li>
<a class="dropdown-item py-2" href="/domains/create">
<TL>Domain</TL>
</a>
</li>
<li>
<a class="dropdown-item py-2" href="/webspaces/create">
<TL>Webspace</TL>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
}
<div class="app-navbar flex-shrink-0">
<div class="app-navbar-item ms-1 ms-lg-3">

View File

@@ -45,11 +45,11 @@ else
</a>
</div>
<div class="menu-item">
<a class="menu-link" href="/websites">
<a class="menu-link" href="/webspaces">
<span class="menu-icon">
<i class="bx bx-globe"></i>
</span>
<span class="menu-title"><TL>Websites</TL></span>
<span class="menu-title"><TL>Webspaces</TL></span>
</a>
</div>
<div class="menu-item">
@@ -148,11 +148,11 @@ else
</div>
</div>
<div class="menu-item">
<a class="menu-link" href="/admin/websites">
<a class="menu-link" href="/admin/webspaces">
<span class="menu-icon">
<i class="bx bx-globe"></i>
</span>
<span class="menu-title"><TL>Websites</TL></span>
<span class="menu-title"><TL>Webspaces</TL></span>
</a>
</div>
<div class="menu-item">

View File

@@ -1,8 +1,10 @@
@using Moonlight.App.Database.Entities
@using Moonlight.App.Services
@using Moonlight.App.Services.Interop
@inject WebSpaceService WebSpaceService
@inject SmartTranslateService SmartTranslateService
@inject AlertService AlertService
<div class="row gy-5 g-xl-10">
<div class="col-xl-4 mb-xl-10">
@@ -26,54 +28,10 @@
<WButton Text="@(SmartTranslateService.Translate("Issue certificate"))"
WorkingText="@(SmartTranslateService.Translate("Working"))"
CssClasses="btn-success"
OnClick="CreateCertificate">
OnClick="IssueCertificate">
</WButton>
</div>
</div>
<div class="card-body">
@if (Certs.Any())
{
<table class="table align-middle gs-0 gy-3">
<thead>
<tr>
<th class="p-0 w-50px"></th>
<th class="p-0 min-w-150px"></th>
<th class="p-0 min-w-120px"></th>
</tr>
</thead>
<tbody>
@foreach (var cert in Certs)
{
<tr>
<td>
<div class="symbol symbol-50px me-2">
<span class="symbol-label">
<i class="bx bx-md bx-receipt text-dark"></i>
</span>
</div>
</td>
<td>
<span class="text-dark fw-bold fs-6">@(cert)</span>
</td>
<td class="text-end">
<WButton Text="@(SmartTranslateService.Translate("Delete"))"
WorkingText="@(SmartTranslateService.Translate("Working"))"
CssClasses="btn btn-danger"
OnClick="() => DeleteCertificate(cert)">
</WButton>
</td>
</tr>
}
</tbody>
</table>
}
else
{
<div class="alert alert-warning">
<TL>No SSL certificates found</TL>
</div>
}
</div>
</div>
</div>
</LazyLoader>
@@ -87,25 +45,16 @@
[CascadingParameter]
public WebSpace CurrentWebSpace { get; set; }
private string[] Certs;
private LazyLoader LazyLoader;
private async Task Load(LazyLoader lazyLoader)
private Task Load(LazyLoader lazyLoader)
{
await lazyLoader.SetText("Loading certificates");
Certs = await WebSpaceService.GetSslCertificates(CurrentWebSpace);
return Task.CompletedTask;
}
private async Task CreateCertificate()
private async Task IssueCertificate()
{
await WebSpaceService.CreateSslCertificate(CurrentWebSpace);
await LazyLoader.Reload();
}
private async Task DeleteCertificate(string name)
{
await WebSpaceService.DeleteSslCertificate(CurrentWebSpace, name);
await LazyLoader.Reload();
await WebSpaceService.IssueSslCertificate(CurrentWebSpace);
await AlertService.Success(SmartTranslateService.Translate("Lets Encrypt certificate successfully issued"));
}
}

View File

@@ -9,7 +9,7 @@
<LazyLoader @ref="LazyLoader" Load="Load">
<div class="card w-100 mb-4">
<div class="card-body py-2">
<div class="my-4 w-100">
<SmartForm Model="Model" OnValidSubmit="OnValidSubmit">
<div class="input-group">
@@ -34,7 +34,7 @@
<div class="card">
<div class="card-header">
<div class="card-title">
<span>@(database.Name) - @(database.Type.ToUpper().Replace("MYSQL", "MySQL"))</span>
<span>@(database.UserName) - @(database.UserName.ToUpper().Replace("MYSQL", "MySQL"))</span>
</div>
</div>
<div class="card-body me-1">
@@ -46,7 +46,7 @@
</label>
</td>
<td class="pb-2">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(Host)">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(CurrentWebSpace.CloudPanel.Host)">
</td>
</tr>
<tr>
@@ -56,7 +56,7 @@
</label>
</td>
<td class="pb-2">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(DatabaseServer.Port)">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="3306">
</td>
</tr>
<tr>
@@ -66,7 +66,17 @@
</label>
</td>
<td class="pb-2">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.Name)">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.UserName)">
</td>
</tr>
<tr>
<td>
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Password</TL>
</label>
</td>
<td class="pb-2">
<input type="text" class="form-control form-control-solid disabled blur-unless-hover" disabled="disabled" value="@(database.Password)">
</td>
</tr>
<tr>
@@ -76,7 +86,7 @@
</label>
</td>
<td class="pb-2">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.Name)">
<input type="text" class="form-control form-control-solid disabled" disabled="disabled" value="@(database.UserName)">
</td>
</tr>
</table>
@@ -104,9 +114,7 @@
public WebSpace CurrentWebSpace { get; set; }
private LazyLoader LazyLoader;
private Database[] Databases;
private DatabaseServer DatabaseServer;
private string Host;
private MySqlDatabase[] Databases;
private DatabaseDataModel Model = new();
@@ -122,7 +130,7 @@
await LazyLoader.Reload();
}
private async Task DeleteDatabase(Database database)
private async Task DeleteDatabase(MySqlDatabase database)
{
await WebSpaceService.DeleteDatabase(CurrentWebSpace, database);
await LazyLoader.Reload();

View File

@@ -34,8 +34,8 @@
</a>
</li>
<li class="nav-item mt-2">
<a class="nav-link text-active-primary ms-0 me-10 py-5 @(Index == 2 ? "active" : "")" href="/webspace/@(WebSpace.Id)/ftp">
<TL>Ftp</TL>
<a class="nav-link text-active-primary ms-0 me-10 py-5 @(Index == 2 ? "active" : "")" href="/webspace/@(WebSpace.Id)/sftp">
<TL>Sftp</TL>
</a>
</li>
<li class="nav-item mt-2">

View File

@@ -8,7 +8,7 @@
<div class="mt-7 row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Ftp Host</TL>
<TL>Sftp Host</TL>
</label>
</div>
<div class="col-md-9">
@@ -18,7 +18,7 @@
<div class="row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Ftp Port</TL>
<TL>Sftp Port</TL>
</label>
</div>
<div class="col-md-9">
@@ -28,7 +28,7 @@
<div class="row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Ftp Username</TL>
<TL>Sftp Username</TL>
</label>
</div>
<div class="col-md-9">
@@ -38,7 +38,7 @@
<div class="row fv-row mb-7">
<div class="col-md-3 text-md-start">
<label class="fs-6 fw-semibold form-label mt-3">
<TL>Ftp Password</TL>
<TL>Sftp Password</TL>
</label>
</div>
<div class="col-md-9">