Ah Ok, das heißt das wird dann in der calendar.html bearbeitet.
Danke dir.
Ah Ok, das heißt das wird dann in der calendar.html bearbeitet.
Danke dir.
Leider nicht. Ich hoffe, dass ich nicht wieder etwas unbemerkt verstellt habe, aber bei anderen Modulen bekomme ich das noch angezeigt. ![]()
Sorry, der Fehler lag auf meiner Seite. Jetzt sollte es gehen. ![]()
Ja, hat geklappt und die Fehlermeldungen sind verschwunden.
Prima!
Kann ich mir die Daten aus einem Kalender in einzelne Variablen schreiben lassen?
Termine Heute
Termine Morgen
Termine Übermorgen
VG
Stefan
Da müsstest du selber Hand anlegen und die Termine nach deinen Vorstellungen verteilen. GetCachedCalendar() liefert dir alle Termine in einem Array.
Schau mal hier:
Das passt sehr gut hier rein. Das Script kannst du etwas anpassen und die Passenden Variablen erstellen. Dann bekommst du was du suchst. Ich habe es auch probiert und bin sehr zufrieden.
Danke dir für das Skript bzw. den Tipp.
Habe hier mal noch ein Skript bauen lassen. Alle Farben etc. anpassbar. Ähnelt an das ToDo-Liste Modul von da8ter. Vielleicht kanns jemand brauchen.
<?php
//***********************************************************************************************************************
// 1. Objekt-Einstellungen
$KalenderId = 28575; // iCal Reader Instanz
$UrlaubId = 57046; // Boolean Variable für Urlaubstage
$TerminId_Heute = 16507; // String Variable für Termine Heute
$TerminId_Morgen = 11553; // String Variable für Termine Morgen
$TerminId_Uebermorgen = 10108; // String Variable für Termine Übermorgen
$TerminId_Gesamt = 50965; // String Variable mit Profil ~HTMLBox (Diese verlinken für die Visualisierung)
//***********************************************************************************************************************
// 2. DESIGN-EINSTELLUNGEN
// --- Schriftgrößen ---
$size_box_label = "0.65rem";
$size_box_number = "1.6rem";
$size_list_title = "0.65rem";
$size_list_content = "0.85rem";
// --- Farben obere Boxen ---
$color_box1_border = "rgba(211,105,30,0.5)";
$color_box1_text = "#d3691e";
$color_box2_border = "rgba(52,152,219,0.5)";
$color_box2_text = "#3498db";
$color_box3_border = "rgba(46,204,113,0.5)";
$color_box3_text = "#2ecc71";
// --- Rahmen obere Boxen ---
$box1_border_width = "2px";
$box1_border_style = "solid";
$box2_border_width = "2px";
$box2_border_style = "solid";
$box3_border_width = "2px";
$box3_border_style = "solid";
//***********************************************************************************************************************
// GLOW EINSTELLUNGEN (NUR EINE Variante aktivieren!)
// STANDARD – Glow wenn Termine > 0 (AKTIV)
// $enable_glow_effect = true;
// VARIANTE 1 – Glow immer aktiv
$enable_glow_always = true;
// VARIANTE 2 – Glow erst ab bestimmter Anzahl
// $glow_min_count = 3;
// VARIANTE 3 – Dynamischer Glow (mehr Termine = stärker)
// $enable_dynamic_glow = true;
// VARIANTE 4 – Farbiger Glow nach Anzahl
// $enable_color_glow = true;
//***********************************************************************************************************************
// LISTEN DESIGN
$color_list_border = "rgba(255,255,255,0.1)";
$list_border_width = "1px";
$color_list_label = "#777777";
$color_list_bg = "rgba(255,255,255,0.03)";
// --- Allgemeines ---
$color_bg_card = "rgba(45,45,48,1)";
$color_count_zero = "rgba(150,150,150,0.4)";
$border_radius = "10px";
$spacing_gap = "12px";
//***********************************************************************************************************************
// KALENDER LADEN
ICCR_UpdateCalendar($KalenderId);
$calendar_array = json_decode(ICCR_GetCachedCalendar($KalenderId), true);
SetValue($UrlaubId, false);
$ts_heute = mktime(0,0,0,date("n"),date("j"),date("Y"));
$ts_morgen = strtotime("+1 day",$ts_heute);
$ts_uebermorgen = strtotime("+2 days",$ts_heute);
$ts_ende = strtotime("+3 days",$ts_heute);
$text1=""; $text2=""; $text3="";
$count_1=0; $count_2=0; $count_3=0;
if (is_array($calendar_array)) {
foreach ($calendar_array as $entry) {
if ($entry["Status"]=='CANCELLED') continue;
$start=$entry["From"];
$ende_t=$entry["To"];
$zeit=date('H:i',$start)." Uhr ";
if (($start >= $ts_heute && $start < $ts_morgen) || ($start < $ts_heute && $ende_t > $ts_heute)) {
$text1.="• ".($entry["allDay"]?"":$zeit).$entry["Name"]."<br>";
$count_1++;
if (strpos($entry["Name"],"Urlaub")!==false) SetValue($UrlaubId,true);
}
elseif (($start >= $ts_morgen && $start < $ts_uebermorgen) || ($start < $ts_morgen && $ende_t > $ts_morgen)) {
$text2.="• ".($entry["allDay"]?"":$zeit).$entry["Name"]."<br>";
$count_2++;
}
elseif (($start >= $ts_uebermorgen && $start < $ts_ende) || ($start < $ts_uebermorgen && $ende_t > $ts_uebermorgen)) {
$text3.="• ".($entry["allDay"]?"":$zeit).$entry["Name"]."<br>";
$count_3++;
}
}
}
//***********************************************************************************************************************
// OBERE BOXEN
function generateTopBox(
$title,
$count,
$borderColor,
$borderWidth,
$borderStyle,
$textColor,
$zeroColor,
$bgColor,
$radius,
$sizeLabel,
$sizeNumber
){
global $enable_glow_effect;
global $enable_glow_always;
global $glow_min_count;
global $enable_dynamic_glow;
global $enable_color_glow;
$displayColor = ($count==0) ? $zeroColor : $textColor;
//*******************************************************************************************************************
// GLOW LOGIK
$glow="";
// STANDARD
if (isset($enable_glow_effect) && $enable_glow_effect && $count>0) {
$glow="box-shadow:0 0 10px $borderColor;";
}
// VARIANTE 1
if (isset($enable_glow_always) && $enable_glow_always) {
$glow="box-shadow:0 0 10px $borderColor;";
}
// VARIANTE 2
if (isset($glow_min_count) && $count >= $glow_min_count) {
$glow="box-shadow:0 0 12px $borderColor;";
}
// VARIANTE 3
if (isset($enable_dynamic_glow) && $enable_dynamic_glow && $count>0) {
$strength=min(20,5+($count*2));
$glow="box-shadow:0 0 {$strength}px $borderColor;";
}
// VARIANTE 4
if (isset($enable_color_glow) && $enable_color_glow && $count>0) {
if ($count<=2) $glowColor="#2ecc71";
elseif ($count<=5) $glowColor="#f39c12";
else $glowColor="#e74c3c";
$glow="box-shadow:0 0 12px $glowColor;";
}
//*******************************************************************************************************************
return "<div style='
flex:1;
border:$borderWidth $borderStyle $borderColor;
border-radius:$radius;
padding:10px 2px;
text-align:center;
background:$bgColor;
$glow'>
<div style='font-size:$sizeLabel;color:$textColor;font-weight:bold;margin-bottom:4px;text-transform:uppercase;'>
$title
</div>
<div style='font-size:$sizeNumber;color:$displayColor;font-weight:bold;line-height:1;'>
$count
</div>
</div>";
}
//***********************************************************************************************************************
// LISTEN
$generateListBox=function($label,$content) use(
$color_list_border,
$list_border_width,
$color_list_label,
$color_list_bg,
$border_radius,
$size_list_title,
$size_list_content
){
$clean=trim($content);
$final=(empty($clean))?"Keine Termine":$clean;
return "<div style='border:$list_border_width solid $color_list_border;border-radius:$border_radius;padding:10px;background:$color_list_bg;'>
<div style='font-size:$size_list_title;color:$color_list_label;font-weight:bold;text-transform:uppercase;margin-bottom:6px;'>$label</div>
<div style='font-size:$size_list_content;line-height:1.4;'>$final</div>
</div>";
};
//***********************************************************************************************************************
// HTML
$html="<div style='font-family:sans-serif;color:white;padding:2px;'>";
$html.="<div style='display:flex;gap:8px;margin-bottom:15px;'>";
$html.=generateTopBox("Heute",$count_1,$color_box1_border,$box1_border_width,$box1_border_style,$color_box1_text,$color_count_zero,$color_bg_card,$border_radius,$size_box_label,$size_box_number);
$html.=generateTopBox("Morgen",$count_2,$color_box2_border,$box2_border_width,$box2_border_style,$color_box2_text,$color_count_zero,$color_bg_card,$border_radius,$size_box_label,$size_box_number);
$html.=generateTopBox("Übermorgen",$count_3,$color_box3_border,$box3_border_width,$box3_border_style,$color_box3_text,$color_count_zero,$color_bg_card,$border_radius,$size_box_label,$size_box_number);
$html.="</div>";
$html.="<div style='display:flex;flex-direction:column;gap:$spacing_gap;'>";
$html.=$generateListBox("Termine Heute",$text1);
$html.=$generateListBox("Termine Morgen",$text2);
$html.=$generateListBox("Termine Übermorgen",$text3);
$html.="</div></div>";
SetValueString($TerminId_Gesamt,$html);