schachbulle/contao-timeline-bundle

Bindet die Zeitleisten-Bibliothek TimelineJS als Inhaltselement und Frontend-Modul in Contao ein.

Maintainers

Package info

github.com/Samson1964/contao-timeline-bundle

Language:JavaScript

Type:contao-bundle

pkg:composer/schachbulle/contao-timeline-bundle

Transparency log

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

2.0.5 2026-08-27 14:49 UTC

This package is auto-updated.

Last update: 2026-08-27 18:31:45 UTC


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

  1. Im Backend unter Inhalte → Zeitstrahlen einen Zeitstrahl anlegen.
  2. 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
  3. 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/.