Améliorer la commodité de configuration de la grille automatique pour moins de 3 images

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 = 3 dans 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 :

branche image-grid-num-setting

2 « J'aime »

Pourriez-vous nous en dire un peu plus sur votre expérience en particulier ?

Quel paramètre utiliseriez-vous et pourquoi ?

Merci – oui.

Pour mon site, je fixerais probablement le seuil à 5 images.

La raison est que beaucoup de messages peuvent naturellement contenir 3 images sans vraiment constituer une « galerie ». Par exemple, un utilisateur pourrait télécharger :

  • une capture d’écran d’un problème
  • une deuxième capture montrant le paramètre ou l’erreur concerné(e)
  • une troisième image montrant le résultat ou la comparaison

Dans ce cas de figure, la grille automatique s’applique aux images consécutives et aide à éviter une dispersion visuelle.

Je tiens également compte du fait qu’encourager de nombreux téléchargements d’images n’est pas idéal pour la taille du stockage ou des sauvegardes, donc je ne cherche pas à pousser les utilisateurs vers des messages très riches en images. Mon propos porte davantage sur le contrôle de la mise en page lorsque plusieurs images sont déjà téléchargées.

Pour moi, la grille automatique devient plus utile lorsqu’un message dépasse clairement quelques images explicatives pour passer à un plus grand nombre d’images. Un seuil autour de 5 images me semble plus approprié pour mon site.

Je ne souhaite donc pas désactiver entièrement la grille automatique. J’aime cette fonctionnalité dans certains cas. Le problème est simplement que le seuil fixe actuel de 3 est un peu trop agressif pour les communautés où de petits groupes d’images sont souvent utilisés dans le cadre d’une explication.

C’est pourquoi je pense qu’un paramètre de site tel que auto_grid_images_minimum_count serait utile. Les sites qui préfèrent le comportement actuel pourraient le laisser à 3, tandis que des sites comme le mien pourraient le porter à 5, 2 ou une autre valeur.

2 « J'aime »

Dans votre cas précis, que se passerait-il si :

  • auto-grid utilisait la mise en page « carousel » par défaut ou
  • il était plus facile pour les utilisateurs de « désactiver la grille » pour tout le groupe

Une autre idée me vient à l’esprit…

Il serait peut-être judicieux de séparer davantage le concept de « groupe d’images » de la « mise en page » de ce groupe.

Par exemple, dans l’éditeur enrichi, si vous pouviez basculer entre trois options pour un groupe (liste, grille, carousel), tout en les maintenant dans le groupe, cela permettrait peut-être aux utilisateurs ou aux modérateurs de choisir la mise en page souhaitée en un seul clic, dans les cas où l’heuristique choisie pour définir la mise en page par défaut ne correspond pas à leurs attentes.

Oui, je pense que cette séparation a du sens.

Dans mon cas, le problème principal n’est pas vraiment l’existence des grilles. C’est que l’heuristique actuelle prend une décision de mise en page assez tôt, dès 3 images consécutives, et expose ensuite cette décision sous forme de balises [grid]...[/grid] dans le message.

Je suis d’accord pour dire que séparer « c’est un groupe d’images » de « ce groupe doit être affiché sous forme de liste/grille/carrousel » serait probablement un modèle plus propre à long terme.

Quelque chose comme ceci me semblerait logique :

  • le rédacteur reconnaît ou crée un groupe d’images, donc reconnaissance dans l’éditeur de texte riche ou création dans l’éditeur Markdown.
  • le groupe a un choix de mise en page : liste, grille ou carrousel — un paramètre pour la balise BBCode.
  • les utilisateurs ou les modérateurs peuvent modifier cette mise en page en une seule action, ce qui est possible via le deuxième volet de l’éditeur Markdown.
  • le message ne dépend pas de la compréhension ou de la préservation attentive des balises [grid] par les utilisateurs, ce qui est l’avantage principal de l’éditeur de texte riche à volet unique.

Cela résoudrait probablement plus de cas que l’ajout simple d’un paramètre de seuil, mais c’est quand même une fonctionnalité plus large.

Pour mon site en particulier, je pense que je choisirais quand même liste comme valeur par défaut pour les petits groupes d’images, car 3 captures d’écran font souvent partie d’une explication plutôt que d’une galerie. Pour les lots plus importants, je vois bien l’utilité d’une grille ou d’un carrousel.

Il y a donc peut-être deux niveaux d’amélioration :

  1. un paramètre d’administration plus simple pour le comportement actuel, comme auto_grid_images_minimum_count, en conservant la valeur par défaut existante de 3
  2. un modèle de mise en page des groupes d’images plus riche par la suite, où la liste/grille/carrousel peut être modifié plus facilement sans éditer manuellement le code. Cependant, je pense que cela relève d’une autre demande de fonctionnalité.

Bien que, si la deuxième direction est privilégiée, alors ma suggestion initiale concernant ce paramètre de seuil soit moins importante, mais je pense que le problème sous-jacent est le même : les administrateurs et les utilisateurs ont besoin d’un peu plus de contrôle sur le moment où plusieurs images sont traitées comme un bloc de style galerie plutôt que comme des images explicatives normales en ligne.

1 « J'aime »

Donc, oui, je pense que la façon dont je l’envisage maintenant serait de faire ce qui suit :

  • lorsqu’> 1 image est téléchargée, l’entourer de [grid]
    • lorsque le nombre est <=3, utiliser [grid mode=list] par défaut
    • lorsque le nombre est > 3 et <=10, utiliser [grid mode=grid] par défaut
    • lorsque le nombre est > 10, utiliser [grid mode=carousel] par défaut
  • en mode riche et en prévisualisation, permettre à l’utilisateur de basculer facilement entre les modes list, grid et carousel

@chapoi et @renato, je suis curieux de connaître vos avis à ce sujet.

1 « J'aime »

Pas convaincu. Même dans le cas de l’exemple de capture d’écran de l’auteur. Je préférerais que ceux-ci soient côte à côte.

Je suis plutôt en faveur du paramètre proposé à l’origine, si jamais, plutôt que d’essayer d’être malin à ce sujet, mais nous devrions attendre que cette demande de fonctionnalité ait plus de votes, ou que nous ayons entendu la même chose ailleurs, avant de prendre aucune action.

1 « J'aime »