Developer Guide¶
Architecture at a glance¶
| Part | Class |
|---|---|
| Frontend plugin | Controller\SupportTimesController |
| Data + caching | Service\ReleaseService |
| Dashboard widget | Dashboard\Widgets\SupportTimesWidget |
| Backend warning | Backend\EventListener\UpdateNotificationListener |
All services are wired through Configuration/Services.yaml with autowiring;
there are no XCLASS overrides.
Data source and caching¶
ReleaseService is the single place that talks to TYPO3's servers. It reads
two official endpoints:
https://get.typo3.org/json— the release list.https://get.typo3.org/api/v1/major/— the per-major metadata (support dates, phases).
The processed result is stored in the dedicated cache nt_supporttimes_cache
under an identifier that includes the selected versions, so a filtered roadmap
and the full widget do not evict each other. The lifetime is the extension
setting cacheLifetime (default 86400 s). A cache hit returns immediately
without any HTTP call.
Backend warning¶
UpdateNotificationListener listens to the core
SystemInformationToolbarCollectorEvent
(#[AsEventListener], PSR-14). It compares the running version against the
latest patch of its major branch and adds a toolbar item linking to
get.typo3.org/release/…. Any failure to reach the API is swallowed, so the
backend never breaks because the warning could not be computed.
Conventions¶
- Modern TYPO3 APIs only — Extbase, Fluid, PSR-14 events, dependency injection.
- No deprecated core API, no XCLASS.
- Supported: TYPO3 12.4 / 13.4 / 14, PHP 8.2+.
Release¶
Releasing is automated. Push a tag v*.*.*:
The Publish to TER workflow then reads the matching ## [VERSION] section
from CHANGELOG.md, publishes to the TER with typo3/tailor and uses that
section (collapsed to one line) as the upload comment. Keep CHANGELOG.md and
the version in ext_emconf.php in step with the tag. Changelog entries are
written in English so the TER shows them unchanged.
Pushing to main with changes under docs/ (or CHANGELOG.md) triggers the
Docs workflow, which builds this site with mkdocs build --strict and
deploys it to https://docs.netthinks.com/nt-supporttimes/.