Konfigurierbare Mindestanzahl von Bildern für automatische Bildergitter
Ich bin auf eine Einschränkung der Funktion für automatische Bildergitter gestoßen.
Derzeit scheint das Verhalten des automatischen Gitters durch die Website-Einstellung für automatische Bildergitter gesteuert zu werden, aber der tatsächliche Schwellenwert, ab dem der Composer [grid]...[/grid] einfügt, ist weiterhin im Frontend-Code fest codiert.
Die relevante Composer-Logik verwendet derzeit einen hartcodierten Wert:
const MIN_IMAGES_TO_AUTO_GRID = 3;
Soweit ich das beurteilen kann, haben Administratoren derzeit die Wahl zwischen:
| Was Administratoren derzeit tun können | Ergebnis |
|---|---|
| Automatische Bildergitter aktivieren | Uploads von 3 oder mehr aufeinanderfolgenden Bildern werden automatisch in [grid]...[/grid] eingebettet |
| Automatische Bildergitter deaktivieren | Keine automatische Gitter-Einbettung |
| Den Schwellenwert von 3 auf eine andere Zahl ändern | Derzeit nicht als Website-Einstellung verfügbar |
Das Problem ist, dass 3 nicht unbedingt der richtige Schwellenwert für jede Community ist.
Für einige Websites sind automatische Gitter nützlich, aber nur, wenn Benutzer eine größere Anzahl von Bildern hochladen. Ein Administrator möchte beispielsweise, dass das automatische Gitter erst ab 5, 6, 10 oder einem anderen Wert beginnt, anstatt bereits beim Hochladen von 3 Bildern zu reagieren.
Dies wäre besonders nützlich für Communities, in denen Benutzer oft eine kleine Anzahl von Bildern zusammen mit erläuterndem Text hochladen, größere Galerien jedoch weiterhin in einem Gitter kompakt dargestellt werden sollen.
Vorgeschlagene Richtung
Ich denke, dies könnte verbessert werden, indem eine konfigurierbare Website-Einstellung für die Mindestanzahl aufeinanderfolgender Bild-Uploads hinzugefügt wird, bevor der Composer automatisch ein Gitter einfügt.
Etwas in der Art von:
auto_grid_images_minimum_count
```\n
Zum Beispiel:
| Einstellung | Beispielwert |
| --- | --- |
| `enable_auto_grid_images` | `true` |
| `auto_grid_images_minimum_count` | `5` |
Dann wäre das automatische Gitter weiterhin verfügbar, würde aber erst ausgelöst, wenn der konfigurierte Schwellenwert erreicht ist.
Dies behält das bestehende Verhalten als Standard bei, wenn die neue Einstellung standardmäßig auf `3` gesetzt ist, und gibt den Administratoren mehr Kontrolle.
## Experimenteller Zweig / möglicher Vorsprung
Ich habe hier einen kleinen experimentellen Zweig erstellt, falls jemand mit mehr Erfahrung in der Discourse-Entwicklung Zeit hat, ihn zu forken, zu bereinigen oder die Idee weiterzuverfolgen:
[image-grid-num-setting branch](https://github.com/Ethsim12/discourse/tree/image-grid-num-setting)
Der Zweig ist nicht als polierter PR gedacht. Er ist eher ein Ausgangspunkt, der die beabsichtigte Richtung zeigt:
- eine neue Website-Einstellung für die Mindestanzahl von Bildern im automatischen Gitter hinzufügen
- diese Einstellung für den Client verfügbar machen
- den hartcodierten `MIN_IMAGES_TO_AUTO_GRID = 3`-Check im Composer-Upload-Code durch den konfigurierten Wert ersetzen
- den Text der Admin-Einstellung aktualisieren, sodass die bestehende Beschreibung für automatische Gitter nicht mehr impliziert, dass der Schwellenwert immer 3 ist
- Frontend-Specs aktualisieren/hinzufügen, falls erforderlich
Die Art der Frontend-Änderung, die ich im Sinn hatte, ist ungefähr:
```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;
}
Es gibt auch ein aktuelles Beispiel für eine Discourse-typische Aufzählung (enum) als Website-Einstellung in PR #36014:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
Dieser PR ist für das Kalender- und Events-Plugin und nicht direkt für Bildergitter gedacht, daher schlage ich nicht vor, dass er diese Funktion beeinflusst. Ich erwähne ihn, weil er ein nützliches Implementierungsmuster für diese Art von konfigurierbarer Website-Einstellung zu zeigen scheint: die Einstellung definieren, sie für den Client verfügbar machen und sie dann im Frontend über siteSettings auslesen.
Verwandte Links
Ursprüngliche Diskussion über das Deaktivieren von automatischen Bildergittern:
Ankündigung zu automatischen Bildergittern:
Automatically apply grids to image uploads
Beispiel-PR, der die Architektur von Website-Einstellungen zeigt:
PR #36014 - FEATURE: adds calendar_upcoming_events_default_view setting
Mein experimenteller Zweig: