File "debug07.php"
Full Path: /home/analogde/www/CGI/uploads/debug07.php
File size: 4.84 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Explorateur de fichiers</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
ul {
list-style-type: none;
padding-left: 20px; /* Espacement pour l'arborescence */
position: relative;
}
li {
position: relative;
padding: 5px 0;
cursor: pointer;
}
li::before {
content: '';
position: absolute;
left: -15px; /* Ajustez cette valeur pour aligner avec le texte */
top: 10px; /* Ajustez cette valeur pour aligner avec le texte */
width: 1px; /* Largeur de la ligne */
height: calc(100% - 10px); /* Hauteur de la ligne pour couvrir le reste du nœud */
background: #ccc; /* Couleur de la ligne */
}
li:last-child::before {
height: 50%; /* Si c'est le dernier élément, réduire la ligne */
top: 50%;
}
li.directory::after {
content: '';
position: absolute;
left: -15px; /* Positionne la ligne pour le répertoire */
top: 5px; /* Ajustez cette valeur pour aligner avec le texte */
width: 10px; /* Largeur de la ligne pour la connexion vers les sous-répertoires */
height: 1px; /* Longueur de la ligne */
background: #ccc; /* Couleur de la ligne */
}
.context-menu {
display: none;
position: absolute;
background-color: white;
border: 1px solid #ccc;
box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.2);
padding: 0;
z-index: 1000;
min-width: 200px;
max-width: 400px;
}
.context-menu ul {
margin: 0;
padding: 0;
list-style-type: none !important; /* Supprime les puces de la liste */
}
.context-menu ul li {
list-style: none !important; /* Supprime les puces de la liste */
padding: 8px 12px;
cursor: pointer;
background-color: white;
}
.context-menu ul li:hover {
background-color: #0078d4;
color: white;
}
</style>
</head>
<body>
<ul id="tree-view"></ul>
<div id="context-menu" class="context-menu">
<ul>
<li>Ouvrir</li>
<li>Supprimer</li>
<li>Renommer</li>
</ul>
</div>
<script>
// Fonction pour créer l'arborescence
function createTreeView(tree, parentElement) {
tree.forEach(item => {
const li = document.createElement('li');
li.setAttribute('data-level', item.level);
if (item.type === 'directory') {
li.classList.add('directory');
li.innerHTML = item.name;
const ul = document.createElement('ul');
ul.style.display = 'none'; // Masquer les sous-arborescences par défaut
createTreeView(item.children, ul);
li.appendChild(ul);
li.addEventListener('click', function (e) {
const subTree = this.querySelector('ul');
if (subTree) {
subTree.style.display = subTree.style.display === 'none' ? 'block' : 'none';
}
e.stopPropagation();
});
} else if (item.type === 'file') {
li.classList.add('file');
li.innerHTML = item.name;
li.addEventListener('contextmenu', function (e) {
e.preventDefault();
showContextMenu(e, item);
});
li.addEventListener('click', function (e) {
e.stopPropagation();
});
}
parentElement.appendChild(li);
});
}
function showContextMenu(event, item) {
const contextMenu = document.getElementById('context-menu');
contextMenu.style.top = event.clientY + 'px';
contextMenu.style.left = event.clientX + 'px';
contextMenu.style.display = 'block';
}
window.addEventListener('click', function () {
const contextMenu = document.getElementById('context-menu');
contextMenu.style.display = 'none';
});
// Charger les données depuis le script PHP
fetch('extract_files.php') // Remplacez par le chemin vers votre fichier PHP
.then(response => response.json())
.then(data => createTreeView(data, document.getElementById('tree-view')))
.catch(error => console.error('Erreur:', error));
</script>
</body>
</html>