Le nom de ce nouveau module pour Dotclear : "Tiny Gallery Insert" dans sa "version 1.5". 

Ce plugin, tout comme son prédecesseur, permet simplement l'ajout dans un billet, de plusieurs images en une seule opération. Il est aussi débarrassé des moteurs d'affichage de galerie fournis avec l'ancien plugin, devenus obsolètes et jamais mis à jour : Galleria 1.5.7, jGallery 1.6.2, TOSRUS, Divbox (avec son lecteur Flash `jwplayer.swf`). C'est désormais LC Lightbox Lite 2.2.0 qui les remplace. Laissant à l'utilisateur le choix du type de présentation via un plugin tiers tel que ColorBox, MagnificPopup...

 

Voici ce qui a changé depuis "GalleryInsert" pour aboutir à "TinyGalleryInsert" :

1. Architecture et compatibilité

- Réécriture complète selon l'architecture moderne des plugins Dotclear : namespace `Dotclear\Plugin\TinyGalleryInsert`, classes dans `src/` (`My.php`, `Backend.php`, `BackendBehaviors.php`, `Frontend.php`, `FrontendBehaviors.php`, `Install.php`, `Uninstall.php`, `Manage.php`, `GalleryBuilder.php`), usage de `TraitProcess`.
- Abandon de l'ancienne structure procédurale (`_admin.php`, `_public.php`, `_prepend.php`, `_install.php`, `inc/*Behaviors.php`).
- Prérequis relevés : PHP 8.1 minimum, Dotclear 2.39 minimum (contre PHP 5/7 et Dotclear 2.24 pour l'original).
- Code PHP réduit d'environ 1530 à ~820 lignes.

2. Suppression des dépendances tierces embarquées

- Retrait des moteurs d'affichage de galerie fournis avec l'ancien plugin, devenus obsolètes et jamais mis à jour : Galleria 1.5.7, jGallery 1.6.2, TOSRUS, Divbox (avec son lecteur Flash `jwplayer.swf`).
- Suppression de l'icône CKEditor dupliquée et du fichier CSS de réglages devenu vide.

3. Ajout d'une dépendance tierce embarquée

- Ajout du moteur d'affichage de galerie LC Lightbox Lite 2.2.0. Activation/Désactivation possible via l'admin du plugin.

4. Structure

- Remplacement des requêtes SQL directes à la table `media` par l'API média officielle de Dotclear (`App::media()->getFile()`, `getMediaAlt()`, `getMediaTitle()`, `media_thumb`) pour la récupération des fichiers et de leurs métadonnées.
- Validation des répertoires par le mécanisme de confinement natif de la médiathèque.
- Exception conservée volontairement : le listage des fichiers d'un répertoire (`GalleryBuilder::listDirFiles`) reste en SQL direct côté rendu public, après diagnostic d'un bug où l'API de parcours de répertoires de la médiathèque (`chdir()`/`getDir()`/`getFiles()`) ne fonctionne pas en contexte visiteur anonyme (frontend), contrairement au contexte admin. La popup d'administration (`Manage.php`), elle, utilise pleinement l'API sans cette limitation.

5. Popup d'insertion (administration)

- Fusion de `popup.php` (445 lignes) et `GalleryInsertAdminBehaviors.php` (400 lignes) en un `Manage.php` unique et simplifié, accompagné de `js/popup.js`.
- Ajout du glisser-déposer des vignettes pour choisir l'ordre d'insertion des images dans le billet.
- Suppression du choix de taille de lien au clic : le lien pointe désormais systématiquement vers l'image originale ou la galerie LC Lightbox Lite si activée..
- Conservation du seul choix de taille des vignettes affichées dans le billet.
- Tri exclusivement à la souris (glisser-déposer).
- Style de la popup modernisé (`css/popup.css` dédié).

6. Réglages

- Suppression de la page de réglages étendue (`config.php` / `config.tpl`) au profit d'un réglage minimal et validé : la taille de vignette par défaut, contrôlée en base à l'enregistrement.

7. Affichage public de la galerie

- Réécriture de `gallery.css` : passage à un rendu flexbox natif (taille réelle des vignettes) au lieu d'une grille forcée qui écrasait ou floutait les images.
- Aucun agrandissement CSS des vignettes ; effet de survol conservé sans changement de taille.

8. Traductions et documentation

- Audit complet des traductions de l'interface d'administration (mélange français/anglais dans l'original) : 3 textes non traduits corrigés (libellé « original », alerte JavaScript, commentaires HTML).
- Régénération et complétion du fichier `main.po` français ; mise à jour des pages d'aide françaises et anglaises.
- Description du plugin rendue traduisible.
- Commentaires du code harmonisés en anglais.
- `README.md` et `CHANGELOG.md` réécrits pour le fork.

9. Nommage, licence et paternité

- Renommage du plugin en « Tiny Gallery Insert », publié en version **1.3**, sous licence **GPL-2.0-only**.
- Mentions de copyright historiques conservées (FredM, Nicolas Roudaire) et complétées avec l'auteur du fork (Bertrand Roc) ; liste des contributeurs réordonnée (contributeurs en dernier).

10. Pistes d'amélioration futures (non implémentées)

- Navigation clavier pour le glisser-déposer des vignettes dans la popup.
- Pagination de la popup pour les répertoires contenant de nombreuses images.

Version 1.3 ->1.4 : 

- Rendre exclusif (en cas d'activation) le moteur de publication de Galerie "LC LIghtbox Lite" lors de la création d'une galerie alors qu'il se superposait à d'autres moteurs issus de plugin tiers (Colorbox, MagnificPopup, etc...).
- Incrémentation renforcée de chaque galerie quand elles sont présentes dans un même billet.
- Correctif d'un bug CSS lors de l'affichage d'une galerie en mode paysage sur les petites résolutions d'écran.

Version 1.4 -> 1.5

- Migration complète de l'ancienne API de formulaires `form::...` et du HTML construit à la main vers les composants modernes `Dotclear\Helper\Html\Form\...` (`Form`, `Div`, `Para`, `Select`, `Checkbox`, `Label`, `Li`, `Ul`, `Img`, `Link`, `Span`, `Hidden`, `Submit`, `Text`) dans `Manage.php`.
- Correction de l'affichage des boutons de la visionneuse sur certains navigateurs web.
- Suppression de ligne de licence MIT de la bibliothèque jQuery 3.4.1 non chargée.
- Ajout de la sélection par plage dans la popup de sélection de vignettes : Maj-clic sur une image sélectionne désormais toutes les images entre le dernier clic et celle-ci, comme dans la plupart des sélecteurs de fichiers. Fonctionne quel que soit l'ordre courant des vignettes, y compris après un réordonnancement par glisser-déposer.
- Ajout d'un compteur "X image(s) sélectionnée(s)" à côté de "Tout sélectionner / Ne rien sélectionner", mis à jour en temps réel.
- Chargement différé (via IntersectionObserver) de jQuery, LC Lightbox Lite et des feuilles de style associées : ces ressources ne sont désormais chargées que lorsqu'une galerie approche réellement de la zone visible, plutôt qu'au chargement de la page. Sur un billet où la galerie se trouve plus bas dans la page, un visiteur qui ne défile pas jusque-là ne charge plus ces ressources du tout.
- Retrait de la copie de jQuery embarquée par le plugin (jQuery 3.7.1) : suite à un retour utilisateur signalant qu'elle se chargeait en double avec la jQuery 4.0 fournie par Dotclear, un risque réel de conflit entre deux versions coexistant sur la même page. TinyGalleryInsert s'appuie désormais exclusivement sur la jQuery déjà présente sur la page (celle de Dotclear, ou celle d'un autre plugin comme ColorBox), sans jamais en charger de copie propre. Si aucune jQuery n'est présente du tout, la galerie reste un simple lien vers l'image originale, sans visionneuse.
- Correction de l'agrandissement de la popup de sélection de vignettes, qui restait bloquée à son ancienne taille sur les navigateurs à base de Chromium (Chrome, Edge, Brave, Vivaldi...) : ceux-ci mémorisent la taille/position d'une fenêtre `window.open()` nommée et l'appliquent à la réouverture en ignorant les nouvelles dimensions demandées. La taille est désormais forcée depuis l'intérieur de la popup elle-même (`window.resizeTo()`), qui s'applique quel que soit ce que le navigateur avait décidé à l'ouverture.
- Correction d'un doublon d'affichage dans la visionneuse LC Lightbox Lite ("toggle text") : le titre et le texte alternatif de l'image y apparaissaient tous les deux, souvent identiques (Dotclear pré-remplit ces deux champs avec le nom du fichier tant qu'ils ne sont pas personnalisés séparément dans la médiathèque). Seul le titre s'affiche désormais, et plus rien ne s'affiche si ce titre n'est en réalité que le nom du fichier recopié tel quel.
- Correction du regroupement des images par galerie lorsque plusieurs blocs distincts sont présents dans un même billet : chaque galerie dispose désormais de sa propre instance LC Lightbox Lite, évitant tout mélange d'images entre galeries et toute erreur d'ouverture après un premier clic sur une autre galerie.
- Correction d'un défaut d'affichage sur smartphone : la bande de vignettes de LC Lightbox Lite ne se redimensionnait pas lors d'un changement d'orientation de l'écran, réduisant l'image principale à une taille illisible en mode paysage.

 

MODE D'EMPLOI :

Après l'installation de l'archive "TinyGalleryInsert.zip",, le plugin apparait dans le menu latéral gauche de l'administration de Dotclear, ainsi que dans la page "Gestion des Plugins". Un simple clic permet d'accéder à sa page d'administration.

Vous pouvez y Activer/Désactiver le plugin, et y choisir la taille d'affichage des miniatures par défaut dans votre billet. Puis Activer/Désactiver la visionneuse LC Lightbox Lite et régler son thème ; puis Enregistrer.

Lors de la rédaction d'un billet, l'icone de "Tiny Gallery Insert" s'affiche dans la barre de votre éditeur. En un clic, une fenêtre popup vous invite à faire des choix de présentation :

1/ D'abord sélectionner dans votre médiathèque le répertoire de vos images à afficher dans la galerie.

2/ Sélectionner la taille des miniatures que vous souhaitez afficher si le format "carré" (réglage par défaut dans l'administration du plugin) ne vous convient pas.

3/ Sélectionner les images. La sélection multiple en combinant les touches "Maj+clic" est possible. Vous pouvez égalemeny les réordonner par "glisser/déposer" pour modifier leur ordre d'affichage et opter pour une sélection de toutes les images ou les déselectionner.

4/ Lorsque vos choix sont faits, cliquer sur "Ajouter tout le répertoire" ou "Ajouter les images sélectionnées".

 

EXEMPLES DE RENDU SUR VOS BILLETS

Quelques images affichées au format (par défaut) "carré" -> "originale" :

Répertoire complet au format "vignette" -> "originale" :

Quelques images au format "petite" -> "originale" :

Quelques images "moyenne" -> "originale" :

Et pour finir, "originale" -> "originale" même si cela n'a pas beaucoup de sens (capture à 40%) :

 

Je vous invite à découvrir mon billet "TinyGalleryInsert (démo)" pour vous donner un aperçu complet (avec la visionneuse "LC Lightbox Lite") du rendu de cet outil et tenterai bien évidemment de répondre à toutes vos questions via les commentaires ci-dessous, ainsi que maintenir autant que faire se peut "TinyGalleryInsert".

Merci à tous.