Ein Dienst, der Zetkin Termine als Kalender oder Liste im Typo3 "DAS LINKE CMS" einbettet.
- Abrufen aller Termine aus Zetkin für euren KV/LV
- Einbettung der Termine als Kalender oder Liste via
<iframe>in die Website - Stellt iCal-Link zur Verfügung, womit der Kalender in mobilen Kalender-Apps abonniert werden kann
Eine Live-Vorschau kann auf der Seite des KV Fuldas eingesehen werden. Bei Rückfragen zur Integration gerne kontaktieren.
Damit die korrekten Daten für euren KV/LV angezeit werden, müsste ihr eure eigene URL zusammenstellen.
Dafür musst ihr zuerst eure Zetkin Organisations-ID rausfinden.
- In Zetkin einloggen und das Dashboard aufrufen.
- Den gewünschten KV/LV anklicken. (hier z.B. "KV Fulda")
- Die aufgerufene Browser-Adresse hat folgendes Schema
https://www.zetkin.die-linke.de/o/192/- Hier endet die Adresse mit der Zahl
192- also ist eure Zetkin Organisations-ID die192(in diesem Fall KV Fulda)
Ersetzt nun den Platzhalter <ORG> mit der vorher ausgelesenen Organisations-ID. Die URLs braucht ihr gleich.
https://linke-calendar.romanzipp.com/org/<ORG>/calendar
https://linke-calendar.romanzipp.com/org/<ORG>/list
Die verfügbaren Komponenten (Kalender & Termin-Liste) werden per iframe eingebettet. Selbst werden sie auf einem anderen Server bereitgestellt und nur im CMS "referenziert".
Ich biete das kostenfreie Hosting des Kalenders an und jede:r ist frei, diesen Dienst zu nutzen. Beachtet, dass Aufrufe auf den Kalender/Termine-Liste/iCal-Endpunkt meinen Server erreichen. Es werden keine Daten außer den öffentlich einsehbaren Zetkin Terminen gespeichert. Server-Zugrifflogs liegen im RAM und werden konstant überschrieben (mehr in meiner Datenschutzerklärung). Natürlich steht es euch frei, dieses quellofene Projekt selbst zu betreiben.
Zum Einbetten des Kalenders muss ein neuer Seitinhalt "Reines HTML" eingefügt werden.
Diese Maske sollte nun zu sehen sein (HTML-Code Feld noch leer):
Die URL für den Kalender hat das folgende Format. Wie oben - ersetzt <ORG> mit eurer Organisations-ID.
https://linke-calendar.romanzipp.com/org/<ORG>/calendar
In das "HTML-Code" Feld wird nun der folgende Code eingefügt. Stelle sicher, dass die URL in src="..." die korrekt erstellte URL für euren KV/LV ist.
<iframe id="calendar-embed"
src="https://linke-calendar.romanzipp.com/org/<ORG>/calendar"
width="100%"
height="930"
scrolling="no"></iframe>
<style>
#calendar-embed {
display: none;
margin-bottom: 2rem;
}
@media (min-width: 576px) {
#calendar-embed { display: block; }
}
</style>Zum Einfügen der Termin-Liste muss ein neuer Seitinhalt "Reines HTML" eingefügt werden.
Diese Maske sollte nun zu sehen sein (HTML-Code Feld noch leer):
Die URL für den Kalender hat das folgende Format. Wie oben - ersetzt <ORG> mit eurer Organisations-ID.
https://linke-calendar.romanzipp.com/org/<ORG>/list?color=white
Es können zusätzliche URL Query-Parameter angehangen werden:
color: Farbe des Texts (verfügbar:black,white)
In das "HTML-Code" Feld wird nun der folgende Code eingefügt. Stelle sicher, dass die URL in src="..." die korrekt erstellte URL für euren KV/LV ist.
<header class="card-header">
<div class="card-title">
<h1 itemprop="headline">
Termine
</h1>
</div>
</header>
<iframe src="https://linke-calendar.romanzipp.com/org/<ORG>/list?color=white"
width="100%"
height="630"></iframe>
<div>
<a href="/termine/" class="btn btn-primary mt-2">
Kalender anzeigen
</a>
</div>Der Dienst erlaubt es euch auch, einen Link herauszugeben, welcher in allen gänigen Kalender-Apps (Google, Apple Kalender, Thunderbird, etc.) "abonniert" werden kann. Damit landen alle Zetkin Termine automatisch im Kalender eurer Smartphones oder Computer.
Hier - wie zuvor auch - das <ORG> gegen eure Organisations-ID austauschen. Der Link kann dann auf eurer Website ausgegeben werden.
https://linke-calendar.romanzipp.com/org/<ORG>/ical
- Anleitung für Apple iPhone
- Anleitung für Google Kalender ("Öffentlichen Kalender über einen Link hinzufügen")
- Anleitung für Thunderbird
Der Server kann selbstverständlich auch selbst betrieben werden. Ein fertiges Docker Image wird über GitHub bereitgestellt.
Im Repo liegt eine docker-compose.yml Beispieldatei bei.
Start go development server (http://localhost:8080):
go run .
# with gow utility
gow -e=go,html run .Build frontend assets & listen for changes:
npm run watch:cssGET /health- Health check endpointGET /org/{org}/calendar- Calendar view for a specific organization- Query params:
year,month(optional)
- Query params:
GET /org/{org}/list- List view showing all upcoming events in chronological order- Query params:
color(optional)
- Query params:
GET /org/{org}/ical- iCal endpoint for subscribing with mobile device- Organization name is automatically fetched from Zetkin API and used as calendar title
GET /event/{eventID}- Event detail modalGET /static/*- Static files (CSS, JS, fonts)
Create a config.yaml file:
scraper:
interval: "6h"
timeout: "30s"
server:
port: "8080"
host: "0.0.0.0"Organizations are automatically discovered when first accessed via the URL. The scraper will then periodically update events for all organizations that have been accessed.
MIT




