
Suite à mes précédents billets sur l’éco-système de Dotclear et le support SQLite, j’ai voulu jeter un œil au code d’un plugin qui rouille, GalleryInsert, sorte de boîte à outils pour intégrer dans un billet une série d’image, éventuellement assortie d’un script qui permet d’animer l’ensemble (carousel, …).
Il y a, dans ce plugin, quatre béquilles
qui sont :
- divbox, qui n’a pas bougé depuis cinq ans — je suppose que c’est un avatar de lightbox, magnific-popup et consort
- galleria, qui, si j’en crois les tickets ouverts, n’a pas l’air très vivant non plus
- jgallery, qui est visiblement encore supporté
- tosrus1, qui est mort depuis plus de sept ans — il fournit un carousel
Toutes ces bibliothèques, sauf une, s’appuient sur jQuery, reste à vérifier si elles tournent avec la 3.6.1 qu’on diffuse dans Dotclear, si je liste, dans le même ordre :
- divbox, c’est jQuery ≥ 1.3.2
- galleria, c’est jQuery ≥ 1.9.0
- jgallery, c’est indépendant, une chose de moins à gérer, tant mieux
- tosrus, c’est jQuery ≥ 1.7.0
Autant dire qu’à part jgallery, c’est pas gagné question fraîcheur et compatibilité avec l’existant !
Bref, je ne veux pas critiquer les choix faits pour le développement de ce plugin, qui fait/faisait le job qu’on lui demande, par contre je détaille sa construction (côté bibliothèque Javascript) pour montrer que c’est compliqué de s’appuyer sur du code tiers parce qu’il a tendance à rouiller, voire à disparaître !
Alors je sais que c’est le jeu
du logiciel libre et ouvert mais ça a ses limites.
Si jamais quelqu’un avait envie de le reprendre je suggèrerai ceci :
Virer les vieilles béquilles, ou a minima faire en sorte que leur code soit mis au goût du jour et compatible avec jQuery ≥ 3.6.1
Virer la gestion des galeries privées, il y a beaucoup de code PHP autour de ça et je ne suis pas certain que ce soit une bonne idée de le conserver 2
Mettre en place un cache des répertoires de la médiathèque pour éviter de tout balayer à chaque fois 3, ou alors utiliser la même technique que pour le changement de répertoire d’un média 4
En mode wiki : Utiliser une macro
///gi
par exemple plutôt que le marqueur::
qui peut être confondu avec une définition (de liste) si inséré en début de ligne 5D’une manière générale, plutôt qu’un code générique du style
::gallery
ou///gi
, j’utiliserai carrément une balise HTML spécifique, du genre<gallery [attr…]>…</gallery>
ou<gallery [attr…] />
, plus simple à gérer ensuite et qui reste tout à fait compatible sans traitement (les navigateurs ignoreront simplement cette balise)
Enfin côté source PHP du plugin (mécanique Dotclear) en lui-même, il lui faut un petit coup de peinture, mais rien de bien sorcier pour le rendre fonctionnel avec les dernières versions de Dotclear, je pense.
-
J’ai eu du mal à trouver la version (2.4.2) la plus récente à télécharger. ↩︎
-
Si jamais on avait besoin d’une galerie privée, autant la glisser dans un billet protégé par un mot de passe, facile à faire. ↩︎
-
Je vais rajouter dans la future 2.24 deux behaviors qui permettront de mettre à jour ce cache à chaque création/suppression de répertoire dans la médiathèque. ↩︎
-
Qui s’appuie sur la liste des répertoires connus dans la base de données (possiblement incomplète). ↩︎
-
Ça oblige a échapper le premier caractère pour éviter la confusion. ↩︎
1 De Dascritch -
De nos jours, une gallerie d’image doit aussi marcher au tactile. Et c’est faisable quasi totalement en css : ma dernière implémentation n’avait que 15 lignes de js
2 De Franck -
M’enfin ? T’as oublié de mettre les quinze lignes en question dans le commentaire ! Et la CSS qui va avec aussi :-p
3 De Guillaume [Matos Vélo] -
En effet, la galerie privé est à mon sens inutile. Quant au cache des répertoires, il serait en effet bienvenu. Pas de souci pour le changement de code générique, mais il faudra conserver la rétro compatibilité.
4 De Guillaume [Matos Vélo] -
En complément, pour ma part, j’utilise uniquement la “béquille” jgallery.
5 De Tomek -
Merci pour ce billet fort utile au cas où on trouverait un développeur qui souhaite le reprendre et surtout l’améliorer.
Pour info, on peut tout à fait utiliser gallery insert sans les “béquilles” carrousel, en utilisant simplement un autre plugin de modal box comme magnific popup. Ce que je fais principalement.
Il fonctionne encore en 2.23.1…