Zitat von smai
Beitrag anzeigen
Da der Google V3 Treiber bei mir mittlerweile auch nicht mehr funktioniert, da einige Zeit inaktiv, habe ich umgestellt auf iCal und das Farb-Thema anders gelöst.
Ich habe für den iCal-Treiber einen Kompromiss gefunden, indem ich den Treiber um die Farbzuordnung erweitert habe, der zugehörige Wert kommt aus dem Event-Feld URL, das ich vor dem Import in den Google-Kalender für die jeweiligen Event-Arten manuell unterschiedliche befülle. Da das nur einmal jährlich passiert, ist das vom Aufwand kein Problem.
Da ich mir bei der AWG Rems Murr einen individuellen Abfallkalender erzeugen lassen kann, exportiere ich je Terminart getrennt, bereite das Feld URL entsprechend mit Suchen und Ersetzen auf und importiere dann in Google.
Die Schritte sind daher:
1.) Export der jeweiligen Terminarten, also je Art eine Datei (1=Restmüll,2=Bio,3=Papier,4=Gelb,5=Grüngut,6=Chri stbaum) als .ics-Datei
2.) Ersetzen des URL-Feldes durch die jeweilige Terminart: URL:1 ist somit Restmüll, URL:2 ist Bio usw. in der .ics-Datei vor dem Import
Code:
BEGIN:VCALENDAR PRODID:http://www.athos.com/calendarwebapplication/ VERSION:2.0 METHOD:PUBLISH CHARSET:UTF-8 BEGIN:VEVENT DTSTART;VALUE=DATE:20160114 DTEND;VALUE=DATE:20160115 LOCATION;LANGUAGE=de:SCHLEHENWEG 2, 71397 LEUTENBACH TRANSP:TRANSPARENT SEQUENCE:0 UID: 644981 DTSTAMP:20161113T000223Z DESCRIPTION;LANGUAGE=de: SUMMARY;LANGUAGE=de:Restmülltonne PRIORITY:9 CLASS:PUBLIC [COLOR=#FF0000][B]URL:1[/B][/COLOR] STATUS:CONFIRMED END:VEVENT
3.) Import der Dateien in einen eigenen Google "Müllkalender", dessen URL dann für diesen Zweck verwendet werden kann.
4.) Austausch/Erweiterung der Datei "iCal_(e.g._Google).php":
Die Farbzuordnung erfolgt statisch zur Terminart, entsprechend können bei Bedarf die Farben einfach ausgetauscht werden.
Code:
<?php
/**
* -----------------------------------------------------------------------------
* @package smartVISU
* @author Martin Gleiß
* @copyright 2012 - 2015
* @license GPL [http://www.gnu.de]
* -----------------------------------------------------------------------------
*/
require_once '../../../lib/includes.php';
require_once const_path_system.'calendar/calendar.php';
require_once const_path_system.'calendar/ICal/ICal.php';
require_once const_path_system.'calendar/ICal/EventObject.php';
use ICal\ICal;
/**
* This class reads a google calendar
*/
class calendar_google extends calendar
{
[COLOR=#FF0000][B]/* Add Colors per event type */
protected $EventTypeColor = array(
1 => '#000000', // Restmüll
2 => '#663300', // Bio
3 => '#0033cc', // Papier
4 => '#ffff00', // Gelbe Tonne
5 => '#00b33c', // Grüngut
6 => '#33cc33' // Christbaum
);[/B][/COLOR]
/**
* initialization of some parameters
*/
public function init($request)
{
parent::init($request);
//$this->url = preg_replace('#/basic(\.ics)?$#', "/full.ics?maxResults=".(int)$request['count']."&timeMin=2016-07-03T00:00:00Z&singleEvents=true&orderBy=startTime&sortOrder=a", $this->url);
}
public function run()
{
$ics = new ICal($this->url);
$events = $ics->eventsFromRange("today",false);
$events = array_slice($events, 0, $this->count);
// output events as list
$i = 1;
foreach ($events as $event) {
$this->data[] = array('pos' => $i++,
'start' => date('y-m-d H:i:s', $ics->iCalDateToUnixTimestamp($event->dtstart)),
'end' => date('y-m-d H:i:s', $ics->iCalDateToUnixTimestamp($event->dtend)),
'title' => $event->summary,
'content' => str_replace("\\n", "\n", $event->description),
'where' => $event->location,
[COLOR=#FF0000][B]// Assign color based on URL property of the event (not the .ics URL but of the event creator)
// Requires a pre-processing of the .ics file before importing it to google calendar
'color' => $this->EventTypeColor[$event->url],
//[/B][/COLOR]
//,'link' => ''
);
}
}
}
// -----------------------------------------------------------------------------
// call the service
// -----------------------------------------------------------------------------
$service = new calendar_google(array_merge($_GET, $_POST));
echo $service->json();
?>
iCalExample2.jpg
Termine ohne angepassten URL-Feldinhalt werden entsprechend mit der Hintergrundfarbe dargestellt (z.B. manuell angelegter Testtermin).


Einen Kommentar schreiben: