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

en objet

J'ai ajouté une barre d'état

17/03/2008
parent 93872d4c
<?php
class Dossier {
private $rep = '';
public $nbDossiers = 0;
public $nbFichiers = 0;
public $taille = 0;
public $scriptDraggable = '';
public $scriptDroppable = '';
public function __construct ($rep) {
$this->rep = $rep;
}
public function lireDossier ($ret = 1) {
$rep = $this->rep;
$aRep = explode ('/', $rep);
$repCourant = $aRep[count($aRep)-1];
$rep .= '/';
$dir = opendir($rep);
$liste = '';
while ($f = readdir($dir)) {
if(!is_file($rep.$f) && $f != '.' && $f != '..') {
// test si il y a des sous dossiers
$ssDir = opendir($rep.$f.'/');
$ssDossier = false;
while (($ssf = readdir($ssDir)) && !$ssDossier) {
if(!is_file($rep.$f.'/'.$ssf) && $ssf != '.' && $ssf != '..') {
$ssDossier = true;
}
}
// si il y a des sous-dossiers ou non
if ($ssDossier) {
$id = ' id="'.$rep.$f.'"';
$onclick = ' onclick="xajax_arbreDossierOuvrir(\''.$rep.$f.'\');return false;"';
$typeF = 'close';
$onclickImg = ' onclick="xajax_arbreDossierOuvrir(\''.$rep.$f.'\');"';
} else {
$id = '';
$onclick = ' onclick="xajax_afficherDossier(\''.$rep.$f.'\');return false;"';
$typeF = 'none';
$onclickImg = '';
}
$liste .= '<li'.$id.'><img src="icones/folder_'.$typeF.'.png" alt=""'.$onclickImg.'/><a href=""'.$onclick.'>'.$f.'</a></li>';
}
}
closedir($dir);
return (($ret == 1) ? '<img src="icones/folder_open.png" alt="" onclick="xajax_arbreDossierFermer(\''.$rep.$f.'\');" /><a href="" onclick="xajax_afficherDossier(\''.$rep.$f.'\');return false;">'.$repCourant.'</a>' : '').'<ul id="'.$rep.'">'.$liste.'</ul>';
/*Droppables.add('panier',
{accept:'products',
onDrop:function(element)
{
//ajax.updater
new Ajax.Updater('panier','ajpan.php',
{
parameters:'id=' + encodeURIComponent(element.id)
//parameters:'id=' + encodeURIComponent(idprod)
})
}
})
*/
}
//Fonction qui va se charger de faire les requetes
public function listerDossier () {
$rep = $this->rep;
$nbFichiers = 0;
$nbDossiers = 0;
$taille = 0;
$drag = '';
$rep .= '/';
$dir = opendir($rep);
$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 != '..') {
$md5 = md5($rep.$f);
$drag .= "new Draggable('f-".$md5."',{revert:true});";
$fileinfo = new FileInfo($rep, $f);
if (!is_file($rep.$f)) {
$liste .= '<div class="ligne_fichier" id="f-'.$md5.'" title="'.addslashes($rep.$f).'" onclick="testSelectionFichier(this)" ondblclick="xajax_arbreDossierOuvrir(\''.$rep.$f.'\')">';
$nbDossiers++;
} else {
$liste .= '<div class="ligne_fichier" id="f-'.$md5.'" title="'.addslashes($rep.$f).'" onclick="testSelectionFichier(this)" >';
$nbFichiers++;
}
$taille += $fileinfo->getTaille();
$liste .= '<div class="nom"><img src="icones/'.$fileinfo->infoIcone().'" alt="" /><span>'.$f.'</span></div>';
$liste .= '<div class="taille"><span>'.$fileinfo->taille(4).'</span></div>';
$liste .= '<div class="type"><span>'.$fileinfo->infoType().'</span></div>';
$liste .= '<div class="date"><span>'.$fileinfo->dateFormat().'</span></div>';
$liste .= '</div>';
}
}
closedir($dir);
$this->taille = $taille;
$this->nbFichiers = $nbFichiers;
$this->nbDossiers = $nbDossiers;
$this->scriptDraggable = $drag;
return '<div id="tab">'.$liste.'</div>';
}
}
?>
\ No newline at end of file
<?php
class FileInfo {
private $dossier = false;
private $adresse = '';
private $fichier = '';
private $extension = '';
private $dateFichier = 0;
private $tailleFichier = 0;
public function __construct ($dossier, $nom) {
$this->fichier = $nom;
$this->adresse = $dossier;
// extension
$fichier = explode('.', strtolower($nom));
if (count($fichier) > 1) {
$this->extension = array_pop($fichier);
}
// fichier | dossier
if(!is_file($dossier.$nom)) {
$this->dossier = true;
}
//date
$this->dateFichier = filemtime($dossier.$nom);
//taille
$this->tailleFichier = filesize($dossier.$nom);
}
public function dateFormat() {
return date ('d/m/Y H:i', $this->dateFichier);
}
public function taille ($nombre = 5) {
return FileInfo::tailleFormat($this->tailleFichier, $nombre);
}
public static function tailleFormat ($taille, $nombre = 5) {
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);
}
public function getTaille() {
return $this->tailleFichier;
}
public function infoType () {
if (!$this->dossier) {
$types = array(
'png' => 'Image PNG',
'jpg' => 'Image JPEG',
'gif' => 'Image GIF',
'php' => 'Script PHP',
'js' => 'Script JS',
'txt' => 'Texte',
'css' => 'Feuille de style',
);
if (empty($this->extension)) {
return '';
} else if (isset($types[$this->extension])) {
return $types[$this->extension];
} else {
return 'Fichier '.strtoupper($this->extension);
}
} else {
return 'Dossier';
}
}
public function infoEdit () {
$info = '';
switch(strtolower($this->extension)) {
case 'txt' :
case 'xml' :
case 'php' :
case 'php3' :
case 'php4' :
case 'php5' :
case 'ini' :
case 'htm' :
case 'html' :
case 'xhtml':
case 'css' :
case 'js' : $info = true; break;
default : $info = false;
}
return $info;
}
public function infoIcone () {
if($this->dossier) return 'folder.png' ;
$info = '';
switch(strtolower($this->extension)) {
case 'txt' : $info = 'txt.png'; break;
case 'php' :
case 'php3' : $info = 'question.png'; break;
case 'htm' :
case 'html' : $info = 'htm.png'; break;
case 'xml' :
case 'css' :
case 'js' : $info = 'css_js.png'; break;
case 'jar' :
case 'rar' : $info = 'rar.png'; break;
case 'zip' : $info = 'zip.png'; break;
case 'ace' : $info = 'ace.png'; break;
case 'fla' : $info = 'fla.png'; break;
case 'swf' : $info = 'swf.png'; break;
case 'jpg' :
case 'jpeg' :
case 'gif' :
case 'bmp' :
case 'png' : $info = 'image.png'; break;
case 'mp3' :
case 'mp2' :
case 'mpc' :
case 'ogg' :
case 'flac' :
case 'ape' :
case 'wma' :
case 'uta' : $info = 'musique.png'; break;
case 'avi' :
case 'mkv' :
case 'ogm' :
case 'wmv' :
case 'mpg' : $info = 'musique.png'; break;
case 'pspimage' : $info = 'psp.png'; break;
case 'fon' : $info = 'fon.png'; break;
case 'ttf' : $info = 'ttf.png'; break;
default : $info = 'fichier.png';
}
return $info;
}
}
?>
\ No newline at end of file
icones/exe.png

801 Bytes

icones/fla.png

805 Bytes

icones/fon.png

783 Bytes

icones/htm.png

876 Bytes

icones/psp.png

261 Bytes

icones/swf.png

708 Bytes

icones/ttf.png

860 Bytes

icones/txt.png

651 Bytes

icones/zip.png

321 Bytes

*::-moz-selection {
background-color:transparent;
}
html, body {
background-color : #c8c8c8;
margin:0px;
......@@ -13,12 +17,11 @@ html, body {
}
body {
display : table;
border-spacing: 3px;
overflow: hidden;
}
#conteneur {
display : table-row-group;
width:100%;
min-width:100%;
max-width:100%;
}
......@@ -30,28 +33,24 @@ body {
padding : 1px;
background-color : #dbdbdb;
}
#tete {
display : table-row;
#tete{
width : 100%;
height: 20px;
}
#chemin {
white-space: nowrap;
border-left : 1px solid #dbdbdb;
}
#exploreur {
display:table;
position:absolute;
top:60px;
width:100%;
height:100%;
min-height:100%;
max-height:100%;
}
#arbre {
display: table-cell;
position:absolute;
width:300px;
max-width:300px;
vertical-align:top;
overflow:auto;
}
#arbre ul{
margin:0px;
......@@ -79,8 +78,11 @@ body {
color:#7a84d4;
}
#fichiers {
display: table-cell;
position:absolute;
left:305px;
width:20px;
vertical-align:top;
overflow:auto;
}
#fichiers #tab {
border-spacing: 1px;
......@@ -117,6 +119,9 @@ body {
background-color:#dbeaff;
}
#fichiers #tab .ligne_fichier .nom img {
margin-right:2px;
}
#fichiers #tab .date {
width:130px;
min-width:130px;
......@@ -136,6 +141,28 @@ body {
text-align:right;
padding-right: 4px;
}
#etat {
position:absolute;
bottom:0px;
height:22px;
padding: 2px;
font-size:12px;
width:100%;
}
#etat div {
display: table-cell;
}
#ifichiers, #idossiers, #itaille {
width : 120px;
}
#nbfichiers, #nbdossiers, #fichiertaille {
width : 45px;
text-align: right;
border-top : 1px solid #959595;
border-left : 1px solid #959595;
border-bottom : 1px solid white;
border-right : 1px solid white;
background-color : #dbdbdb;
}
\ No newline at end of file
function tailleFenetre () {
var taille = window.innerHeight - 90;
var large = window.innerWidth - 310;
var arbre= document.getElementById('arbre');
arbre.style.height = taille+"px";
var fichiers = document.getElementById('fichiers');
fichiers.style.width = large+"px";
fichiers.style.height = taille+"px";
document.getElementById('info').innerHTML = taille +"px";
setTimeout("tailleFenetre()", 100);
}
// 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
// Pas de selection
/*document.onSelect=new Function ("return false"); // Pour IE
if (window.sidebar) { document.onmousedown = tuer; } // Pour les autres*/
// supression du menucontextuel
document.oncontextmenu = tuer;
......@@ -13,6 +28,14 @@ var fichiers = new Array();
var fichierCopie = new Array();
var couper = false;
var nombreDossiers = 0;
var nombreFichiers = 0;
function actuNombre(fich, dos) {
nombreDossiers = dos;
nombreFichiers = fich;
}
// touche de contrôles
var ctrl = false;
var alt = false;
......@@ -105,6 +128,7 @@ function copierListeFichiers () {
for(i=0; i < nbrFichiers; i++) {
fichierCopie[fichierCopie.length] = document.getElementById(fichiers[i]).title;
}
alert(i);
}
function collerListeFichiers() {
xajax_coller(fichierCopie);
......@@ -139,7 +163,7 @@ function testSelectionFichier (div) {
if (selection) {
selectionFichier(nom, div, true);
}
trace ();
//trace ();
}
function selectionFichier(nom, div, etat) {
......@@ -165,6 +189,6 @@ function selectionFichier(nom, div, etat) {
function supprimerFichier () {
if (fichiers.length > 0 && confirm("Êtes-vous certains de vouloir supprimer :\n"+lister())) {
xajax_suppression(fichiers, listeAdresse()) ;
xajax_suppression(fichiers, listeAdresse(), nombreFichiers, nombreDossiers) ;
}
}
\ No newline at end of file
<?php
require_once('xajax/xajax.inc.php');
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();
}
function arbreDossierFermer ($rep, $courant) {
}
function afficherDossier ($rep) {
$objResponse = new xajaxResponse();
$objResponse->addClear("fichiers", "innerHTML");
$objResponse->addAppend("fichiers", "innerHTML", listerDossier ($rep));
$objResponse->addClear("chemin", "innerHTML");
$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();
}
function coller ($liste, $adresse, $couper) {
$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("arbreDossierOuvrir");
$xajax->registerFunction("arbreDossierFermet");
$xajax->registerFunction("suppression");
$xajax->registerFunction("coller");
$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 />';
}
}
function __autoload($ClassName) {
try {
include_once ($ClassName.'.php');
}
catch (Exception $e) {
echo $e->getMessage();
}
$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 .= '/';