254 lines
15 KiB
Plaintext
254 lines
15 KiB
Plaintext
<!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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"
|
|
integrity="sha384-GLhlTQ8iRABdZLl6O5oVMWSktQOp6b7In1Zl3/JiR3eZB1+nHN/8u8UqXj2l1tji" crossorigin="anonymous">
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
|
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
|
|
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
|
|
<script src="/public/js/dashboard.js"></script>
|
|
<link rel="stylesheet" href="/public/css/styles.css" />
|
|
<title>Dashboard</title>
|
|
<link rel="icon" href="/public/assets/homelab_logo.png" />
|
|
<link rel="apple-touch-icon" sizes="57x57" href="/public/assets/homelab_logo@2x.png">
|
|
<link rel="apple-touch-icon" sizes="60x60" href="/public/assets/homelab_logo@3x.png">
|
|
|
|
</head>
|
|
|
|
<body class="light-mode">
|
|
<nav class="navbar navbar-expand-md navbar-light bg-light header">
|
|
<a class="navbar-brand">
|
|
Dashboard CDN
|
|
<span class="badge badge-info ml-1">Beta</span>
|
|
</a>
|
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
|
|
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<ul class="navbar-nav ml-auto">
|
|
<li class="nav-item">
|
|
<form action="/dpanel/upload" class="form-inline">
|
|
<button class="btn btn-primary btn-round mr-2">
|
|
<i class="fas fa-cloud-upload-alt"></i> Téléverser un fichier
|
|
</button>
|
|
</form>
|
|
</li>
|
|
<li class="nav-item">
|
|
<form id="newFolderModalForm" class="form-inline ml-2">
|
|
<button type="submit" class="btn btn-success btn-round ml-2" id="newFolderModalBtn" data-toggle="modal" data-target="#newFolderModal">
|
|
<i class="fas fa-folder-open"></i> Nouveau Dossier
|
|
</button>
|
|
</form>
|
|
</li>
|
|
<li class="nav-item">
|
|
<button id="styleSwitcher" class="btn btn-link btn-round">
|
|
<i id="themeIcon"></i>
|
|
</button>
|
|
</li>
|
|
<li class="nav-item dropdown">
|
|
<a class="btn dropdown-toggle" id="accountDropdownBtn" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
<img src="https://api.dicebear.com/7.x/initials/svg?seed=<%= user.name %>" alt="User Icon" class="rounded-circle" style="width: 30px; height: 30px;" />
|
|
</a>
|
|
<div class="dropdown-menu dropdown-menu-right p-4 bg-dark text-white" id="accountDropdownMenu">
|
|
<div class="mb-3 text-center">
|
|
<h6 class="text-lg font-semibold"><%= user.name %></h6>
|
|
<p class="mb-0">ID: <%= user.id %></p>
|
|
<p class="mb-0">Role: <%= user.role %></p>
|
|
</div>
|
|
<div class="dropdown-divider mb-2"></div>
|
|
<% if (user.role === 'admin') { %>
|
|
<a class="dropdown-item text-center text-white no-hover custom-btn" href="/dpanel/dashboard/admin" id="adminLink">
|
|
<i class="fas fa-user-shield"></i> Administration du site
|
|
</a>
|
|
<% } %>
|
|
<a class="dropdown-item text-center text-white no-hover" href="/auth/logout" id="logoutLink">
|
|
<i class="fas fa-sign-out-alt text-white"></i> Déconnexion
|
|
</a>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container mt-4 table-container">
|
|
<div class="table-responsive">
|
|
<table class="table w-100 table table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>Nom du fichier</th>
|
|
<th>Taille</th>
|
|
<th class="text-right">Action</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% files.forEach(file => { %>
|
|
<tr data-extension="<%= file.extension %>" data-type="<%= file.type %>">
|
|
<% if (fileInfoNames.includes(file.name) || file.name === 'mm4alktpmei71.jpg') { %>
|
|
<td><a href="#" onclick="showFileInfo('<%= file.name %>')"><%= file.name %></a></td>
|
|
<% } else { %>
|
|
<td><%= file.name %></td>
|
|
<% } %>
|
|
<td>
|
|
<% if (file.type === 'folder') { %>
|
|
Dossier
|
|
<% } else { %>
|
|
<%
|
|
const fileSizeInBytes = file.size;
|
|
let fileSize;
|
|
if (fileSizeInBytes < 1024 * 1024) {
|
|
fileSize = `${(fileSizeInBytes / 1024).toFixed(2)} Ko`;
|
|
} else if (fileSizeInBytes < 1024 * 1024 * 1024) {
|
|
fileSize = `${(fileSizeInBytes / (1024 * 1024)).toFixed(2)} Mo`;
|
|
} else {
|
|
fileSize = `${(fileSizeInBytes / (1024 * 1024 * 1024)).toFixed(2)} Go`;
|
|
}
|
|
%>
|
|
<%= fileSize %>
|
|
<% } %>
|
|
</td>
|
|
<td class="d-flex justify-content-end align-items-center">
|
|
<% if (file.type === 'folder') { %>
|
|
<form class="file-actions mb-2">
|
|
<input type="hidden" name="folderName" value="<%= file.name %>">
|
|
<button class="delete-folder-button btn btn-danger btn-round" type="button">
|
|
<i class="fas fa-trash-alt"></i>
|
|
</button>
|
|
</form>
|
|
<a href="/dpanel/dashboard/folder/<%= file.name %>" class="btn btn-primary btn-round mb-2">
|
|
<i class="fas fa-folder-open"></i> Accéder
|
|
</a>
|
|
<% } else { %>
|
|
<button class="btn btn-primary btn-round" onclick="renameFile('<%= folderName %>', '<%= file.name %>')">
|
|
<i class="fas fa-edit"></i> Renommer
|
|
</button>
|
|
<form class="file-actions mb-2" id="deleteForm" action="/api/dpanel/dashboard/delete" method="post">
|
|
<input type="hidden" name="_method" value="DELETE">
|
|
<input type="hidden" name="filename" value="<%= file.name %>">
|
|
<button class="delete-button btn btn-danger btn-round" type="button" onclick="confirmDelete('<%= file.name %>')">
|
|
<i class="fas fa-trash-alt"></i>
|
|
</button>
|
|
</form>
|
|
<form class="file-actions mb-2">
|
|
<div class="copy-link-container d-flex align-items-center">
|
|
<input type="text" class="file-link form-control rounded mr-2" value="<%= file.url %>" readonly style="display: none;">
|
|
<button class="button copy-button btn btn-success btn-round" data-file="<%= file.name %>">
|
|
<i class="fas fa-copy"></i>
|
|
</button>
|
|
</div>
|
|
</form>
|
|
<form class="file-actions d-flex align-items-center mb-2" action="/api/dpanel/dashboard/movefile" method="post">
|
|
<input type="hidden" name="fileName" value="<%= file.name %>">
|
|
<select class="form-control rounded mr-2" name="folderName">
|
|
<option value="" disabled selected>Déplacer vers...</option>
|
|
<% allFolders.forEach(folder => { %>
|
|
<option value="<%= folder %>"><%= folder %></option>
|
|
<% }); %>
|
|
</select>
|
|
<button type="submit" class="btn btn-success btn-round">Déplacer</button>
|
|
</form>
|
|
|
|
<% } %>
|
|
</td>
|
|
</tr>
|
|
<% }); %>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="patchNoteModal" tabindex="-1" role="dialog" aria-labelledby="patchNoteModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog modal-lg rounded-lg" role="document">
|
|
<div class="modal-content dark-mode">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="patchNoteModalLabel">Patch Note<span class="badge badge-info ml-1">v1.0.0-beta.10</span></h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="patch-note-item pl-3">
|
|
<p><i class="fas fa-tools"></i> Améliorations :</p>
|
|
<ul>
|
|
<li>Refactor total de l'application pour une performance optimisée et une maintenance simplifiée.<span class="badge badge-success ml-1">AMÉLIORATION MAJEURE</span></li>
|
|
<li>Renforcement de la sécurité à tous les niveaux de l'application.<span class="badge badge-success ml-1">AMÉLIORATION MAJEURE</span></li>
|
|
<li>Améliorations mineures pour renforcer la stabilité globale de l'application.<span class="badge badge-success ml-1">AMÉLIORATION MINEURE</span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="patch-note-item pl-3">
|
|
<p><i class="fab fa-docker"></i> Version Docker :</p>
|
|
<ul>
|
|
<li>La version Docker est désormais la principale version utilisée, offrant une gestion plus flexible et une déployabilité accrue.<span class="badge badge-info ml-1">NOUVEAU</span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="patch-note-item pl-3">
|
|
<p><i class="fas fa-exclamation-triangle"></i> Avis :</p>
|
|
<ul>
|
|
<li>La version en dur est désormais abandonnée et ne sera plus maintenue à jour.<span class="badge badge-danger ml-1">OBSOLÈTE</span></li>
|
|
<li>Les failles de sécurité critiques ne seront plus mises à jour sur la version en dur. Il est fortement recommandé de migrer vers la version Docker pour bénéficier des correctifs de sécurité continus.<span class="badge badge-danger ml-1">OBSOLÈTE</span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="patch-note-item pl-3">
|
|
<p>Remarque : Nous apprécions vos retours d'expérience et vos rapports de bogues pour continuer à améliorer notre plateforme. Merci pour votre soutien continu !</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
|
|
<button type="button" class="btn btn-primary" onclick="displayMetadata()">Afficher les métadonnées</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="metadataModal" class="modal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Metadata</h5>
|
|
<button type="button" class="close" data-dismiss="modal" onclick="closeModal()" aria-label="Fermer">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p><i class="fas fa-code-branch"></i> Version de Build: <span id="buildVersion"></span></p>
|
|
<p><i class="fab fa-node"></i> Version de Node.js: <span id="nodeVersion"></span></p>
|
|
<p><i class="fas fa-server"></i> Version de Express.js: <span id="expressVersion"></span></p>
|
|
<p><i class="fas fa-hashtag"></i> SHA de Build: <span id="buildSha"></span></p>
|
|
<p><i class="fas fa-windows"></i> Type d'OS: <span id="osType"></span></p>
|
|
<p><i class="fas fa-laptop-code"></i> Version d'OS: <span id="osRelease"></span></p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-primary btn-block" data-dismiss="modal" onclick="closeModal()">OK</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<footer class="py-3 my-4">
|
|
<ul class="nav justify-content-center border-bottom pb-3 mb-3">
|
|
<li class="nav-item">
|
|
<a class="nav-link px-2 text-muted" href="#" data-toggle="modal" data-target="#patchNoteModal">
|
|
Version: 1.0.0-beta.10
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<div class="d-flex justify-content-center align-items-center">
|
|
<p class="text-center text-muted mb-0">© 2024 SwiftLogic Labs</p>
|
|
<div class="ml-3">
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|