Vous n'êtes pas identifié(e).
Pages : 1
Bonjour
Excellent script, très simple et pratique, mais... comment serait-il possible de faire en sorte que le script ne cherche pas sur seulement 1 niveau de sous-dossiers, mais sur plusieurs sous-niveaux ? (au moins 2...)
Merci ! :-)
Bonjour
C'est parce qu'il est très simple qu'il n'explore qu'un niveau de sous-dossier.
Cependant l'adapter à une nombre infinit de sous dossier ne me semble pas très complexe. Pourquoi ne l'ai-je pas fait .
Je n'ai pas le temps de tester ce soir mais grossomodo :
Remplacer
$dhdir = opendir($racinedir.$w->imagedir);
if ($dhdir!=False) {
while (false !== ($subdir = readdir($dhdir))) {
$dir = $racinedir.$w->imagedir.'/'.$subdir;
if (is_dir($dir) & $subdir != '.' & $subdir != '..') { //explore les sous dossiers
$dh = @opendir($dir);
if ($dh!=False) { //pour les images qui se trouve dans les sous-dosser
while (false !== ($filename = readdir($dh))) {
if ($filename{0} != "." & in_array(strrchr($filename,'.'),$extbig)){
$files[] = $w->imagedir.'/'.$subdir.'/'.$filename;
}
}
}
} elseif ($subdir{0} != "." & in_array(strrchr($subdir,'.'),$extbig)) {
//pour les images qui se trouve directement dans le dossier principal
{
$files[] = $w->imagedir.'/'.$subdir;
}
}
}
}
Par un truc du genre
function exploration($parentdir) {
$dhdir = opendir($parentdir);
if ($dhdir!=False) {
while (false !== ($subdir = readdir($dhdir))) {
$dir = $parentdir.'/'.$subdir;
if (is_dir($dir) & $subdir != '.' & $subdir != '..') {
//C'est un dossier, rappel de la fonction
$files[] = array_combine(exploration($parentdir.'/'.$subdir));
} elseif ($subdir{0} != "." & in_array(strrchr($subdir,'.'),$extbig)) {
//pour les images qui se trouve directement dans le dossier principal
$files[] = $parentdir.'/'.$subdir;
}
}
}
return $files;
}
$files[] = exploration($racinedir.$w->imagedir);
Le code est même plus court par contre je ne sais pas trop ce qui se passera au cas ou il y a des liens symbolique pointant sur un dossier parent
. Peut-être un boucle infini
.
ATTENTION JE N'AI RIEN TESTÉ !!!
Hors ligne
!!! Il y a quelques erreurs !!!
Voici le fichier _public.php dans son intégralité tester ! (pas pour les histoires de lien symbolique !!!)
Je paquagerai ça dès que j'en trouverai le temps.
Dernière modification par jonas (17-01-2009 12:04)
Hors ligne
Merci beaucoup Jonas !
Je testerai ça dès que j'ai 5 minutes.
J'ai un (des ?) bug avec ton nouveau code (bugs que je n'avais pas avant, quand j'ai utilisé ton script non modifié):
- il n'est affiché que le texte alternatif de l'image, car le chemin de la miniature ne parait pas être bon (il va chercher la miniature de cette manière --> http://dossierchoisi alors qu'avant il utilisait --> http://nomdusite.com/dossierchoisi - le souci étant que ton script ne permet que d'entrer un nom de dossier, et nom une url entière. Donc en fait, une situation paradoxale qui parait pas trop compliquée quand même.
- il ne va chercher les images que dans 1 seul dossier, toujours le même... il sait aller plus loin dans les niveaux de dossiers, mais choisi toujours la même image, toujours dans le même dossier ! Pourtant j'ai vidé le cache de mon navigateur ainsi que celui de mon dotclear sur le serveur.
Voilà !
http://dossierchoisi / http://nomdusite.com/dossierchoisi
J'ai fait quelques changements à ce niveau car en fonction de la config serveur l'ancien code pouvait posé des problèmes mineurs. Supprime le "/" au début de ton chemin (ex "dotclear/public et pas /dotclear/public). Je techerais de rendre cette suppression automatique avant de faire le paquet.
il ne va chercher les images que dans 1 seul dossier
Non il cherche bien dans tous les dossiers mais il écrase le contenu du précédent à chaque fois .
Hors ligne
J'ai créer un paquet avec quelque amélioration en plus (prise en compte du plugin lightbox). Avant de faire l'annonce sur mon blog j'aimerai bien que quelque personne test. Peux-tu tester ?
http://download.tuxfamily.org/jopen/ran … es-0.4.zip
http://download.tuxfamily.org/jopen/ran … 0.4.tar.gz
Merci
Hors ligne
Je viens d'essayer ta mise à jour, ça marche nikel.
Et j'ai compris le souci aussi... toutes mes images (sauf 2) étaient en .JPG et non en .jpg --> la majuscule !
Ton script ne prend pas en compte les images avec extension en majuscule, or comme la moitié des appareils photos et des logiciels mettent l'extension de manière automatique en majuscule...
Ca pourrait être bien que tu rajoutes ça... au pire si tu penses que c'est pas utile, je me fendrais d'un copier-coller pour avoir les JPG de reconnus.
Le plugin lightbox est bien reconnu aussi.
Donc parfait pour moi: pour info, je suis sous free avec la toute dernière version de dotclear.
Sais-tu si les miniatures des images *.JPG sont en *.jpg ?
Je corrigerai ce problème dans la semaine ou durant le weekend. (Par contre le numéro de version serra inchangé, il faudra donc désinstaller puis réinstaller le plugin ou faire une installation manuelle).
Merci pour le test
Hors ligne
Oui, les extensions des miniatures des fichiers en JPG ou JPEG sont en jpg ou jpeg.
Pages : 1