Contagem mínima configurável de imagens para grades automáticas
Deparei-me com uma limitação na funcionalidade de grade automática de imagens.
No momento, o comportamento da grade automática parece ser controlado pela configuração do site para imagens em grade automática, mas o limite real para quando o compositor insere [grid]...[/grid] ainda está fixo no código do frontend.
A lógica relevante do compositor atualmente usa um valor codificado:
const MIN_IMAGES_TO_AUTO_GRID = 3;
Portanto, pelo que posso ver, os administradores atualmente têm a escolha entre:
| O que os administradores podem fazer agora | Resultado |
|---|---|
| Ativar imagens em grade automática | Uploads de 3 ou mais imagens consecutivas são automaticamente envolvidos em [grid]...[/grid] |
| Desativar imagens em grade automática | Nenhum envolvimento automático em grade |
| Alterar o limite de 3 para outro número | Não disponível atualmente como configuração do site |
O problema é que 3 nem sempre é o limite certo para todas as comunidades.
Para alguns sites, as grades automáticas são úteis, mas apenas quando os usuários fazem upload de um lote maior de imagens. Por exemplo, um administrador pode querer que a grade automática comece em 5, 6, 10 ou outro valor, em vez de ser acionada assim que 3 imagens são enviadas.
Isso seria especialmente útil para comunidades onde os usuários frequentemente enviam um pequeno número de imagens em linha com texto explicativo, mas galerias maiores ainda deveriam ser compactadas em uma grade.
Direção proposta
Acho que isso poderia ser melhorado adicionando uma configuração do site configurável para o número mínimo de uploads consecutivos de imagens antes que o compositor insira automaticamente uma grade.
Algo como:
auto_grid_images_minimum_count
Por exemplo:
| Configuração | Valor de exemplo |
|---|---|
enable_auto_grid_images |
true |
auto_grid_images_minimum_count |
5 |
Então, a grade automática ainda estaria disponível, mas só seria acionada quando o limite configurado fosse atingido.
Isso mantém o comportamento existente como padrão se a nova configuração tiver 3 como valor padrão, enquanto dá mais controle aos administradores.
Ramo experimental / possível vantagem
Criei um pequeno ramo experimental aqui, caso alguém com mais experiência em desenvolvimento Discourse tenha tempo para bifurcá-lo, limpá-lo ou levar a ideia adiante:
O ramo não é destinado a ser um PR polido ainda. É mais um ponto de partida mostrando a direção pretendida:
- adicionar uma nova configuração do site para a contagem mínima de imagens da grade automática
- expor essa configuração ao cliente
- substituir a verificação codificada
MIN_IMAGES_TO_AUTO_GRID = 3no código de upload do compositor pelo valor configurado - atualizar o texto da configuração do administrador para que a redação existente da grade automática não implique mais que o limite é sempre 3
- adicionar/atualizar especificações do frontend, se necessário
O tipo de alteração de frontend que tinha em mente é 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;
}
Há também um exemplo recente de uma configuração de site de enumeração estilo Discourse no PR #36014:
PR #36014 - FEATURE: adiciona configuração calendar_upcoming_events_default_view
Esse PR é para o plugin Calendar and Events, não para grades de imagens diretamente, então não estou sugerindo que ele afete essa funcionalidade. Menciono-o porque parece mostrar um padrão de implementação útil para esse tipo de configuração do site configurável: definir a configuração, expô-la ao cliente e, em seguida, lê-la do frontend via siteSettings.
Links relacionados
Discussão original sobre desativar imagens em grade automática:
Desativar imagens em grade automática?
Anúncio de grades automáticas de imagens:
Aplicar grades automaticamente a uploads de imagens
Exemplo de PR mostrando arquitetura de configuração do site:
PR #36014 - FEATURE: adiciona configuração calendar_upcoming_events_default_view
Meu ramo experimental: