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

Renommage de fichier et dossier [F2] (v0.4)

Bon, maintenant, quand on sélection un ou des fichiers (avec ctrl) ont peu appuyé sur F2 qui lance la procédure de renommage.
C'est le dernier sélectionné qui est affecté. Si on ne change pas le nom, il ne bronche pas.
Si on le renomme et qu'il est impossible, il gueule et on ne peut rien faire tant que ce n’est pas correct.

J'ai eu quelque problème pour renommer les dossiers (car ça doit se répercuter dans l'arbre). Je le croyais super bien foutu... Bah non, mais cette fois il n'y a plus rien de statique dans celui-ci (ce qui m'a permet de corriger certains autres bugs).

18/03/2008
parent cab377ce
<?php
/*
pour les IDs :
LISTE :
f : fichier (ligne)
t : taille du ficher
n : nom du fichier
ARBRE :
i : image de signalisation d'ouverture ou fermeture d'un dossier
d : nœud d'un dossier
l : nom du dossier d'un nœud
*/
class Dossier {
private $rep = '';
......@@ -62,13 +76,12 @@ class Dossier {
$md5 = md5($rep.$f);
// si il y a des sous-dossiers ou non
$id = ' id="d-'.$md5.'"';
if ($ssDossier) {
$id = ' id="d-'.$md5.'"';
$onclick = ' onclick="xajax_arbreDossierOuvrir(\''.$md5.'\', \''.addslashes($rep.$f).'\', 1);"';
$onclick = ' onclick="xajax_arbreDossierOuvrir(this.title, 1);"';
$typeF = 'close';
$onclickImg = ' onclick="xajax_arbreDossierOuvrir(\''.$md5.'\', \''.addslashes($rep.$f).'\');"';
$onclickImg = 'title="'.addslashes($rep.$f).'" onclick="xajax_arbreDossierOuvrir(this.title);"';
} else {
$id = '';
$onclick = ' onclick="xajax_afficherDossier(this.title);"';
$typeF = 'none';
$onclickImg = '';
......@@ -80,7 +93,7 @@ class Dossier {
closedir($dir);
$md5 = md5(substr($rep.$f, 0, -1));
return (($ret == 1) ? '<img alt="ouvert" id="i-'.$md5.'" src="icones/folder_open.png" alt="" onclick="arbreDossierFermer(\''.addslashes(substr($rep, 0, -1)).'\');" /><span id="l-'.$md5.'" onclick="xajax_afficherDossier(\''.substr($rep.$f, 0, -1).'\');return false;">'.$repCourant.'</span>' : '').'<ul>'.$liste.'</ul>';
return (($ret == 1) ? '<img alt="ouvert" id="i-'.$md5.'" src="icones/folder_open.png" title="'.addslashes(substr($rep, 0, -1)).'" onclick="arbreDossierFermer(this.title);" /><span id="l-'.$md5.'" title="'.addslashes(substr($rep, 0, -1)).'" onclick="xajax_afficherDossier(this.title);">'.$repCourant.'</span>' : '').'<ul>'.$liste.'</ul>';
/*Droppables.add('panier',
{accept:'products',
......@@ -125,16 +138,16 @@ class Dossier {
$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="demandeDossierOuvrir(\''.$rep.$f.'\');">';
$liste .= '<div class="ligne_fichier" id="f-'.$md5.'" title="'.addslashes($rep.$f).'" onclick="testSelectionFichier(this)" ondblclick="demandeDossierOuvrir(this.title);">';
$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="nom"><span class="nomtab"><span class="icone"><img src="icones/'.$fileinfo->infoIcone().'" alt="" /></span><span id="n-'.$md5.'">'.$f.'</span><span></div>';
$liste .= '<div class="taille"><span>'.$fileinfo->taille(4).'</span></div>';
$liste .= '<div class="type"><span>'.$fileinfo->infoType().'</span></div>';
$liste .= '<div class="type"><span id="t-'.$md5.'" title="">'.$fileinfo->infoType().'</span></div>';
$liste .= '<div class="date"><span>'.$fileinfo->dateFormat().'</span></div>';
$liste .= '</div>';
}
......
*::-moz-selection {
background-color:transparent;
}
* {
font-family:Helvetica, Arial, sans-serif;
font-size:14px;
}
html, body {
background-color : #c8c8c8;
......@@ -12,8 +16,7 @@ html, body {
height:100%;
min-height:100%;
max-height:100%;
font-family:Helvetica, Arial, sans-serif;
font-size:14px;
}
body {
......@@ -165,9 +168,24 @@ body {
background-color:#dbeaff;
}
#fichiers #tab .ligne_fichier .nom img {
margin-right:2px;
#fichiers #tab .ligne_fichier .nom .nomtab {
display: table;
border:0px;
margin:0px;
width:100%;
border-spacing: 0px;
}
#fichiers #tab .ligne_fichier .nom .nomtab * {
display: table-cell;
padding : 0px;
margin: -2px;
}
#fichiers #tab .ligne_fichier .nom .nomtab .icone {
vertical-align: middle;
width:18px;
}
#fichiers #tab .date {
width:130px;
min-width:130px;
......@@ -211,4 +229,17 @@ body {
border-right : 1px solid white;
background-color : #dbdbdb;
}
\ No newline at end of file
#renommer {
position: relative;
top:-2px;
left:2px;
border : 0px;
padding : 0px;
margin: 0px;
width : 100%;
}
#renommer:hover{
text-decoration: none;
color: black;
}
\ No newline at end of file
......@@ -27,6 +27,7 @@ document.oncontextmenu = tuer;
var fichiers = new Array();
var fichierCopie = new Array();
var couper = false;
var selectionActive = true;
var suivant = new Array ();
var courant = '';
......@@ -93,32 +94,41 @@ function touche(e) {
if (e) if (e.charCode) latouche = e.charCode; else latouche = e.keyCode; else latouche = event.keyCode;
//alert(latouche);
// [shift]
if (latouche == 16) {
shift = true;
//document.getElementById('info').innerHTML = 'shift';
}
// [ctrl]
if (latouche == 17) {
ctrl = true;
}
// [alt]
if (latouche == 18) {
alt = true;
}
// [suppr.]
if (latouche == 46) {
supprimerFichier();
}
// [ctrl] + [c]
if (latouche == 67 && ctrl) {
copierListeFichiers();
couper = false;
}
// [ctrl] + [x]
if (latouche == 67 && ctrl) {
copierListeFichiers();
couper = true;
}
// [ctrl] + [v]
if (latouche == 87 && ctrl) {
collerListeFichiers();
}
// action sur la touche [F5] (actualiser)
// [F2] (renommer)
if (latouche == 113) {
renommer();
}
// [F5] (actualiser)
if (latouche == 116) {
if(confirm('Est-vous sûr de vouloir actualiser la page ?')) window.close(); else return false;
}
......@@ -157,21 +167,78 @@ function arbreDossierFermer (rep) {
var repCourant = lrep[lrep.length-1];
var id = hex_md5(rep);
document.getElementById('d-'+id).innerHTML =
'<img onclick="xajax_arbreDossierOuvrir(\''+ id + '\', \'' + rep + '\');" alt="" src="icones/folder_close.png"/>'+
'<span id="l-'+hex_md5+'" title="' + rep + '" onclick="xajax_arbreDossierOuvrir(\''+ id + '\', \'' + rep + '\', 1);">'+ repCourant +'</span>';
'<img id="i-'+id+'" title="' + rep + '" onclick="xajax_arbreDossierOuvrir(this.title);" alt="fermé" src="icones/folder_close.png"/>'+
'<span id="l-'+id+'" title="' + rep + '" onclick="xajax_arbreDossierOuvrir(this.title, 1);">'+ repCourant +'</span>';
}
function demandeDossierOuvrir(rep) {
var md5 = hex_md5(rep);
var type = document.getElementById('i-'+md5).alt;
if (type == 'fermé') {
xajax_arbreDossierOuvrir(md5, rep, 1);
xajax_arbreDossierOuvrir(rep, 1);
} else {
xajax_afficherDossier(rep);
}
}
var renommerNom = '';
var isRenommerErreur = false;
function renommer() {
if (fichiers.length > 0) {
renommerNom = document.getElementById(fichiers[fichiers.length-1]).title;
var exDernier = renommerNom.split('/');
var nomFichier = exDernier[exDernier.length-1];
document.getElementById('n-' + fichiers[fichiers.length-1].substr(2)).innerHTML =
'<input onblur="renommerAction(this)" id="renommer" value="'+ nomFichier+'" />';
document.getElementById('renommer').focus();
// annule et bloque la selection
testSelectionFichier(document.getElementById(fichiers[fichiers.length-1]));
selectionActive = false;
}
}
function renommerAction(input) {
var nouveauNom = input.value;
var exDernier = renommerNom.split('/');
var md5Bak = hex_md5(renommerNom);
var nomFichier = exDernier[exDernier.length-1];
if (nomFichier != nouveauNom) {
exDernier[exDernier.length-1] = nouveauNom;
var nouvelleAdresse = exDernier.join('/');
xajax_renommer(renommerNom, nouvelleAdresse, nouveauNom);
} else {
document.getElementById('n-' + md5Bak).innerHTML = nomFichier;
renommerNom = '';
selectionActive = true;
}
}
function renommerListeChanger(source, cible, nouveauNom, dossier) {
var md5Bak = hex_md5(source);
var md5 = hex_md5(cible);
document.getElementById('n-' + md5Bak).innerHTML = nouveauNom;
document.getElementById('f-' + md5Bak).title = cible;
document.getElementById('f-' + md5Bak).id = 'f-'+md5;
document.getElementById('n-' + md5Bak).id = 'n-'+md5;
if (dossier) {
var d = document.getElementById('d-' + md5Bak).id = 'd-'+md5;
var i = document.getElementById('i-' + md5Bak);
i.title = cible;
i.id = 'i-'+md5;
var l = document.getElementById('l-' + md5Bak);
l.title = cible;
l.innerHTML = nouveauNom;
l.id = 'l-'+md5;
}
renommerNom = '';
selectionActive = true;
}
function blurError(cible) {
document.getElementById(cible).focus();
}
/*function trace () {
var nbrFichiers = fichiers.length;
var slt = '';
......@@ -203,10 +270,11 @@ function listeAdresse () {
function listeEfface() {
fichiers = new Array();
selectionActive = true;
couper = false;
alt = false;
ctrl = false;
shift = false;
shift = false;
}
function copierListeFichiers () {
......@@ -223,31 +291,33 @@ function collerListeFichiers() {
}
function testSelectionFichier (div) {
nom = div.id;
var selection = true;
if (!ctrl) {
var temp = fichiers;
nbrFichiers = temp.length;
for(j=0; j < nbrFichiers; j++) {
if (temp[j] != nom) {
selectionFichier(temp[j], document.getElementById(temp[j]), false);
if (selectionActive) {
nom = div.id;
var selection = true;
if (!ctrl) {
var temp = fichiers;
nbrFichiers = temp.length;
for(j=0; j < nbrFichiers; j++) {
if (temp[j] != nom) {
selectionFichier(temp[j], document.getElementById(temp[j]), false);
}
}
} else {
unselect = 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;
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);
}
}
if (selection) {
selectionFichier(nom, div, true);
}
}
......
......@@ -31,7 +31,7 @@ $dossier = new Dossier('', array('racine'));
<script src="md5.js" type="text/javascript"></script>
<script src="index.js" type="text/javascript"></script>
</head>
<body onload="boutonsStart();xajax_arbreDossierOuvrir('<?php echo md5('./racine'); ?>', './racine', 1);tailleFenetre();">
<body onload="boutonsStart();xajax_arbreDossierOuvrir('./racine', 1);tailleFenetre();">
<div id="conteneur">
<div id="tete">
<div id="barreIcones">
......
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