Nombre minimum d’images configurable pour les grilles d’images automatiques
Je suis tombé sur une limitation avec la fonctionnalité de grille d’images automatique.
Pour le moment, le comportement de la grille automatique semble être contrôlé par le paramètre du site pour les images en grille automatique, mais le seuil réel pour lequel le composant insère [grid]...[/grid] est toujours codé en dur dans le code frontend.
La logique pertinente du composant utilise actuellement une valeur codée en dur :
const MIN_IMAGES_TO_AUTO_GRID = 3;
Donc, autant que je sache, les administrateurs ont actuellement le choix entre :
| Ce que les administrateurs peuvent faire maintenant | Résultat |
|---|---|
| Activer les images en grille automatique | Les uploads de 3 images consécutives ou plus sont automatiquement enveloppées dans [grid]...[/grid] |
| Désactiver les images en grille automatique | Aucun enveloppement automatique en grille |
| Changer le seuil de 3 à un autre nombre | Non disponible actuellement en tant que paramètre du site |
Le problème est que 3 n’est pas nécessairement le bon seuil pour chaque communauté.
Pour certains sites, les grilles automatiques sont utiles, mais uniquement lorsque les utilisateurs téléchargent un plus grand lot d’images. Par exemple, un administrateur pourrait vouloir que la grille automatique commence à 5, 6, 10 ou une autre valeur, plutôt que de se déclencher dès que 3 images sont téléchargées.
Ce serait particulièrement utile pour les communautés où les utilisateurs téléchargent souvent un petit nombre d’images en ligne avec du texte explicatif, mais les grandes galeries devraient tout de même être compactées en grille.
Direction proposée
Je pense que cela pourrait être amélioré en ajoutant un paramètre de site configurable pour le nombre minimum d’uploads d’images consécutifs avant que le composant n’insère automatiquement une grille.
Quelque chose comme :
auto_grid_images_minimum_count
Par exemple :
| Paramètre | Valeur d’exemple |
|---|---|
enable_auto_grid_images |
true |
auto_grid_images_minimum_count |
5 |
Ensuite, la grille automatique serait toujours disponible, mais elle ne se déclencherait que lorsque le seuil configuré est atteint.
Cela conserve le comportement existant par défaut si le nouveau paramètre est défini par défaut sur 3, tout en donnant plus de contrôle aux administrateurs.
Branche expérimentale / possible avance
J’ai créé une petite branche expérimentale ici au cas où quelqu’un avec plus d’expérience en développement Discourse aurait le temps de la forker, la nettoyer, ou poursuivre l’idée :
branche image-grid-num-setting
La branche n’est pas destinée à être une PR polie pour le moment. C’est plutôt un point de départ montrant la direction souhaitée :
- ajouter un nouveau paramètre de site pour le nombre minimum d’images en grille automatique
- exposer ce paramètre au client
- remplacer la vérification codée en dur
MIN_IMAGES_TO_AUTO_GRID = 3dans le code d’upload du composant par la valeur configurée - mettre à jour le texte du paramètre administrateur afin que la formulation existante de la grille automatique n’implique plus que le seuil est toujours de 3
- ajouter/mettre à jour les spécifications frontend si nécessaire
Le type de modification frontend que j’avais en tête est approximativement :
const minImagesToAutoGrid = Number(
this.siteSettings.auto_grid_images_minimum_count ?? 3
);
if (
this.siteSettings.enable_auto_grid_images &&
this.#consecutiveImages?.length >= minImagesToAutoGrid &&
this.textManipulation
) {
this.textManipulation.autoGridImages([...this.#consecutiveImages]);
this.#consecutiveImages.length = 0;
}
Il y a aussi un exemple récent d’un paramètre de site Discourse de type enum dans la PR #36014 :
PR #36014 - FEATURE: ajoute le paramètre calendar_upcoming_events_default_view
Cette PR est pour le plugin Calendar and Events plutôt que pour les grilles d’images directement, donc je ne suggère pas qu’elle affecte cette fonctionnalité. Je la mentionne parce qu’elle semble montrer un modèle d’implémentation utile pour ce type de paramètre de site configurable : définir le paramètre, l’exposer au client, puis le lire depuis le frontend via siteSettings.
Liens connexes
Discussion originale sur la désactivation des images en grille automatique :
Désactiver les images en grille automatique ?
Annonce des grilles d’images automatiques :
Appliquer automatiquement des grilles aux uploads d’images
Exemple de PR montrant l’architecture des paramètres de site :
PR #36014 - FEATURE: ajoute le paramètre calendar_upcoming_events_default_view
Ma branche expérimentale :