Commit a7235314 authored by Zéfling's avatar Zéfling 🎨
Browse files

Selection et suppresion

Bon j'ai réussi à faire la selection multiple avec [ctrl]. Bon ça chie un peu parce que j'ai bloqué la selection. Faudra que je trouve une solution pour qu'il mette vraiment le focus sur la fenêtre quand on clique dedans :P

La suppresion avec [suppr.] demande demande confirmation et supprimer fichier et dossier (merci le travail que j'ai fais pour mon site : c/c). (L'arbre n'est pas encore géré pour la suppresion de dossier). Si il n'y a rien de selection il ne fait rien (comme l'explorateur window :P).

Je me souviens plus du sujet c'est quoi toute le fonction qu'il doit supporter ? (j'arrive pas à le retrouver).

14/03/2008
parent 5131e6f6
......@@ -14,7 +14,7 @@ html, body {
body {
display : table;
border-spacing: 3px;
border-spacing: 3px;
}
#conteneur {
......@@ -66,7 +66,6 @@ body {
}
#fichiers {
display: table-cell;
overflow: auto;
vertical-align:top;
}
#fichiers #tab {
......@@ -76,15 +75,14 @@ body {
display: table;
}
#fichiers #tab div {
display: table-cell;
display: table-cell;
}
#fichiers #tab #barre_type, #fichiers #tab #ligne_fichier {
#fichiers #tab .barre_type, #fichiers #tab .ligne_fichier {
display : table-row;
width:100%;
}
#fichiers #tab #barre_type div {
#fichiers #tab .barre_type div {
background-color:#b1c4df;
border-top : 1px solid #959595;
border-left : 1px solid #959595;
......@@ -92,14 +90,29 @@ body {
border-right : 1px solid white;
}
#fichiers #tab #ligne_fichier div {
#fichiers #tab .ligne_fichier div {
border-bottom : 1px solid #959595;
}
#fichiers #tab #ligne_fichier:hover {
#fichiers #tab .ligne_fichier:hover {
display : table-row;
background-color:#dbeaff;
}
#fichiers #tab .date {
width:130px;
text-align:right;
padding-right: 4px;
}
#fichiers #tab .type {
width:130px;
text-align:left;
padding-left: 4px;
}
#fichiers #tab .taille {
width:100px;
text-align:right;
padding-right: 4px;
}
\ No newline at end of file
// Pas de selection
function tuer(e){ return false; }
document.onSelect=new Function ("return false"); // Pour IE
if (window.sidebar) { document.onmousedown = tuer; } // Pour les autres
// supression du menucontextuel
document.oncontextmenu = tuer;
// gestion de la selection
var fichiers = new Array();
// touche de contrôles
var ctrl = false;
var alt = false;
var shift = false;
function touche(e) {
var latouche;
if (e) if (e.charCode) latouche = e.charCode; else latouche = e.keyCode; else latouche = event.keyCode;
//alert(latouche);
if (latouche == 16) {
shift = true;
//document.getElementById('info').innerHTML = 'shift';
}
if (latouche == 17) {
ctrl = true;
}
if (latouche == 18) {
alt = true;
}
if (latouche == 46) {
supprimerFichier();
}
// action sur la touche [F5] (actualiser)
if (latouche == 116) {
if(confirm('Est-vous sûr de vouloir actualiser la page ?')) window.close(); else return false;
}
}
document.onkeydown = touche;
document.onkeyup = function () {
shift = false;
ctrl = false;
alt = false;
//document.getElementById('info').innerHTML = '...';
};
function trace () {
var nbrFichiers = fichiers.length;
var slt = '';
for(i=0; i < nbrFichiers; i++) {
slt += document.getElementById(fichiers[i]).title+' ; ';
}
document.getElementById('info').innerHTML = slt;
}
function lister() {
var nbrFichiers = fichiers.length;
var slt = '';
for(i=0; i < nbrFichiers; i++) {
list = document.getElementById(fichiers[i]).title.split('/');
slt += list[list.length-1]+'\n';
}
return slt;
}
function listeAdresse () {
var nbrFichiers = fichiers.length;
var tab = new Array();
for(i=0; i < nbrFichiers; i++) {
tab[tab.length] = document.getElementById(fichiers[i]).title;
}
return tab;
}
function listeEfface() {
fichiers = new Array();
}
function testSelectionFichier (div) {
nom = div.id;
var selection = true;
if (!ctrl) {
var temp = fichiers;
nbrFichiers = temp.length;
//alert(nbrFichiers)
for(j=0; j < nbrFichiers; j++) {
if (temp[j] != nom) {
selectionFichier(temp[j], document.getElementById(temp[j]), false);
}
}
} else {
unselect = false;
}
var nbrFichiers = fichiers.length;
// deselection
for(i=0; i < nbrFichiers; i++) {
if (fichiers[i] == nom) {
selectionFichier(nom, div, false);
selection = false;
}
}
if (selection) {
selectionFichier(nom, div, true);
}
trace ();
}
function selectionFichier(nom, div, etat) {
if (etat) {
div.style.backgroundColor = "#fbe6ab";
fichiers[fichiers.length] = nom;
} else {
div.style.backgroundColor = "transparent";
var temp = new Array();
var nbrFichiers = fichiers.length;
//alert(nbrFichiers);
var j = 0;
for(i=0; i < nbrFichiers; i++){
//alert(nom+" != "+fichiers[i]);
if (nom != fichiers[i]) {
temp[j++] = fichiers[i];
}
}
fichiers = temp;
}
}
function supprimerFichier () {
if (fichiers.length > 0 && confirm("Êtes-vous certains de vouloir supprimer :\n"+lister())) {
xajax_suppression(fichiers, listeAdresse()) ;
}
}
\ No newline at end of file
<?php
require_once('xajax/xajax.inc.php');
function arbreDossier ($rep) {
function arbreDossierOuvrir ($rep) {
$objResponse = new xajaxResponse();
$objResponse->addClear($rep, "innerHTML");
$objResponse->addAppend($rep, "innerHTML", lireDossier ($rep));
$r1 = afficherDossier ($rep);
$objResponse->loadXML($r1);
return $objResponse->getXML();
return $objResponse->getXML();
}
function arbreDossierFermer ($rep, $courant) {
}
function afficherDossier ($rep) {
$objResponse = new xajaxResponse();
$objResponse->addClear("tab", "innerHTML");
$objResponse->addAppend("tab", "innerHTML", listerDossier ($rep));
$objResponse->addClear("fichiers", "innerHTML");
$objResponse->addAppend("fichiers", "innerHTML", listerDossier ($rep));
$objResponse->addClear("chemin", "innerHTML");
$objResponse->addAppend("chemin", "innerHTML", 'Chemin : '.$rep);
$objResponse->addAppend("chemin", "innerHTML", 'Chemin : '.substr($rep,6));
$objResponse->addScriptCall(listeEfface);
return $objResponse->getXML();
}
function suppression ($liste, $adresses) {
$objResponse = new xajaxResponse();
$nbrFichier = count($liste);
for ($i=0; $i< $nbrFichier; $i++) {
if (is_file ($adresses[$i])) {
unlink($adresses[$i]);
} else {
ecraserDossier($adresses[$i]);
}
$objResponse->addRemove($liste[$i], "innerHTML");
}
$objResponse->addScriptCall(listeEfface);
return $objResponse->getXML();
}
$xajax = new xajax(); //On initialise l'objet xajax
$xajax->setCharEncoding("utf-8");
$xajax->registerFunction("arbreDossier");
$xajax->registerFunction("arbreDossierOuvrir");
$xajax->registerFunction("arbreDossierFermet");
$xajax->registerFunction("suppression");
$xajax->registerFunction("afficherDossier");
$xajax->processRequests();
// suppression de façon récurcive tout ce qui se trouve dans un dossier
function ecraserDossier ($adresse) {
if ($erreur != '') return $erreur;
$Dossier = dir($adresse);
while ($fichier = $Dossier->read()) {
if ($erreur != '') return $erreur;
if(str_replace('.', '', $fichier) != ''){
$k = (is_dir((($adresse != '.') ? $adresse.'/' : '').$fichier)) ? 0 : 1;
if ($k == 0) {
$erreur = ecraserDossier ($adresse.'/'.$fichier);
if ($erreur != '') return $erreur;
} else {
if (!unlink($adresse.'/'.$fichier)) return 'Une erreur s\'est produite sur le fichier \''.$Dossier.'/'.$fichier.'\'.<br />';
}
}
}
$Dossier -> close();
if (!rmdir($adresse)) return 'Une erreur s\'est produite sur le dossier \''.$adresse.'\'.<br />';
}
//Fonction qui va se charger de faire les requetes
function lireDossier ($rep, $ret = 1) {
$aRep = explode ('/', $rep);
$repCourant = $aRep[count($aRep)-1];
$rep .= '/';
$dir = opendir($rep);
......@@ -54,7 +93,7 @@ function lireDossier ($rep, $ret = 1) {
// si il y a des sous-dossiers ou non
if ($ssDossier) {
$id = ' id="'.$rep.$f.'"';
$onclick = ' onclick="xajax_arbreDossier(\''.$rep.$f.'\');return false;"';
$onclick = ' onclick="xajax_arbreDossierOuvrir(\''.$rep.$f.'\');return false;"';
} else {
$id = '';
$onclick = ' onclick="xajax_afficherDossier(\''.$rep.$f.'\');return false;"';
......@@ -73,21 +112,79 @@ function listerDossier ($rep) {
$dir = opendir($rep);
$liste = '<div id="barre_type"><div class="nom">Nom</div><div class="taille">Taille</div><div class="type">Type</div><div class="date">Date Modification</div></div>';
$liste = '<div class="barre_type"><div class="nom">Nom</div><div class="taille">Taille</div><div class="type">Type</div><div class="date">Date Modification</div></div>';
while ($f = readdir($dir)) {
if ($f != '.' && $f != '..') {
$liste .= '<div id="ligne_fichier">';
if (!is_file($rep.$f)) {
$liste .= '<div class="ligne_fichier" id="f-'.md5($rep.$f).'" title="'.addslashes($rep.$f).'" onclick="testSelectionFichier(this)" ondblclick="xajax_arbreDossierOuvrir(\''.$rep.$f.'\')">';
} else {
$liste .= '<div class="ligne_fichier" id="f-'.md5($rep.$f).'" title="'.addslashes($rep.$f).'" onclick="testSelectionFichier(this)" >';
}
$liste .= '<div class="nom">'.$f.'</div>';
$liste .= '<div class="taille">'.filesize($rep.$f).'</div>';
$liste .= '<div class="type">'.filetype($rep.$f).'</div>';
$liste .= '<div class="date">'.filemtime($rep.$f).'</div>';
$liste .= '<div class="taille">'.taille(filesize($rep.$f), 4).'</div>';
$liste .= '<div class="type">'.type($rep, $f).'</div>';
$liste .= '<div class="date">'.dateFormat(filemtime($rep.$f)).'</div>';
$liste .= '</div>';
}
}
closedir($dir);
return $liste;
return '<div id="tab">'.$liste.'</div>';
}
function dateFormat($date) {
return date ('d/m/Y H:i', $date);
}
function taille ($taille, $nombre) {
if ($taille < 1024) {
$taille .= ' o';
} else if ($taille < 1024*1024) {
$taille = ($taille/1024);
$taille = substr($taille, 0, $nombre);
if (substr($taille, -1, 1) == '.') $taille = substr($taille, 0, -1);
$taille .= ' Kio';
} else if ($taille < 1024*1024*1024) {
$taille = ($taille/(1024*1024));
$taille = substr($taille, 0, $nombre);
if (substr($taille, -1, 1) == '.') $taille = substr($taille, 0, 1);
$taille .= ' Mio';
} else {
$taille = ($taille/(1024*1024*1024));
$taille = substr($taille, 0, $nombre);
if (substr($taille, -1, 1) == '.') $taille = substr($taille, 0, 1);
$taille .= ' Gio';
}
if (strpos(',', $taille) == $nombre) $taille = substr($taille, 0, $nombre).substr($taille, $nombre+1);
return str_replace('.', ',', $taille);
}
function type ($rep, $nom) {
if (is_file($rep.$nom)) {
$a = explode ('.', strtolower($nom));
$types = array(
'png' => 'Image PNG',
'jpg' => 'Image JPEG',
'gif' => 'Image GIF',
'php' => 'Script PHP',
'js' => 'Script JS',
'txt' => 'Texte',
'css' => 'Feuille de style',
);
if (count($a) > 1) {
$ext = array_pop($a);
} else {
return '';
}
if (isset($types[$ext])) {
return $types[$ext];
} else {
return 'Fichier '.strtoupper($ext);
}
} else {
return 'Dossier';
}
}
?>
......@@ -101,24 +198,17 @@ function listerDossier ($rep) {
<?php $xajax->printJavascript('xajax/'); ?>
<script src="scriptaculous/lib/prototype.js" type="text/javascript"></script>
<script src="scriptaculous/src/scriptaculous.js" type="text/javascript"></script>
<script src="index.js" type="text/javascript"></script>
</head>
<body onload="xajax_arbreDossier('racine');">
<body onload="xajax_arbreDossierOuvrir('racine');">
<div id="conteneur">
<div id="tete">
<div id="chemin"></div>
<div id="chemin">&nbsp;</div>
<div id="info">...</div>
</div>
<div id="exploreur">
<div id="arbre"><?php echo lireDossier ('racine', 0) ?></div>
<div id="fichiers">
<div id="tab">
<div id="barre_type">
<div class="nom">Nom</div>
<div class="taille">Taille</div>
<div class="type">Type</div>
<div class="date">Date Modification</div>
</div>
</div>
</div>
<div id="fichiers"></div>
</div>
</div>
</body>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment