Entwicklerhandbuch¶
Architektur im Überblick¶
| Teil | Klasse |
|---|---|
| Frontend-Plugin | Controller\SupportTimesController |
| Daten + Caching | Service\ReleaseService |
| Dashboard-Widget | Dashboard\Widgets\SupportTimesWidget |
| Backend-Warnung | Backend\EventListener\UpdateNotificationListener |
Alle Services werden über Configuration/Services.yaml mit Autowiring
verdrahtet; es gibt keine XCLASS-Overrides.
Datenquelle und Caching¶
ReleaseService ist die einzige Stelle, die mit den TYPO3-Servern spricht. Sie
liest zwei offizielle Endpunkte:
https://get.typo3.org/json— die Release-Liste.https://get.typo3.org/api/v1/major/— die Metadaten je Hauptversion (Support-Daten, Phasen).
Das aufbereitete Ergebnis liegt im eigenen Cache nt_supporttimes_cache unter
einem Bezeichner, der die gewählten Versionen enthält — so verdrängen eine
gefilterte Roadmap und das volle Widget einander nicht. Die Lebensdauer ist die
Extension-Einstellung cacheLifetime (Standard 86400 s). Ein Cache-Treffer
antwortet sofort, ohne HTTP-Aufruf.
Backend-Warnung¶
UpdateNotificationListener lauscht auf das Core-Event
SystemInformationToolbarCollectorEvent
(#[AsEventListener], PSR-14). Es vergleicht die laufende Version mit dem
neuesten Patch ihres Hauptzweigs und fügt ein Toolbar-Element hinzu, das auf
get.typo3.org/release/… verlinkt. Ein Fehlschlag beim API-Zugriff wird
geschluckt — das Backend bricht nie, nur weil sich die Warnung nicht berechnen
ließ.
Konventionen¶
- Nur moderne TYPO3-APIs — Extbase, Fluid, PSR-14-Events, Dependency Injection.
- Keine deprecated Core-API, kein XCLASS.
- Unterstützt: TYPO3 12.4 / 13.4 / 14, PHP 8.2+.
Release¶
Das Releasen ist automatisiert. Einen Tag v*.*.* pushen:
Der Workflow Publish to TER liest dann den passenden ## [VERSION]-Abschnitt
aus CHANGELOG.md, veröffentlicht mit typo3/tailor im TER und nutzt genau
diesen Abschnitt (auf eine Zeile reduziert) als Upload-Kommentar. CHANGELOG.md
und die Version in ext_emconf.php mit dem Tag im Gleichschritt halten.
Changelog-Einträge werden auf Englisch verfasst, damit der TER sie unverändert
anzeigt.
Ein Push auf main mit Änderungen unter docs/ (oder CHANGELOG.md) stößt den
Docs-Workflow an, der diese Seite mit mkdocs build --strict baut und nach
https://docs.netthinks.com/nt-supporttimes/ ausspielt.