Contaje mínimo de imágenes configurable para cuadrículas de imágenes automáticas
He encontrado una limitación con la función de cuadrícula de imágenes automática.
En este momento, el comportamiento de la cuadrícula automática parece estar controlado por la configuración del sitio para imágenes de cuadrícula automática, pero el umbral real para cuando el compositor inserta [grid]...[/grid] sigue siendo fijo en el código del frontend.
La lógica del compositor relevante utiliza actualmente un valor codificado:
const MIN_IMAGES_TO_AUTO_GRID = 3;
Así que, por lo que puedo ver, los administradores actualmente tienen la opción entre:
| Lo que pueden hacer los administradores ahora | Resultado |
|---|---|
| Habilitar imágenes de cuadrícula automática | Las cargas de 3 o más imágenes consecutivas se envuelven automáticamente en [grid]...[/grid] |
| Deshabilitar imágenes de cuadrícula automática | Sin envoltura de cuadrícula automática |
| Cambiar el umbral de 3 a otro número | No disponible actualmente como configuración del sitio |
El problema es que 3 no es necesariamente el umbral adecuado para cada comunidad.
Para algunos sitios, las cuadrículas automáticas son útiles, pero solo cuando los usuarios cargan un lote más grande de imágenes. Por ejemplo, un administrador podría querer que la cuadrícula automática comience en 5, 6, 10 u otro valor, en lugar de activarse tan pronto como se cargan 3 imágenes.
Esto sería especialmente útil para comunidades donde los usuarios a menudo cargan una pequeña cantidad de imágenes en línea con texto explicativo, pero las galerías más grandes deberían compactarse en una cuadrícula.
Dirección propuesta
Creo que esto podría mejorarse agregando una configuración del sitio configurable para la cantidad mínima de cargas de imágenes consecutivas antes de que el compositor inserte automáticamente una cuadrícula.
Algo como:
auto_grid_images_minimum_count
Por ejemplo:
| Configuración | Valor de ejemplo |
|---|---|
enable_auto_grid_images |
true |
auto_grid_images_minimum_count |
5 |
Entonces, la cuadrícula automática seguiría disponible, pero solo se activaría una vez que se alcance el umbral configurado.
Esto mantiene el comportamiento existente como predeterminado si la nueva configuración predetermina 3, mientras que da a los administradores más control.
Rama experimental / posible ventaja
n
He creado una pequeña rama experimental aquí por si alguien con más experiencia en el desarrollo de Discourse tiene tiempo para bifurcarla, limpiarla o llevar la idea adelante:
La rama no está destinada a ser un PR pulido todavía. Es más bien un punto de partida que muestra la dirección prevista:
- agregar una nueva configuración del sitio para la cantidad mínima de imágenes de la cuadrícula automática
- exponer esa configuración al cliente
- reemplazar la verificación codificada
MIN_IMAGES_TO_AUTO_GRID = 3en el código de carga del compositor con el valor configurado - actualizar el texto de la configuración del administrador para que la redacción existente de la cuadrícula automática ya no implique que el umbral siempre es 3
- agregar/actualizar especificaciones del frontend si es necesario
El tipo de cambio de frontend que tenía en mente es aproximadamente:
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;
}
También hay un ejemplo reciente de una configuración de sitio de estilo Discourse en el PR #36014:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
Ese PR es para el plugin de Calendario y Eventos en lugar de cuadrículas de imágenes directamente, así que no sugiero que afecte esta función. Lo menciono porque parece mostrar un patrón de implementación útil para este tipo de configuración del sitio configurable: definir la configuración, exponerla al cliente y luego leerla desde el frontend a través de siteSettings.
Enlaces relacionados
Discusión original sobre desactivar imágenes de cuadrícula automática:
Anuncio de cuadrículas de imágenes automáticas:
Aplicar automáticamente cuadrículas a las cargas de imágenes
PR de ejemplo que muestra la arquitectura de configuración del sitio:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
Mi rama experimental: