Veranstaltungskalender, Terminbuchung, Terminanfragen, Anmeldungen und Teilnehmerlisten für REDAXO 5 auf YForm-Basis
Mit diesem Addon können Termine anhand von YForm und YOrm im Backend verwaltet und im Frontend ausgegeben werden. Auf Wunsch auch mehrsprachig.
Beispiele
- Vollständig mit YForm umgesetzt: Alle Features und Anpassungsmöglichkeiten von YForm verfügbar
- Einfach: Die Ausgabe erfolgt über
rex_sql
oder objektorientiert über YOrm - Flexibel: Zugriff über die YForm Rest-API
- Sinnvoll: Nur ausgewählte Rollen/Redakteure haben Zugriff
- Bereit für mehrsprachige Websites: Reiter für Sprachen auf Wunsch anzeigen oder ausblenden
- Bereit für mehr: Vorbereitet für das JSON+LD-Format, ICS-Format
- Bereit für viel mehr: Kompatibel zum URL2-Addon
- Mächtig: Datenbank-Struktur für Anmeldeformulare und einfache Teilnehmerlisten vorbereitet
Tipp: Events arbeitet hervorragend zusammen mit den Addons
yform_usability
undyform_geo_osm
Steuere eigene Verbesserungen dem GitHub-Repository von events bei. Oder unterstütze dieses Addon: Mit einer Spende oder Beauftragung unterstützt du die Weiterentwicklung dieses AddOns
Im REDAXO-Installer das Addon events
herunterladen und installieren. Anschließend erscheint ein neuer Menüpunkt Veranstaltungen
sichtbar.
Typ rex_yform_manager_dataset
. Greift auf die Tabelle rex_event_date
zu.
dump(event_date::get(3)); // Termin mit der id=3
Methode | Beschreibung |
---|---|
getName() |
Titel der Veranstaltung |
getDescription() |
Beschreibungstext |
getTeaser() |
Unformatierter Teaser-Text |
getCategory() |
holt die passende Kategorie als event_category -Dataset. |
getLocation() |
holt den passenden Veranstaltungsort als event_location -Dataset. |
getOfferAll() |
holt die passenden Angebote / Preise als event_offer -Dataset |
getImage() |
gibt den Bild-Dateinamen aus dem Medienpool zurück |
getMedia() |
gibt ein REDAXO-Medienobjekt des Bildes zurück |
getIcs() |
gibt eine ICS-Datei zur Veranstaltung zurück |
getDescriptionAsPlaintext() |
gibt die Veranstaltungsbeschreibung als Plaintext zurück |
getIcsStatus() |
gibt den Status zurück, wie er im ICS-Format erwartet wird. |
getUid() |
gibt eine UID zurück, wie sie im ICS-Format erwartet wird. Wenn es die UID noch nicht gibt, wird sie automatisch erzeugt. |
getJsonLd() |
gibt den JSON-LD-Code zur Veranstaltung zurück |
getStartDate() |
gibt ein DateTime-Objekt zurück mit dem korrekten Startdatum in Abhängigkeit von den gewählten Optionen (ganztägig) |
getEndDate() |
gibt ein DateTime-Objekt zurück mit dem korrekten Enddatum, sofern vorhanden, in Abhängigkeit von den gewählten Optionen (ganztägig) |
dump(event_date::get(3)->getCategory()); // Kategorie des Termins mit der id=3
Typ rex_yform_manager_dataset
. Greift auf die Tabelle rex_event_category
zu.
dump(event_category::get(3)); // Kategorie mit der id=3
Typ rex_yform_manager_dataset
. Greift auf die Tabelle rex_event_location_
zu.
dump(event_location::get(3)); // Location mit der id=3
Methode | Beschreibung |
---|---|
getAsString() |
holt die passende Adresse als string in der Form Straße, PLZ, Ort, Land |
getName() |
gibt den Namen der Location zurück |
getStreet() |
gibt die Straße der Location zurück |
getZip() |
gibt die Postleitzahl der Location zurück |
getLocality() |
gibt den Ortsnamen der Location zurück |
getCountrycode() |
gibt den Ländercode der Location zurück |
getLatLng() |
gibt die Geo-Koordinaten der Location in der Form 'lat,lang' zurück (noch nicht implementiert) |
getLat() |
gibt die Geo-Koordinate latitude der Location zurück. |
getLng() |
gibt die Geo-Koordinate longitude der Location zurück. |
dump(event_location::get(3)->getName()); // Name der Location mit der id=3
Die Tabelle "TERMINE" mit Flaggen-Symbol ist eine Tabelle, in der zunächst Sprachen verwaltet werden können und im Anschluss die eigentliche Termin-Tabelle gefiltert nach dieser Sprache angezeigt wird.
Wer keine mehrsprachigen Termine benötigt, kann diesen Menüpunkt problemlos für Redakteure über die Benutzer-Rollen ausblenden. Wichtig ist jedoch, dass mind. eine Sprache angelegt wurde.
In der Termin-Tabelle werden einzelne Daten festgehalten. Nach der Installation von events
stehen folgende Felder zur Verfügung:
Typ | Typname | Name | Bezeichnung |
---|---|---|---|
value | text | name | Name |
validate | empty | name | |
value | textarea | description | Beschreibung |
value | be_manager_relation | event_category_id | Kategorie |
value | be_manager_relation | location | Veranstaltungsort |
value | be_media | image | Bild |
value | text | url | URL |
value | datetime | startDate | Beginn |
validate | compare_value | startDate | |
value | time | doorTime | Einlass |
value | datetime | endDate | Ende |
value | select | eventStatus | Status |
value | text | offers_url | Tickets-URL |
value | text | offers_price | Preis |
validate | type | offers_price | |
value | select | offers_availability | Verfügbarkeit |
validate | type | url |
Die Felder und Feldnamen orientieren sich dabei am JSON+LD-Standard für Veranstaltungen, die wichtigsten Validierungen wurden bereits eingefügt.
Die Tabelle Kategorien kann frei verändert werden, um Termine zu gruppieren (bspw. Veranstaltungsreihen) oder zu Verschlagworten (als Tags).
Typ | Typname | Name | Bezeichnung |
---|---|---|---|
value | text | name | Titel |
validate | unique | name | |
validate | empty | name | |
value | be_media | image | Bildmotiv |
value | choice | status | Status |
value | be_manager_relation | date_id | Termine |
Die Tabelle Angebote enthält optional Ticket-URL und Preise für Veranstaltungen.
Typ | Typname | Name | Bezeichnung |
---|---|---|---|
value | text | name | Titel |
value | text | price | Preis |
value | choice | status | Verfügbarkeit |
value | be_manager_relation | date_id | Termin |
Die Tabelle Location enthält die passenden Veranstaltungsorte zu den Veranstaltungen. Sie wurde im Hinblick auf leichte Geocodierung erstellt, lässt sich aber beliebig um zusätzliche Informationen erweitern.
Typname | Name | Bezeichnung | Funktion |
---|---|---|---|
value | text | name | Name |
value | text | street | Straße, Hausnummer |
value | text | zip | PLZ |
value | text | locality | Stadt |
value | osm_geocode | lat_lng | Geoposition |
value | text | lat | Latitude |
value | text | lng | Lng |
Die Felder und Feldnamen orientieren sich dabei am JSON+LD-Standard für Veranstaltungen, die wichtigsten Validierungen wurden bereits eingefügt.
Nutze diese Action, wenn in einer Anmeldung sogleich Teilnehmende in einer Tabelle "Teilnehmende" erfolgen soll:
$yform->setActionField('event_date_registration_person_fill', array(""));
Dabei wird die Tabelle rex_event_date_registration_person
automatisch mit der Anzahl der anzumeldenden Teilnehmenden befüllt.
Die Rest-API ist über das REST-Plugin von YForm umgesetzt.
Zunächst das REST-Plugin von YForm installieren und einen Token einrichten. Den Token auf die jeweiligen Endpunkte legen:
/v2.0/event/date
/v2.0/event/category
/v2.0/event/location
Auslesen: GET example.org/rest/v2.0/event/date/?token=###TOKEN###
Auslesen einzelner Termin GET example.org/rest/v0.dev/event/date/7/?token=###TOKEN###
Termin der id=7
Auslesen: GET example.org/rest/v2.0/event/category/?token=###TOKEN###
Auslesen einzelne Kategorie GET example.org/rest/v0.dev/event/category/7/?token=###TOKEN###
Termin der id=7
Auslesen: GET example.org/rest/v2.0/event/location/?token=###TOKEN###
Auslesen einzelner Standort GET example.org/rest/v0.dev/event/location/7/?token=###TOKEN###
Termin der id=7
Events kommt mit einem eigenen Cronjob zum importieren von ics-Kalendern aus dem Internet. Das Cronjob-Addon aufrufen, einen neuen Cronjob anlegen und den Instruktionen folgen.
Events kommt mit einer eigenen rex_api-Schnittstelle für den Export von einzelnen Terminen. ?rex-api-call=events_ics_file&id=2
aufrufen, um eine ICS-Datei anhand des Termins mit der id=2
zu erzeugen.
Folgende SQL-Befehle (Quick & Dirty umgesetzt) dürften helfen bei der Übertragung der Daten:
INSERT INTO rex_event_date
SELECT
id AS id,
name_1 AS name,
teaser_1 AS teaser,
text_1 AS description,
lang_1 AS lang_id,
category AS event_category_id,
start_date AS startDate,
start_time AS startTime,
full_time AS all_day,
start_time AS doorTime,
end_time AS endTime,
venue AS location,
end_date AS endDate,
id as space,
image AS image_poster,
image AS images,
id as url,
id as video_url,
status AS eventStatus,
uid AS uid,
updateuser AS updateuser,
createuser AS createuser,
updatedate AS updatedate,
createdate AS createdate,
id AS startDateTime
FROM rex_sked_entries
INSERT INTO rex_event_category
SELECT
id as id,
id as prio,
name_1 as name,
color as icon,
name_1 as teaser,
description_1 as description,
status as images,
status as status,
updateuser AS updateuser,
createuser AS createuser
FROM rex_sked_categories
INSERT INTO rex_event_location
SELECT
id as id,
id as google_places,
id as location_category_id,
name_1 as name,
street as street,
zip as zip,
city as locality,
country as countrycode,
id as lat,
id as lng,
updateuser AS updateuser,
createuser AS createuser
FROM rex_sked_venues
update rex_event_date set space = 0, url = "", video_url = "", startDateTime = 0000-00-00;
update rex_event_category set images = "";
update rex_event_location set google_places = "", location_category_id = "", lat = "", lng = "";
MIT Lizenz, siehe LICENSE.md
Alexander Walther
http://www.alexplus.de
https://github.com/alexplusde
Michael Schuler https://github.com/191977
Projekt-Lead
Alexander Walther
events basiert auf: YForm
Danke an Gregor Harlan für die Unterstützung
Danke an den Kulturkeller e.V. für die Beauftragung für die Weiterentwicklung