Улучшение удобства настройки авто-сетки для менее чем 3 изображений

Настраиваемое минимальное количество изображений для автоматических сеток

Я столкнулся с ограничением функции автоматических сеток изображений.

В настоящее время поведение автоматической сетки, похоже, контролируется параметром сайта для автоматических сеток изображений, но фактический порог, при котором редактор вставляет [grid]...[/grid], всё ещё задан жёстко в клиентском коде.

Соответствующая логика редактора в настоящее время использует жёстко заданное значение:

const MIN_IMAGES_TO_AUTO_GRID = 3;

Так что, насколько я могу судить, у администраторов на данный момент есть выбор между:

Что могут сделать администраторы сейчас Результат
Включить автоматические сетки изображений Загрузки из 3 или более последовательных изображений автоматически оборачиваются в [grid]...[/grid]
Отключить автоматические сетки изображений Нет автоматического оборачивания в сетку
Изменить порог с 3 на другое число В настоящее время недоступно как параметр сайта

Проблема в том, что 3 не обязательно является правильным порогом для каждого сообщества.

Для некоторых сайтов автоматические сетки полезны, но только когда пользователи загружают большую партию изображений. Например, администратор может захотеть, чтобы автоматическая сетка начиналась с 5, 6, 10 или другого значения, а не срабатывала сразу после загрузки 3 изображений.

Это было бы особенно полезно для сообществ, где пользователи часто загружают небольшое количество изображений в тексте с пояснениями, но большие галереи всё ещё должны быть компактно оформлены в виде сетки.

Предлагаемое направление

Я думаю, что это можно улучшить, добавив настраиваемый параметр сайта для минимального количества последовательных загрузок изображений, после которого редактор автоматически вставляет сетку.

Что-то вроде:

auto_grid_images_minimum_count
```\n
Например:

| Параметр | Пример значения |
| --- | --- |
| `enable_auto_grid_images` | `true` |
| `auto_grid_images_minimum_count` | `5` |

Тогда автоматическая сетка всё ещё будет доступна, но она будет срабатывать только после достижения настроенного порога.

Это сохраняет существующее поведение по умолчанию, если новое значение по умолчанию равно `3`, одновременно давая администраторам больше контроля.

## Экспериментальная ветка / возможный старт

Я создал небольшую экспериментальную ветку здесь, на случай если кто-то с большим опытом разработки Discourse найдёт время, чтобы форкнуть её, очистить или развить идею:

[ветка image-grid-num-setting](https://github.com/Ethsim12/discourse/tree/image-grid-num-setting)

Ветка не предназначена как готовый PR. Это скорее отправная точка, показывающая предполагаемое направление:

- добавить новый параметр сайта для минимального количества изображений в автоматической сетке
- сделать этот параметр доступным для клиента
- заменить жёстко заданную проверку `MIN_IMAGES_TO_AUTO_GRID = 3` в коде загрузки редактора на настроенное значение
- обновить текст параметра администратора, чтобы существующее описание автоматической сетки больше не подразумевало, что порог всегда равен 3
- добавить/обновить клиентские тесты при необходимости

Примерное изменение на стороне клиента, которое я имел в виду:

```js
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;
}

Также есть недавний пример параметра сайта в стиле Discourse (перечисление) в PR #36014:

PR #36014 - FEATURE: добавляет параметр calendar_upcoming_events_default_view

Этот PR предназначен для плагина Календарь и события, а не напрямую для сеток изображений, поэтому я не предлагаю, чтобы он влиял на эту функцию. Я упоминаю его, потому что он, кажется, демонстрирует полезный шаблон реализации для такого типа настраиваемых параметров сайта: определить параметр, сделать его доступным для клиента, а затем читать его на стороне клиента через siteSettings.

Связанные ссылки

Оригинальное обсуждение отключения автоматических сеток изображений:

Отключение автоматических сеток изображений?

Объявление об автоматических сетках изображений:

Автоматическое применение сеток к загруженным изображениям

Пример PR, демонстрирующий архитектуру параметров сайта:

PR #36014 - FEATURE: добавляет параметр calendar_upcoming_events_default_view

Моя экспериментальная ветка:

ветка image-grid-num-setting

1 лайк