=== Folder Gallery (édition Easy Fancybox) ===
Contributors: Vincent Jalby v1.7.4 (v2.0.4-efb MJAP/Claude/Anthropic)
Tags: gallery, folder, lightbox, easy-fancybox, firelight-lightbox, responsive
Requires at least: 4.0
Tested up to: 6.9
Requires PHP: 7.0
Stable tag: 2.0.4-efb
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Donate link: http://jalby.org/wordpress/donate/

Génère des galeries d'images responsives à partir d'un dossier, via un shortcode, affichées avec l'extension Easy Fancybox (Firelight Lightbox).

== Description ==

Cette extension crée des galeries d'images à partir d'un dossier.
Le dossier d'images doit être téléversé (par FTP) quelque part dans wp-content (par exemple wp-content/uploads). Il doit être accessible en écriture (chmod 755).

**Cette édition (2.0.x-efb) fonctionne exclusivement avec l'extension [Easy Fancybox/Firelight Lightbox](https://fr.wordpress.org/plugins/easy-fancybox/)** (testée avec Easy Fancybox 2.3.20). Tous les autres moteurs de lightbox de l'extension d'origine (Lightbox 2, Fancybox 2, Fancybox 3, Lightview, Responsive Lightbox, PhotoSwipe, Slenderbox) ont été supprimés, ainsi que leurs options et leurs scripts. Easy Fancybox doit être installée et activée ; à défaut, les galeries affichent un message d'erreur.

**À propos du changement de nom « Firelight Lightbox »** : Easy Fancybox a été officiellement renommée « Firelight Lightbox » par son éditeur (FirelightWP) depuis la version 2.3.0. Le nom technique de l'extension (slug `easy-fancybox`), sa classe PHP (`easyFancyBox`), son filtre `easy_fancybox_bind` et son réglage `fancybox_scriptVersion` restent inchangés dans la version 2.3.20 : Folder Gallery reste donc pleinement compatible. Depuis la 2.0.2-efb, la détection de l'extension vérifie à la fois la classe PHP et la constante `EASY_FANCYBOX_VERSION`, pour rester robuste si une future version de Firelight renommait l'une des deux.

**La grille de vignettes est responsive** : le nombre de colonnes s'adapte automatiquement à la largeur de l'écran (téléphone, tablette, ordinateur), en fonction de la largeur de vignette configurée. C'est du CSS pur (grid + auto-fill), sans JavaScript. Les vignettes utilisent le chargement paresseux natif du navigateur.

**Disposition « mur de maçon » (masonry)** : depuis la 2.0.3-efb, chaque galerie peut s'afficher en mur de maçon (`layout="masonry"` dans le shortcode, ou réglage par défaut dans la page d'options) : les images conservent leurs proportions naturelles et s'empilent comme des briques, sans découpe. C'est également du CSS pur (multi-colonnes), sans JavaScript.

Pour insérer une galerie dans un article ou une page, utilisez le shortcode suivant :

	[foldergallery folder="chemin_local_du_dossier" title="Titre de la galerie"]

Pour chaque galerie, un sous-dossier cache_[largeur]x[hauteur] est créé dans le dossier d'images lors du premier affichage de la page.

Une page d'options permet de définir les paramètres par défaut des galeries :

* Disposition de la galerie (layout) : grid = grille alignée, masonry = mur de maçon (les images gardent leurs proportions ; la hauteur de vignette est ignorée)
* Affichage des vignettes (thumbnails) : all = galerie standard, single = une seule vignette liée à la galerie lightbox, none = un lien texte vers la galerie lightbox
* Tri des images (sort) : filename (nom de fichier), filename_desc (ordre inverse), date, date_desc, random (aléatoire)
* Colonnes maximum sur grand écran (columns) : 0 = automatique. Sur les écrans plus petits, le nombre de colonnes s'adapte toujours automatiquement.
* Largeur et hauteur des vignettes (width & height) : la largeur définit aussi le seuil de bascule de la grille responsive
* Bordure des images (border), marge intérieure (padding), marge (margin — utilisée comme espacement de la grille)
* Format des légendes (caption) : default (titre + numéro d'image), filename, filenamewithoutextension, smartfilename, modificationdate, modificationdateandtime, modificationdater (RFC 2822), modificationdatec (ISO 8601), none
* Légendes sous les vignettes (show_thumbnail_captions) : afficher (ou non) la légende sous chaque vignette
* Diaporama Easy Fancybox : lecture automatique, navigation cyclique, vitesse du diaporama (ms), délai initial (ms)
* Divers — Orientation : corrige l'orientation des images selon la balise EXIF (les images sont réécrites ; nécessite l'extension PHP EXIF)
* Divers — WPML : corrige les chemins WPML

La plupart de ces réglages peuvent être surchargés dans le shortcode :

	[foldergallery folder="chemin" title="titre" columns=4 width=150
			height=90 border=1 padding=2 margin=10 thumbnails=single layout=masonry]

== Installation ==

1. Installez et activez l'extension Easy Fancybox / Firelight Lightbox (obligatoire).
2. Dans les réglages de l'extension (menu « Lightbox » de l'administration WordPress depuis Easy Fancybox 2.3.x ; anciennement Réglages > Médias), section Images > Autogallery, sélectionnez « Disabled » (Folder Gallery groupe lui-même ses galeries).
3. Décompressez l'archive foldergallery.zip et téléversez le dossier 'folder-gallery' dans '/wp-content/plugins/'.
4. Activez l'extension depuis le menu 'Extensions' de WordPress.
5. Allez dans Réglages > Folder Gallery pour ajuster les réglages par défaut.
6. Téléversez un dossier d'images dans 'wp-content/uploads/MesImages'.
7. Insérez le shortcode suivant dans un article ou une page :

	[foldergallery folder="wp-content/uploads/MesImages" title="Ma galerie d'images"]

== Frequently Asked Questions ==

= Quels moteurs de lightbox sont pris en charge ? =

Uniquement l'extension Easy Fancybox (c'est l'édition « efb »). Si vous avez besoin de Lightbox 2, Fancybox 2/3, Lightview, PhotoSwipe, Responsive Lightbox ou Slenderbox, utilisez plutôt le Folder Gallery 1.7.x d'origine.

= Comment fonctionne la grille responsive ? =

La galerie est une grille CSS : chaque colonne a au minimum la largeur de vignette configurée (plafonnée à 100 % du conteneur), et autant de colonnes que l'écran peut en contenir sont créées automatiquement. Sur un téléphone, on obtient généralement 1 à 2 colonnes, sur une tablette 3 à 4, sur un ordinateur davantage — sans aucune configuration. L'option « Colonnes maximum » ne fait que plafonner le nombre de colonnes sur grand écran (0 = pas de plafond). Aucun JavaScript n'est utilisé.

= Comment fonctionne la disposition « mur de maçon » (masonry) ? =

Ajoutez `layout="masonry"` au shortcode (ou choisissez « Masonry » comme disposition par défaut dans les réglages) :

	[foldergallery folder="chemin" title="Ma galerie" layout="masonry"]

Les images conservent leurs proportions naturelles et s'empilent en colonnes, comme des briques. La hauteur de vignette est ignorée dans ce mode (elle imposerait un recadrage uniforme, ce qui redonnerait une grille). Techniquement, c'est du CSS multi-colonnes, supporté par tous les navigateurs — le masonry natif de CSS Grid (`grid-template-rows: masonry`) n'est toujours pas utilisable en production en juillet 2026 (source : caniuse.com). Particularité de ce mode : les images se suivent de haut en bas dans chaque colonne (et non de gauche à droite) ; l'ordre de la lightbox reste celui du tri configuré.

= Le diaporama automatique ne démarre pas =

Le diaporama automatique repose sur le filtre 'easy_fancybox_bind', qu'Easy Fancybox ne fournit que dans ses versions de script « FancyBox Classic Reloaded » et « FancyBox Legacy ». Si Easy Fancybox est réglée sur « FancyBox V2 » (menu « Lightbox » de l'administration), les options de diaporama restent sans effet — un avertissement s'affiche alors sur la page de réglages de Folder Gallery.

= Easy Fancybox a changé de nom (Firelight Lightbox), dois-je faire quelque chose ? =

Non. Le renommage est purement commercial : depuis la version 2.3.0, l'extension s'affiche sous le nom « Firelight Lightbox », mais son identifiant technique (`easy-fancybox`), sa classe PHP, ses réglages et ses filtres sont inchangés (vérifié dans les sources de la 2.3.20). Folder Gallery 2.0.2-efb détecte l'extension par deux mécanismes indépendants (classe PHP et constante), afin de rester compatible même si une future version modifiait l'un d'eux.

= Je voudrais afficher une seule vignette au lieu de la liste complète =

Ajoutez l'attribut `thumbnails` avec la valeur `single` :

	[foldergallery folder="chemin" title="Ma galerie" thumbnails="single"]

Si vous souhaitez utiliser une autre image (que la première) comme vignette unique, ajoutez au dossier une image nommée `!!!` (par exemple `!!!.jpg`) : elle servira de vignette mais n'apparaîtra pas dans la galerie lightbox. Vous pouvez aussi utiliser `thumbnails=-n`, où `n` est le numéro de l'image à utiliser comme vignette.

= Je voudrais afficher seulement les n premières vignettes =

	[foldergallery folder="chemin" title="Ma galerie" thumbnails=3]

= Je voudrais afficher une légende sous chaque vignette =

	[foldergallery folder="chemin" title="Ma galerie" show_thumbnail_captions=1 caption="smartfilename"]

`caption` peut valoir `filename`, `filenamewithoutextension` ou `smartfilename` (nom de fichier sans extension, numéros en tête supprimés, tirets bas remplacés par des espaces).

= Quels formats d'image sont pris en charge ? =

jpg / jpeg, png, gif, bmp et webp (nouveauté 2.0.0), avec extensions insensibles à la casse.

== Screenshots ==
1. Options de Folder Gallery
2. Folder Gallery dans un article
3. Lightbox de Folder Gallery

== Changelog ==

= 2.0.4-efb [13/07/2026] =
* Correction : la combinaison layout="masonry" + thumbnails="none" n'applique plus la mise en colonnes au lien-titre (il pouvait être fragmenté en colonnes étroites) ; réinitialisation CSS défensive ajoutée sur le mode lien seul.
* Correction : le resserrement des espacements sur téléphone (media query ≤ 480 px) s'applique désormais aussi au mode masonry.
* Accessibilité : les libellés de la page de réglages (layout, thumbnails, sort, caption, show_thumbnail_captions) sont maintenant correctement liés à leur champ (for/id) — cliquer un libellé focalise son menu.

= 2.0.3-efb [13/07/2026] =
* Nouveauté : disposition « mur de maçon » (masonry) — attribut de shortcode `layout="masonry"` et réglage par défaut « Disposition de la galerie » dans la page d'options. Implémentée en CSS multi-colonnes (aucun JavaScript), compatible tous navigateurs. La hauteur de vignette est ignorée dans ce mode (les images gardent leurs proportions naturelles).
* Traduction : 4 nouvelles chaînes françaises ajoutées et fichier .mo recompilé.
* Validation : l'attribut `layout` est filtré par liste blanche (grid/masonry) côté shortcode et côté réglages.

= 2.0.2-efb [08/07/2026] =
* Compatibilité « Firelight Lightbox » : Easy Fancybox ayant été renommée Firelight Lightbox (depuis EFB 2.3.0), la détection de l'extension vérifie désormais la classe PHP `easyFancyBox` OU la constante `EASY_FANCYBOX_VERSION` (les deux existent en 2.3.20) — la détection résiste ainsi à un éventuel renommage futur de l'une des deux. Aucun autre point d'intégration n'a changé (filtre `easy_fancybox_bind` et réglage `fancybox_scriptVersion` inchangés en 2.3.20, vérifié dans les sources).
* Interface : les libellés et messages mentionnent désormais « Easy Fancybox (Firelight Lightbox) » ; l'avertissement « FancyBox V2 » renvoie au menu « Lightbox » de l'administration (les réglages d'Easy Fancybox ne sont plus sous Réglages > Médias depuis la 2.3.x).
* Traduction : traduction française complétée (18 chaînes manquantes ajoutées : messages d'erreur, avertissements, section diaporama, réglages responsive) et fichier .mo recompilé.
* Robustesse (PHP 8) : filename_without_extension() ne déclenche plus d'avertissement « Undefined array key » pour un fichier sans extension (défense en profondeur).
* Nettoyage : correction d'une virgule en double dans l'en-tête « Tags » du plugin.
* Aucune faille de sécurité identifiée dans cette revue ; aucun changement de comportement des galeries.

= 2.0.1-efb [07/07/2026] =
* Correctif : les vignettes conservent désormais la casse d'origine du nom de fichier. Auparavant, deux images ne différant que par la casse (par exemple « Photo.JPG » et « photo.jpg ») partageaient une seule vignette sur les systèmes de fichiers sensibles à la casse (Linux) ; la seconde image affichait la vignette de la première.
* Sécurité/robustesse : bornes hautes ajoutées sur les attributs du shortcode (width/height ≤ 2000, margin/padding ≤ 500, border ≤ 100) pour éviter qu'un width="99999" ne déclenche un redimensionnement coûteux sur chaque image.
* Correctif CSS : la formule du plafond « colonnes maximum » n'ajoute plus le padding/la bordure (internes à la vignette en box-sizing:border-box), ce qui faussait le plafond avec un padding élevé.

= 2.0.0-efb [06/07/2026] =
* SIMPLIFICATION : Easy Fancybox est désormais le seul moteur de lightbox pris en charge (testé avec EFB 2.3.20). Suppression de la prise en charge de Lightbox 2, Fancybox 2, Fancybox 3, Lightview, Responsive Lightbox, PhotoSwipe et Slenderbox, de leurs réglages, de leurs scripts (js/fg-fancybox.js, js/fg-fancybox3.js) et du sélecteur de moteur. Les galeries affichent un message d'erreur si Easy Fancybox n'est pas active ; un avertissement s'affiche aussi sur la page de réglages.
* NOUVEAU : grille de vignettes entièrement responsive (CSS grid + auto-fill, propriétés personnalisées). Le nombre de colonnes s'adapte automatiquement à l'écran (téléphone, tablette, ordinateur) selon la largeur de vignette. L'option « columns » devient un maximum sur grand écran (0 = auto). Sans JavaScript.
* NOUVEAU : chargement paresseux natif (loading="lazy") et décodage asynchrone des vignettes.
* NOUVEAU : prise en charge du format WebP dans l'analyse du dossier.
* Les options obsolètes (engine, fb_*, fb3_*, lw_options, permissions) sont supprimées automatiquement de la base de données lors de la mise à niveau (écriture unique).
* Suppression de l'ancienne mise en page à base de float/clear et des largeurs en pixels en ligne.
* Hérité de la 1.7.8-efb : gestion durcie des chemins (ancrage ABSPATH, realpath restreint à wp-content), analyse de dossier portable (sans GLOB_BRACE ni chdir), validation des réglages robuste PHP 8, assets versionnés, CSS chargé uniquement sur les pages à galerie, diaporama Easy Fancybox (lecture auto, cyclique, vitesse, délai initial) via le filtre easy_fancybox_bind, avertissement « FancyBox V2 ».

= 1.7.8 [06/07/2026] =
* Correctif : suppression de glob() + GLOB_BRACE (erreur fatale sur certains builds PHP 8 dépourvus de cette constante, par exemple Alpine Linux) ; l'analyse du dossier utilise désormais toujours l'implémentation portable à base d'opendir(), sans chdir()
* Sécurité (défense en profondeur) : validation par liste blanche du réglage 'engine'
* Robustesse (PHP 8) : la validation des réglages fusionne la saisie avec les valeurs par défaut, plus d'avertissements « Undefined array key » sur envoi partiel
* Fiabilité : toutes les opérations sur fichiers utilisent des chemins absolus ancrés sur ABSPATH (le contrôle realpath ne dépend plus du répertoire de travail du processus)
* Optimisation : le CSS de l'extension (et celui du moteur) n'est chargé que sur les pages affichant une galerie
* Optimisation : paramètre de version sur les assets de l'extension (rafraîchissement du cache navigateur lors des mises à jour)
* Optimisation : écriture unique des options lors de l'initialisation/des migrations
* Admin : avertissement sur la page de réglages quand Easy Fancybox est réglée sur « FancyBox V2 »
* Nettoyage : suppression du pseudo-constructeur de style PHP 4 ; bornage des attributs numériques du shortcode ; suppression du second argument ignoré passé à content_url()

= 1.7.6 / 1.7.7 [26/06/2026] =
* Intégration Easy Fancybox v2.3.20

= 1.7.5 [26/06/2026] =
* Corrections diverses de bugs et de sécurité

= 1.7.4 [18/11/2017] =
* Prise en charge de FancyBox 3
* Option de correction WPML
* Corrections diverses

(Entrées plus anciennes : voir l'extension Folder Gallery d'origine de Vincent Jalby.)
