Hallo,
ich habe etwas mit den Kalenderwidgets herumgespielt und gesehen, dass bei der Nutzung des GoogleV3-Kalenders Icons mit Farbe aus dem Kalendereintrag übernommen werden.
Für den täglichen Betrieb nutze ich allerdings den CalDAV-Kalender aus meinem OwnCloud-Server - hier gehen die Icons aber nicht.
Ich habe mir jetzt mal die Finger am Code etwas schmutzig gemacht und nach etwas Suchen doch noch herausgefunden, dass das eigentliche Parsen der Icons in der calender.php stattfindet.
Soweit ich das sehen kann, übergibt die caldav.php einen JSON-String, der u.a. das "content"-Feld enthält; hierin ist der Inhalt des Kalendereintrages mit den gewünschten Angaben zu Icon und Farbe. Offensichtlich wird das aber - anders als beim GoogleV3-Kalender - nicht übernommen.
Kommando zurück: beim direkten Vergleich der zurückgegebenen JSON-Strings enthält der GoogleV3-String bereits die - korrekt belegten - Felder "icon" und "color"; der caldav-String enthält nur das vom Code per default vorgegebene "trans.png"-Icon:
GoogleV3:
CalDAV:
Ich verstehe allerdings nicht, wo im GoogleV3-Code aus dem Content-Feld das Icon und die Farbe extrahiert werden - soweit ich den Code zu verstehen geglaubt hatte, wäre das in der Schleife in calendar.php passiert:
Das funktioniert aber offensichtlich nicht...
Hat jemand einen Tip für mich, wo ich suchen kann / wo ich etwas ändern muss / wieso die Strings unterschiedlich geparst werden?
ich habe etwas mit den Kalenderwidgets herumgespielt und gesehen, dass bei der Nutzung des GoogleV3-Kalenders Icons mit Farbe aus dem Kalendereintrag übernommen werden.
Für den täglichen Betrieb nutze ich allerdings den CalDAV-Kalender aus meinem OwnCloud-Server - hier gehen die Icons aber nicht.
Ich habe mir jetzt mal die Finger am Code etwas schmutzig gemacht und nach etwas Suchen doch noch herausgefunden, dass das eigentliche Parsen der Icons in der calender.php stattfindet.
Soweit ich das sehen kann, übergibt die caldav.php einen JSON-String, der u.a. das "content"-Feld enthält; hierin ist der Inhalt des Kalendereintrages mit den gewünschten Angaben zu Icon und Farbe. Offensichtlich wird das aber - anders als beim GoogleV3-Kalender - nicht übernommen.
Kommando zurück: beim direkten Vergleich der zurückgegebenen JSON-Strings enthält der GoogleV3-String bereits die - korrekt belegten - Felder "icon" und "color"; der caldav-String enthält nur das vom Code per default vorgegebene "trans.png"-Icon:
GoogleV3:
Code:
[{"pos":1,"start":"15-06-22 06:00:00","end":"15-06-22 06:15:00","title":"Gelbe Tonne","content":"@icon icons\/ws\/message_garbage.png\n@color #666600","where":"","color":"#666600","link":"https:\/\/www.google.com\/calendar\/event?eid=...","starttime":"06:00","endtime":"06:15","period":"22.06.15 06:00 - 06:15","weekday":"Montag","icon":"icons\/ws\/message_garbage.png"}]
Code:
[{"start":"15-06-22 06:00:00","end":"15-06-22 06:15:00","title":"Restm\u00fcll","content":"@icon icons\/ws\/message_garbage.png\\n@color #555555","where":"","link":"","pos":1,"starttime":"06:00","endtime":"06:15","period":"22.06.15 06:00 - 06:15","weekday":"Montag","icon":"pages\/base\/pics\/trans.png"}]
Ich verstehe allerdings nicht, wo im GoogleV3-Code aus dem Content-Feld das Icon und die Farbe extrahiert werden - soweit ich den Code zu verstehen geglaubt hatte, wäre das in der Schleife in calendar.php passiert:
PHP-Code:
...
preg_match_all('#@(.+?)\W+(.*)#i', $this->data[$id]['content'], $tags);
foreach ($tags[0] as $nr => $hit)
{
$tag = trim($tags[1][$nr]);
if ($tag == 'icon')
{
if (is_file(const_path.$tags[2][$nr]))
$this->data[$id][$tag] = $tags[2][$nr];
}
elseif ($tag == 'color')
$this->data[$id][$tag] = '#'.trim($tags[2][$nr]);
}
...
Hat jemand einen Tip für mich, wo ich suchen kann / wo ich etwas ändern muss / wieso die Strings unterschiedlich geparst werden?