InfoFrame: Digitaler Bilderrahmen (Anzeige von Anrufen, E-Mails, Termine, Wetter...)

nabend,

hab n kleines problem noch mit dem kalender.
habe einen ganztägigen geburtstagstermin testweise angelegt, aber jetzt werden 2 symbole dafür angezeigt. das original blaue, und dahinter die torte.
sollte die torte nicht das andere ersetzen?

bei einem sperrmüll-termin, den ich in einer anderen farbe gesetzt hab, steht aber in der datenbank genau die gleiche farbe wie vom geburtstag.
verstehe ich nicht

außerdem steht in der datenbank immer die farbe #2952A3 (dieses blau) egal welche farbe der termin in google eigentlich hat.
 
Zuletzt bearbeitet:
Ja, die Farbe hat glaube ich nichts mit dem selbst eingestellten Farbwert zu tun. Google vergibt scheinbar für jeden neuen Kalendar eine eigene Standardfarbe, die sich nie ändert, auch nicht, wenn man sich den in der Weboberfläche umfärbt. Diese Standardfarbe muss man einmalig in der Datenbank auslesen und dann kann man die verwenden um in PHP verschiedene Dinge zu tun. Z.B. das Symbol durch die Torten ersetzen. Schick mir mal die CalendarPlugin.php und die Farbe des Geburstagskalenders aus der Datenbank. Dann schaue ich mir mal den Code an.
 
die sich nie ändert, auch nicht, wenn man sich den in der Weboberfläche umfärbt. Diese Standardfarbe muss man einmalig in der Datenbank auslesen und dann kann man die verwenden um in PHP verschiedene Dinge zu tun. Z.B. das Symbol durch die Torten ersetzen
aber wie ist es dann möglich, das bgx, der diesen code geschrieben hat gleich 3-4 verschiedene events trennen kann. gelber-sack, blaue, restmüll... verstehe ich nicht.
ich habe von seite 1 bis 30 jeden beitrag gelesen, und von 100 rückwärts 20 oder so. habe gefunden, wo er seine screenshots postet, aber leider keine erklärung zu diesem problem gefunden. wahrscheinlich habe ich es wohl überlesen. ich kann doch nicht der einzige sein???
 
man kann ja auch den eventnamen etc. zum auswerten nutzen
 
ja sorry, mein fehler.
jetzt hab ich schonmal 2 verschiedene. 1mal torte und 1mal sperrmüllsymbol, aber trotzdem stimmt hier nochwas nicht.
mein sperrmülltonne steht irgendwie an einer etwas anderen position. und der geburtstagstermin ist teilweise verdeckt. man sieht den tag und das datum nicht.

dummerweise wird aber zusätzlich noch das blaue original icon angezeigt.
snip.jpg
 

Anhänge

  • sperrmuell.png
    sperrmuell.png
    1.9 KB · Aufrufe: 212
Zuletzt bearbeitet:
da fehlt nach jeder if abfrage die else klausel. so trifft if zu und der standard button wird trotzdem angezeigt
PHP:
// ------------------------------------------- Müllabfuhr----------------------------------------                   
                 if (($row['color']) == "#2952A3") {
                	if (strpos($row['title'], 'Blaue') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_blau.png' );
                	if (strpos($row['title'], 'Biotonne') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_gruen.png' ); 
                	if (strpos($row['title'], 'Gelber Sack') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/gelber_sack.png' ); 
                	if (strpos($row['title'], 'Restabfall') !== false)
                      $icon = ImageCreateFromPNG ( 'resources/icons/tonne_schwarz.png' );                                               
                	ImageCopy($image, $icon, $xoffset+30, $yoffset-5, 0, 0, imagesx($icon), imagesy($icon));
                	ImageDestroy($icon);
                }else{  
// ------------------------------------------- Geburtstag ----------------------------------------     
                
                if (($row['color']) == "#2952A3") {
                		$icon = ImageCreateFromPNG ( 'resources/icons/birth.png' );
                		ImageCopy($image, $icon, $xoffset+30, $yoffset, 0, 0, imagesx($icon), imagesy($icon));
                		ImageDestroy($icon);
                }else{                	
   
// ------------------------------------------- Namenstag ----------------------------------------     
                
                if (($row['color']) == "#711616") {
                		$icon = ImageCreateFromPNG ( 'resources/icons/name.png' );
                		ImageCopy($image, $icon, $xoffset+27, $yoffset+1, 0, 0, imagesx($icon), imagesy($icon));
                		ImageDestroy($icon);
                }else{ 
                	         	           	
// ------------------------------------------- Standard - Button ----------------------------------------                
                // determine button color
                $colorArray = htmlColorToRgb($row['color']);
                $color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
                // print appointment text and button                             
                drawGlassButton($image, $color, $xoffset+36, $yoffset+8);
                }
                } 
                }        
                imagettftextboxopt($image, 12, 0, $xoffset+50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
                $yoffset += 25; 
								$letzter_eintrag =  $currently_displayed_day;                        
          }
            roundboxtrans_bottom($image, $xleft, $xend, $yoffset, $yoffset_diff, $yoffset_abstand, $yoffset_end, $radius, $bottom_zeilen_hoehe);
        		mysqli_free_result($result); 
        		$yoffset += 20;          
        }
    }
nach müllabfuht und geburtstag fehlen bei dir die else switch, die erst nach dem stanard-button das script weiter laufen lassen. siehe mein beispiel... so müsste es klappen
mann könnte es auch mit einer elseif statt den ganzen else machen....
 
Zuletzt bearbeitet:
erledigt, siehe weiter unten
 
Zuletzt bearbeitet:
Du musst die else-klammern auch wieder schließen... vergleich doch mal meinen code mit deinen.
dein:
PHP:
// ------------------------------------------- Standard - Button ----------------------------------------                
                    // determine button color
                    $colorArray = htmlColorToRgb($row['color']);
                    $color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
                    // print appointment text and button                             
                    drawGlassButton($image, $color, $xoffset+30, $yoffset-2);
                }
                imagettftextboxopt($image, 12, 0, $xoffset+50, $yoffset-6, $style['textcolor'], $style['font'], $text, $opt_entry);
                $yoffset += 16; 
                                $letzter_eintrag =  $currently_displayed_day;
mein:
PHP:
// ------------------------------------------- Standard - Button ----------------------------------------                
                // determine button color
                $colorArray = htmlColorToRgb($row['color']);
                $color = ImageColorAllocate ($image, $colorArray[0], $colorArray[1], $colorArray[2]);
                // print appointment text and button                             
                drawGlassButton($image, $color, $xoffset+36, $yoffset+8);
                }
                } 
                }        
                imagettftextboxopt($image, 12, 0, $xoffset+50, $yoffset, $style['textcolor'], $style['font'], $text, $opt_entry);
                $yoffset += 25; 
                                $letzter_eintrag =  $currently_displayed_day;
da sind für die zwei else-statements, die eingefügt wurden, auch zwei klammern dazu gekommen...
 
ok das klappt jetzt, aber trotzdem hab ich noch 2 probleme.

bei mir steht in der db immer #2952a3 als farbe drin. dieser wert wird ja im plugin abgefragt. wenn farbe stimmt dann noch der eventname. wenn beides zutrifft, dann kommt das entsprechende symbol (müll oder bday). soweit so gut.

ABER wenn jetzt verschiedene events zutreffen, dann wird immer nur das symbol angezeigt welches im plugin zuerst geprüft wird. also die müllabfuhr.
dann kommt das entsprechende symbol. aber keins mehr für bday.
testweise habe ich im plugin mal die db-farbe verändert, und siehe da es werden jetzt die torten angezeigt. ist das ein bug?
vorgestern wurden bei mir ja die symbole doppelt noch gezeigt, also zusätzlich noch die standard-button.
da hatte ich aber 2 verschiedene events mit den entsprechenden symbolen dazu. ich finde nur den fehler nicht.

und mit übermorgen stimmt auch noch was nicht, siehe screenshotsnip.jpg

edit:
$dayname = strftime("%A, ".$formatDate, strtotime($begin_date));
//$dayname = datumDeutsch(strftime("%A, ".$formatDate, strtotime($begin_date)));

hab gefunden, das die aktive codezeile funktioniert (Friday, 25.10.2013) aber leider in english
die auskommentierte hingegen gibt mir im mom meine kaputte anzeige für übermorgen
 

Anhänge

  • CalendarPlugin.zip
    3.5 KB · Aufrufe: 21
Zuletzt bearbeitet:
Hast du in deinem Google Kalender auch verschiedene Farben für die verschiedenen events angelegt? Also zB grün für Mull, rot für Geburtstag und Gelb für Namenstag?
 
logisch, aber wie du sicher von chross gelesen hast liefert google nur irgendeine standardfarbe zurück, egal was man bei google selbst definiert.
so hab ich seinen post zumindest verstanden.
 
Zur Info:
Das von dir gepostete CalendarPlugin ist so geschrieben, dass es für jede Art von Eintrag einen anderen Google Kalender benutzt. Verschiedene Google Kalender können über die "Google Farben" (wie oben besprochen) unterschieden werden. Z.B: Ein Kalender für Müllabfuhr, einer für Geburtstage, einer für Namenstage, einer für den Rest.
Wenn du alle Einträge in EINEM Kalender stehen hast, funktioniert das sortieren über den Google Farbwert logischerweise nicht. Dann kann man nur noch nach Name des Eintrages aussieben.
Ich habe den relevanten Code im CalendarPlugin mal markiert:
info_calplugin.jpg

Das Problem, das du hast: Alle Farbwerte sind gleich, d.h. es wird im gleichen Kalender nach Sperrmüll, Geburtstag und Namenstag gesucht. Nun sind die IF <> ELSE Bedingungen aber so programmiert, dass entweder ein Eintrag im Kalender "Haushaltskalender" (rot) ODER "Geburtstagkalender" (grün) ODER "Namenstagkalender" (blau) zu finden ist. Der Code geht nicht davon aus, dass er nach Geburtstag und Sperrmuell in einem Kalender suchen soll.
Die erste Abfrage (rot unterstrichen und in roten Klammern) Fragt nach der Farbe des Kalenders: ist diese 2952A3 so guckt er, ob der Eintrag Sperrmuell usw. heißt. Wenn nicht, dann MACHT ER GAR NICHTS. Nur wenn die Farbe NICHT 2952A3 wäre, dann würde er die grüne Bedingung testen, die hier paradoxerweise auch 2952A3 lautet.

So kann der Code nicht funktionieren.

Sag einfach, wie dein Kalender strukturiert ist, dann bekommen wir das schon hin:

Wieviele verschiedene Kalender hast du, und für welchen Zweck?
Welche Farben werden in der Datenbank angezeigt?
Was für Icons sollen angezeigt werden?



Zu deinem Englisch-Problem:

Hast du in der index.php eine Zeile, die den Befehl setlocale beinhaltet?

Wenn nicht, füg mal folgenden Code ein, bei mir steht er an dieser Stelle:
Code:
// include path for zend framework
if ($sysconfig['zendfw_path'] != "") {
	set_include_path(get_include_path() . PATH_SEPARATOR . $sysconfig['zendfw_path']);
}

[COLOR="#FF0000"]// set locale for date/time formatting
$loc = setlocale(LC_ALL, 'de_DE.UTF8', 'de_DE', 'de', 'ge');[/COLOR]

// includes
require_once 'library/tools.php';
require_once 'library/dbconn.php';
require_once 'library/iplugin.php';
 
Zuletzt bearbeitet:
// set locale for date/time formatting
$loc = setlocale(LC_ALL, 'de_DE.UTF8', 'de_DE', 'de', 'ge');

steht genauso bei mir auch drin.

das mit den kalendern hab ich jetzt auch so verstanden und hab mir entsprechend noch einen für geburtstage und müll angelegt. das klappt jetzt auch soweit.
aber wenn ich einen termin in meinem standard-kalendar eintrage (der mit meinem namen) so haben die termine nicht den standardd-button, da dieser kalendar ja auch eine farbe besitzt.
 
Es könnte sein, dass dein Server keine Deutsche Sprache installiert hat. Ist das ein selbst aufgesetzter Server oder wo hostest du den Infoframe?
Das Problem ist, dass die sogenannte Locale auf verschiedenen Systemen anders heißt, daher ist auch eine ganze Liste hinter setlocale zu finden. "de_DE.UTF8", "de_DE", "de", "ge" stehen alle für Deutsch. Müsste man nochmals prüfen. Wenn du einen eigenen Server hast kannst du z.B. unter Linux die Liste mit folgendem Befehl anzeigen lassen:
locale -a

Eventuell erlaubt deine PHP Installation auch die Abfrage, dann in eine sprache.php folgendes einfügen und mit dem Browser ansurfen:
Code:
<?php system('locale -a') ?>
Bei mir wird dann beispielsweise im Browser folgendes angezeigt:
Code:
C
POSIX
de_DE
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
de_DE@euro
deutsch
en_US.utf8
german

Du kannst auch versuchen der Liste weitere "Abkürzungen" hinzuzufügen, z.B. 'deu_deu', 'de_DE@euro', 'deutsch', 'german'


Der Standardbutton sollte aber angezeigt werden, die Farbe darf nur nicht vorher schon im Code abgefragt werden.
Der Code fragt ja:
Hat der Kalender die Farbe 1
Wenn ja tue A
Wenn nein, frage hat Kalender die Farbe 2
Wenn ja tue B
Wenn nein, frage hat Kalender die Farbe 3
Wenn ja tue C
Wenn nein, mache Standardbutton

Und wenn die Farbe deines Standardkalenders nicht in der Abfrageliste vorkommt, dann wird immer der Standardbutton gebildet, es sei denn mit dem Code ist was nicht in Ordnung ;)
 
Zuletzt bearbeitet:
die Farbe darf nur nicht vorher schon im Code abgefragt werden.
bingo, sie stand im namenstag-kalendar. jetzt passts.

mein infoframe wird local auf meinem qnap-nas generiert. keine ahnung wo ich da suchen soll
 
Habe oben meine Antwort angepasst.
Erstelle eine php-Datei mit dem Inhalt
<?php system('locale -a') ?>
und besuche sie mit dem Browser, dann siehst du die installierten Locales.
 
C POSIX en_US.utf8

nix anderes, stell ich da auf dem server ein, innerhalb php oder woanders?
 
Ja genau.
Tja dann hast du die a-Karte gezogen. Entweder du installierst die deutsche Locale oder musst manuell aus dem Tagesstring die englischen Wochentage durch Deutsche ersetzen.

Zur Installation der deutsche Locale siehe:
http://wiki.qnap.com/wiki/Country_Locale
 
Hier ein Fix, fallst du keine Lust hast, die Sprache zu installieren. Der Code muss am Ende so aussehen:

$dayname = strftime("%A, ".$formatDate, strtotime($begin_date));
$englischetage=array("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");
$deutschetage=array("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");
$dayname=str_replace($englischetage,$deutschetage,$dayname);
//$dayname = datumDeutsch(strftime("%A, ".$formatDate, strtotime($begin_date)));
 

Statistik des Forums

Themen
246,158
Beiträge
2,247,073
Mitglieder
373,677
Neuestes Mitglied
MK34
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.