schachbulle / contao-timeline-bundle
Bindet die Zeitleisten-Bibliothek TimelineJS als Inhaltselement und Frontend-Modul in Contao ein.
Package info
github.com/Samson1964/contao-timeline-bundle
Language:JavaScript
Type:contao-bundle
pkg:composer/schachbulle/contao-timeline-bundle
Requires
- php: ^8.1
- ext-json: *
- contao-community-alliance/meta-palettes: ^2.1
- contao/core-bundle: ^4.13 || ^5.3
- menatwork/contao-multicolumnwizard-bundle: ^3.6
- psr/cache: ^1.0 || ^2.0 || ^3.0
- psr/log: ^1.1 || ^2.0 || ^3.0
- symfony/asset: ^5.4 || ^6.0 || ^7.0
- symfony/config: ^5.4 || ^6.0 || ^7.0
- symfony/dependency-injection: ^5.4 || ^6.0 || ^7.0
- symfony/event-dispatcher: ^5.4 || ^6.0 || ^7.0
- symfony/event-dispatcher-contracts: ^2.0 || ^3.0
- symfony/filesystem: ^5.4 || ^6.0 || ^7.0
- symfony/http-foundation: ^5.4 || ^6.0 || ^7.0
- symfony/http-kernel: ^5.4 || ^6.0 || ^7.0
- symfony/routing: ^5.4 || ^6.0 || ^7.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^10.5
Conflicts
- contao/core: *
- contao/manager-plugin: <2.0 || >=3.0
- schachbulle/contao-timelinejs-bundle: *
README
Bindet die Zeitleisten-Bibliothek TimelineJS 3 als Inhaltselement und als Frontend-Modul in Contao ein. Die Stationen werden im Backend gepflegt; die Zeitleiste wird im Browser aus einer nachgeladenen JSON-Datei aufgebaut.
Läuft unter Contao 4.13 und Contao 5.7.
Herkunft
Das Bundle beruht auf netzmacht/contao-timelinejs von David Molineus. Von dort stammen das Datenmodell, der Aufbau der Zeitleiste und die Datencontainer. Übernommen wurden außerdem die dort verwendeten Teile von netzmacht/contao-toolkit — allerdings nicht als Abhängigkeit, sondern in modernisierter Form unmittelbar im Bundle, sodass keine Bindung an fremde Veröffentlichungszyklen besteht.
Die Feldliste der Datencontainer ist unverändert geblieben. Wer bereits mit netzmacht/contao-timelinejs gearbeitet hat, findet seine Daten wieder.
Installation
composer require schachbulle/contao-timeline-bundle
Anschließend die Datenbank aktualisieren:
vendor/bin/contao-console contao:migrate
Verwendung
- Im Backend unter Inhalte → Zeitstrahlen einen Zeitstrahl anlegen.
- Zu diesem Zeitstrahl Einträge erfassen. Drei Arten stehen zur Wahl:
- Ereignis — eine Station der Zeitleiste, mit Beginn und wahlweise Ende
- Titel — die Titelfolie, die ohne Zeitbezug vorweg erscheint
- Zeitabschnitt — ein farbig hinterlegter Balken über mehrere Stationen
- Im Artikel ein Inhaltselement Zeitstrahl einfügen oder im Seitenlayout ein Frontend-Modul gleichen Namens einbinden und den Zeitstrahl auswählen.
Datumsangaben
Erwartet wird Y-m-d H:i:s.u, wobei von rechts her alles entfallen darf.
Ebenso angenommen wird die durch Kommas getrennte Schreibweise aus
TimelineJS 2 (JJJJ,MM,TT), wie sie in gewachsenen Beständen vorkommt.
Zulässig sind damit unter anderem:
| Eingabe | Bedeutung |
|---|---|
1291 |
das Jahr 1291 |
1848-03 |
März 1848 |
2024-05-17 |
17. Mai 2024 |
2024-05-17 14:30 |
17. Mai 2024, 14:30 Uhr |
-753-04-21 |
21. April 753 v. Chr. |
1922,05,14 |
14. Mai 1922 |
1912,07 |
Juli 1912 |
Soll statt des Datums eine eigene Beschriftung erscheinen — etwa „Frühjahr 1848“ —, wird diese im Feld Anzeige hinterlegt.
Zwischenspeicher
Eine aufgebaute Zeitleiste wird im Anwendungs-Zwischenspeicher von Symfony
abgelegt. Beim Speichern im Backend wird sie von selbst verworfen. Wird eine
Zeitleiste aus einer eigenen Datenquelle gespeist, deren Daten sich außerhalb
von Contao ändern, hilft der Eintrag Zeitstrahl-Cache leeren im
Wartungsmodul. Im Entwicklungsbetrieb (APP_ENV=dev) wird nichts
zwischengespeichert.
Erweiterung durch eigenen Code
Der Aufbau einer Zeitleiste läuft über Symfony-Ereignisse. Wer eigene Stationen
beisteuern will — etwa aus einer Terminverwaltung —, hängt sich in
BuildTimelineEvent ein und trägt zugleich seine Kennung in den Parameter
schachbulle_timeline.data_sources ein. Am Zeitstrahl lässt sich die
Datenquelle dann im Feld Datenquelle auswählen.
| Ereignis | Zweck |
|---|---|
BuildTimelineEvent |
Stationen und Zeitabschnitte zur Zeitleiste hinzufügen |
BuildEntryEvent |
den Aufbau eines einzelnen Eintrags übernehmen oder ändern |
BuildTimelineOptionsEvent |
Einstellungen von TimelineJS anpassen |
BuildSourceUrlEvent |
der Adresse der JSON-Datei Parameter mitgeben |
GetCacheKeyEvent |
den Schlüssel im Zwischenspeicher erweitern |
Der letzte Punkt ist wichtig, sobald eine Zeitleiste je nach Besucher unterschiedlich ausfällt: ohne Erweiterung des Schlüssels bekämen alle die Fassung zu sehen, die zuerst erzeugt wurde.
Templates
| Template | Zweck |
|---|---|
ce_timelinejs.html5 |
Inhaltselement |
mod_timelinejs.html5 |
Frontend-Modul |
timelinejs_timeline.html5 |
gemeinsame Ausgabe, von beiden eingebunden |
Die Einstellungen werden dem Container als Attribut mitgegeben und von der
mitgelieferten Datei timelinejs-init.js ausgewertet. Ein eingebettetes Skript
wird bewusst vermieden, damit die Ausgabe auch unter der Content-Security-Policy
von Contao 5 funktioniert.
Lizenz
LGPL-3.0-or-later. TimelineJS selbst steht unter der Mozilla Public License 2.0,
siehe src/Resources/public/timelinejs/.