Zum Inhalt

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:

git tag -a v1.3.1 -m "Release 1.3.1"
git push origin v1.3.1

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.