Integration Fullcalendar ?
Hallo Community,
ich habe darüber nachgedacht, das jQuery Fullcalendar Plugin in calendar_extended zu integrieren.
Es gibt zwar schon eine Erweiterung, die die Nutzung des Plugins in Contao erleichtert, aber das reicht mir so nicht.
Vorgestellt habe ich mir folgendes:
- ein FE Modul, über das der Fullcalendar konfiguriert wird.
- verschieben von Events
- bearbeiten von Events (möglicherweise nicht alle Felder)
- erstellen von Events (möglicherweise nicht alle Felder, Nachbearbeitung im BE?)
Aber ich muss mir noch Gedanken machen, wie ich da vernünftig mit den Wiederholungen umgehe, wie sie calendar_extended bietet.
Was haltet ihr davon?
Danke
Gruß Kester
Integration Fullcalendar ?
Hallo an alle,
ich habe eine erste Version, die ihr euch zu Testzwecken mal ansehen könnt. Ich würde mich über Feedback freuen.
Die Version liegt im Github unter: https://github.com/kmielke/calendar_extended, ist aber noch nicht final.
Was geht:
- Fullcalendar Module anlegen
- aktuell können nur Events ohne Wiederholungen bearbeitet werden
- Templates für Contao und Google Calendar. Für Google Calendar bitte der Fullcalendar Doku folgen
Die Bearbeitung sieht aktuell so aus, dass Events ohne Wiederholungen im Fullcalendar verschoben und verkleinert, bzw. vergrößert werden können. Das ganze als angemeldeter FE User.
Für eine evtl. manuelle Installation fehlender Komponenten bitte einfach in die composer.json schauen.
Bin mal gespannt. ;)
Gruß Kester
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Kester!
also ich bin noch nicht so firm mit der Entwicklung. :rolleyes: Ich habe versucht, calendar_extended jetzt über die Paketverwaltung unter Contao 3.5.19 zu installieren und dort die (ich nehme an) soeben eingecheckte 3.5.x-dev von heute 14:39 Uhr. Das gelingt mir so nicht. Der Composer der Paketverwaltung sagt, es gibt Fehler. Das Modul kann so nicht installiert werden.
Ich hoffe, es ist nicht unhöflich, diese Anfängerfrage zu stellen: Wie kann ich das Paket noch installieren? Einfach kopieren??
Ich nehme erstmal an, es ist mein Fehler und nichts im Paket.
Grüße vom
Theo
Composer sagt:
Anhang 18596
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo in die Runde,
ich habe jetzt nochmal nach einer Lösung für die Farben gesucht. Das Ergebnis sieht bei mir so aus:
Anhang 18657
Dabei sind mir noch diese Dinge aufgefallen:
1. Die fullcalendar-initialisierung enthält (unter anderem) noch nicht die beiden Optionen
Code:
slotLabelFormat: 'HH:mm',
timeFormat: 'HH:mm',
weil die noch fehlen, wird die Uhrzeit der Veranstaltungen (für den deutschen Sprachraum) etwas ungewöhnlich ausgegeben...
2. Irgendetwas stimmt noch nicht mit dem css vom fullcalendar. Auf den produktiven Sites, wo ich Martin Koziankas fullcalendar - und auch dort, wo ich den fullcalendar 3.0.1 auf dem Raspi ohne Contao verwende, überlappen die Termine nicht. Wie man im Screenshot sieht, verdecken sie sich dabei gegenseitig, wenn sie lange Titel haben...
3. Zu Testzwecken habe ich mal die eventSources auf einen Request pro Kalender umgestellt und meine Klasse zur Erzeugung der Feiertage einfach in classes\EventsExt implementiert. Das klappt auf Anhieb. Die Feiertage werden korrekt angezeigt (siehe screenshot). Dazu generiere ich ein zusätzliches Array ($arrSources[]) für das Template und ersetze damit im Template cal_fc_default.html5 folgendes
PHP-Code:
// Fullcalendar events
eventSources: [<?php foreach($this->eventSources as $eventSource) { echo $eventSource; } ?>],
das geht bestimmt noch eleganter mit implode()...
im ModuleFullcalendar.php Z.114ff. habe ich folgendes ergänzt
PHP-Code:
// Get the background and foreground colors of the calendars
foreach (array_merge($this->cal_calendar, $this->cal_holiday) as $cal) {
$objBG = $this->Database->prepare("select title, bg_color, fg_color from tl_calendar where id = ?")->limit(1)->execute($cal);
$this->calConf[$cal]['calendar'] = $objBG->title;
if ($objBG->bg_color) {
list($cssColor, $cssOpacity) = deserialize($objBG->bg_color);
if (!empty($cssColor)) {
$this->calConf[$cal]['background'] .= 'background-color:#' . $cssColor . ';';
$bgColor = $cssColor; # <- hier
}
if (!empty($cssOpacity)) {
$this->calConf[$cal]['background'] .= 'opacity:' . ($cssOpacity / 100) . ';';
}
}
if ($objBG->fg_color) {
list($cssColor, $cssOpacity) = deserialize($objBG->fg_color);
if (!empty($cssColor)) {
$this->calConf[$cal]['foreground'] .= 'color:#' . $cssColor . ';';
$fgColor = $cssColor; # <- hier
}
if (!empty($cssOpacity)) {
$this->calConf[$cal]['foreground'] .= 'opacity:' . ($cssOpacity / 100) . ';';
}
}
# ab hier
$rt = REQUEST_TOKEN;
$this->arrEventSources[] = "{
url: 'veranstaltungskalender.html',
type: 'POST',
data: {
type:'fetchEvents',
REQUEST_TOKEN: '$rt',
calID: '{$cal}', // <- hier
},
color: '#$bgColor',
textColor: '#$fgColor'
},";
}
dabei dem Request noch die calendarID $cal (meine {} sind hier überflüssig...) und die beiden Farben hinzugefügt (opacity habe ich übergangen, soll nur Testcode sein...). So wird jeder im Modul aktivierte Kalender als eigene eventSource behandelt. Somit kann man die Farben auf der Basis der Sources verwenden...
Schöne Feiertage!
Theo