Scripte für den Google Kalender. (Ehemals Termine eintragen)

Ich sehe jetzt in der Webfront die werte, z.b. Heute der 10, wenn ich in der Webfront jetzt auf die 10 Drücke um den Wert zu ändern passiert nichts, es ist nicht veränderbar in der Webfront sondern zeigt nur alles an

Gesendet von meinem iPad mit Tapatalk

Du musst den Datentyp andern in HTML oder so. Bin gerade bei der Mutti. Kann mir das heute Abend ansehen oder Du fragst die Jungs vom Webfront.

Schablone sein Handy.

Ok probier ich

Gesendet von meinem iPad mit Tapatalk

Geht nicht, sind alles Strings, die kann ich ja nicht in was anderes verändern

Gesendet von meinem iPad mit Tapatalk

Nein. Du musst das Variablen profil ändern!!!

Schablone sein Handy.

Hab ich gemacht, das eine in textbox und ein anderes in HTML zum ausprobieren, geht aber beides nicht, wenn ich drauftippe keine Reaktion oder sonst was, also keine Tastatur geht auf um was reinzuschreiben

Gesendet von meinem iPad mit Tapatalk

Moment mal mein Freund. :stuck_out_tongue:
Hast Du hinter den Variablen die
verändert werden sollen eine Aktion?

Ich habe hinter jeder Variablen die aus dem WebFront verändert werden soll das gleiche Script.


if ($_IPS['SENDER'] == "WebFront")
{
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}

Wie? Das kleine Skript muss ich hinter jede Variable setzten? Wie mache ich das?

Gesendet von meinem iPad mit Tapatalk

Hallo Martin,

was muss ich tun, wenn ich den Kalender für den folgenden Monat darstellen möchte?

Danke

@Frank66
Bei der Variablen gibt es unter „Eigenes Profil“ „Eigene Aktion“ da kommt das Script rein.

@jnicke

aktueller Monat:


// Event lesen
//==============

// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01";
$end_date = date("Y-m")."-".date('t');

// Eine neue Instanz der Kalender Klasse anlegen
$gdataCal = new Zend_Gdata_Calendar($client);

// Eine neue Suchanfrage
$query = $gdataCal->newEventQuery();


// Übergeben der Daten der Suchanfrage
$query->setUser($user);
$query->setVisibility('private-'.$magicCookie);
$query->setSingleEvents(true);
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortOrder('ascending');
$query->setMaxResults(30);
$query->setStartMin($start_date);
$query->setStartMax($end_date);

// Die Suchanfrage ausführen
$event_list = $gdataCal->getCalendarEventFeed($query);

foreach ($event_list as $event)
{
	// title
	$arrEvent_Titel_akt[]	=	$event->title;

	// Auslesen der Startzeit
	$Date_Time = $event->when[0]->startTime;

	// Zerlegen der Startzeit
	if(strpos($Date_Time, "T")>0)
	{
		$arrDate_Time 			= 	explode("T", $Date_Time);
		$arrEvent_Time_akt[] 		=  $arrDate_Time[0];
	}
	else
	{
	   $arrEvent_Time_akt[] 		=  $Date_Time;
	}

}

$month   =  date('n');
$year    =  date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt);
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);


nächster Monat:


// Event lesen
//==============

// Event ab dem aktuellem Datum
$start_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-01";
$end_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-".date('t');

// Eine neue Suchanfrage
$query = $gdataCal->newEventQuery();

// Übergeben der Daten der Suchanfrage
$query->setUser($user);
$query->setVisibility('private-'.$magicCookie);
$query->setSingleEvents(true);
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortOrder('ascending');
$query->setMaxResults(30);
$query->setStartMin($start_date);
$query->setStartMax($end_date);

// Die Suchanfrage ausführen
$event_list = $gdataCal->getCalendarEventFeed($query);

foreach ($event_list as $event)
{
	// title
	$arrEvent_Titel_naechste[]	=	$event->title;

	// Auslesen der Startzeit
	$Date_Time = $event->when[0]->startTime;

	// Zerlegen der Startzeit
	if(strpos($Date_Time, "T")>0)
	{
		$arrDate_Time 			= 	explode("T", $Date_Time);
		$arrEvent_Time_naechste[] 		=  $arrDate_Time[0];
	}
	else
	{
	   $arrEvent_Time_naechste[] 		=  $Date_Time;
	}

}

$month   =  date('n', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$year    =  date('Y', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$browser = calender_month($month, $year, $arrEvent_Time_naechste);
SetValue(CreateVariableByName($IPS_SELF, "Monatskal_naechster", 3, "~HTMLBox"), $browser);


Also hier noch mal das kompletter Script für den aktuellen und den nächsten Monat.


<?
/*=============================================
skrGoogleMonatskalender - Martin Heinzel - 29.11.2011
Version: 0.1

Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google Kalender
in Form eines Farbumschlag. Der aktuelle Tag wird an hand
eines gesonderten Farbumschlages dargestellt.

Änderungen
----------

tt.mm.yyyy von Version x.x -> x.x

Berschreibung:

================================================*/

// Variablen Deklaration --------------------------------------

// Variablen
//--------------
$user                             = 'schnucki@googlemail.com';
$pass                             = '12345';
$magicCookie                   = 'e4d7b12345678f6adf49fb151a38d5d31';
$arrEvent_Time_akt         = array();
$arrEvent_Titel_akt        = array();
$arrEvent_Time_naechste    = array();
$arrEvent_Titel_naechste   = array();
//-------------------------------------------------------------

//benötigte Funktionen/Klassen
//include("funkTTS_Play.php");
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

//--------------------------- Main ----------------------------

// Die Verbindung zum Kalender aufbauen
try
{
	$client = getClientLoginHttpClient($user, $pass);
}
catch(Exception $e)
{
	// prevent Google username and password from being displayed
	// if a problem occurs
	echo "Could not connect to calendar.";
	die();
}

// Event lesen
//==============

// Event ab dem aktuellem Datum
$start_date = date("Y-m")."-01";
$end_date = date("Y-m")."-".date('t');

// Eine neue Instanz der Kalender Klasse anlegen
$gdataCal = new Zend_Gdata_Calendar($client);

// Eine neue Suchanfrage
$query = $gdataCal->newEventQuery();


// Übergeben der Daten der Suchanfrage
$query->setUser($user);
$query->setVisibility('private-'.$magicCookie);
$query->setSingleEvents(true);
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortOrder('ascending');
$query->setMaxResults(30);
$query->setStartMin($start_date);
$query->setStartMax($end_date);

// Die Suchanfrage ausführen
$event_list = $gdataCal->getCalendarEventFeed($query);

foreach ($event_list as $event)
{
	// title
	$arrEvent_Titel_akt[]	=	$event->title;

	// Auslesen der Startzeit
	$Date_Time = $event->when[0]->startTime;

	// Zerlegen der Startzeit
	if(strpos($Date_Time, "T")>0)
	{
		$arrDate_Time 			= 	explode("T", $Date_Time);
		$arrEvent_Time_akt[] 		=  $arrDate_Time[0];
	}
	else
	{
	   $arrEvent_Time_akt[] 		=  $Date_Time;
	}

}

$month   =  date('n');
$year    =  date('Y');
$browser = calender_month($month, $year, $arrEvent_Time_akt);
SetValue(CreateVariableByName($IPS_SELF, "Monatskalender", 3, "~HTMLBox"), $browser);

// Event lesen
//==============

// Event ab dem aktuellem Datum
$start_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-01";
$end_date = date("Y-m", mktime(0, 0, 0, date("m")+1, 1, date("Y")))."-".date('t');

// Eine neue Suchanfrage
$query = $gdataCal->newEventQuery();

// Übergeben der Daten der Suchanfrage
$query->setUser($user);
$query->setVisibility('private-'.$magicCookie);
$query->setSingleEvents(true);
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortOrder('ascending');
$query->setMaxResults(30);
$query->setStartMin($start_date);
$query->setStartMax($end_date);

// Die Suchanfrage ausführen
$event_list = $gdataCal->getCalendarEventFeed($query);

foreach ($event_list as $event)
{
	// title
	$arrEvent_Titel_naechste[]	=	$event->title;

	// Auslesen der Startzeit
	$Date_Time = $event->when[0]->startTime;

	// Zerlegen der Startzeit
	if(strpos($Date_Time, "T")>0)
	{
		$arrDate_Time 			= 	explode("T", $Date_Time);
		$arrEvent_Time_naechste[] 		=  $arrDate_Time[0];
	}
	else
	{
	   $arrEvent_Time_naechste[] 		=  $Date_Time;
	}

}

$month   =  date('n', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$year    =  date('Y', mktime(0, 0, 0, date("m")+1, 1, date("Y")));
$browser = calender_month($month, $year, $arrEvent_Time_naechste);
SetValue(CreateVariableByName($IPS_SELF, "Monatskal_naechster", 3, "~HTMLBox"), $browser);

//------------------------- Main ENDE --------------------------

//------------------------ Funktionen -------------------------

/**
 * Returns a HTTP client object with the appropriate headers for communicating
 * with Google using the ClientLogin credentials supplied.
 *
 * @param  string $user The username, in e-mail address format, to authenticate
 * @param  string $pass The password for the user specified
 * @return Zend_Http_Client
 */
function getClientLoginHttpClient($user, $pass)
{
  $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;

  $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
  return $client;
}

function calender_month($month, $year, $arrEvent_Time)
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0

Beschreibung:
Mit diesem Skript wird ein Monatskalender erstellt.
Dieser Kalender enthält alle Termine aus dem Google
Kalender in  Form eines  Farbumschlag. Der aktuelle
Tag wird  an hand eines  gesonderten Farbumschlages
dargestellt.

Änderungen
----------

tt.mm.yyyy von Version x.x -> x.x

Berschreibung:

================================================*/

// Variablen Deklaration --------------------------------------

// Variablen
//--------------
$arr_Month = array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key          = $month -1;
$act_day     = date('j');
$act_month     = date('n');

//-------------------------------------------------------------

//--------------------------- Main ----------------------------

//Bitte anpassen
//------------------------------------------
//Hintergrundfarbe Monat
$Style_MonthHeader     = 'bgcolor="#C0C0C0"';

//Hintergrundfarbe der Kopfdaten -> Wochentage
$Style_DayHeader      = 'bgcolor="#808080"';

//Hintergrundfarbe des aktuellen Tages
$Style_Today           = 'bgcolor="#FF00FF"';

//Hintergrundfarbe der Termine
$Style_Appointment   = 'bgcolor="#800080"';

//Hintergrundfarbe gesamt
$Style_background       = 'background-color:#F6F6F6';
//------------------------------------------


//zusammenstellen des Kopfes
$DayHeader = '<th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mo</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Di</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Mi</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Do</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Fr</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">Sa</font></th>
              <th width="20" height="20" align="center" '.$Style_DayHeader.'><font color="#FFFFFF">So</font></th>';

//Aussehen der Zellen
$Style_DayCell     = 'width="20" height="20" align="center"';

//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
$Monatskalender ='<table border="1" summary="Kalender '.$arr_Month[$key].'">
<tr>
      <th colspan="7" '.$Style_MonthHeader.'>'.$arr_Month[$key].'</th>
</tr>
<tr>'.$DayHeader.'</tr>';

//wie viele Tage hat dieser Monat
$total_days = date('t', mktime(0, 0, 0, $month, 1, $year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w', mktime(0, 0, 0, $month, 1, $year)))-1;
//Das Ergebnis kann negativ sein. In diesem Fall ist der Tag "Sonntag"
if($day_offset < 0)
{
    $day_offset = 6;
}

//initialisieren des Tageszählers
$Day_Count = 1;

//ein Kalenderblatt (ein Monat) bekommt 6 Wochenreihen
for($week = 0; $week < 6; $week++)
{
    $Monatskalender .='<tr>';

    //eine Woche hat immer noch 7 Tage
    for($day = 0; $day < 7; $day++)
    {
        //Die Tage vor dem ersten müssen mit leeren Zellen aufgefüllt werden
        if($day_offset > 0)
        {
            $Monatskalender .='<td '.$Style_DayCell.'>*</td>';
         	$day_offset -= 1;
        }
        else
        {
            //ausfüllen der Tage mit Tageszahlen
            if($Day_Count <= $total_days)
            {
                //Der aktuelle Tag wird eingefärbt
                if($month == $act_month and $Day_Count == $act_day)
                {
                    $Monatskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
                }
                else
                {
     						//Tage mit einem Termin werden eingefärbt
     						$StartDay      =  $Day_Count;
							if(strlen($StartDay)< 2)		$StartDay      =  "0".$StartDay;

                     $StartMonth    =  $month;
							if(strlen($StartMonth)< 2)		$StartMonth    =  "0".$StartMonth;

							$Appointment   		=  False;
                     $Appointment_Time    =  $year."-".$StartMonth."-".$StartDay;

                     foreach ($arrEvent_Time as $Event_Time)
							{
								If($Event_Time == $Appointment_Time)   $Appointment   		=  True;
							}

                    if($Appointment)
                    {
                        $Monatskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
                    }
                    else
                    {
                        //alle anderen Tagen sind ohne färbung
                        $Monatskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
                    }
                }
                $Day_Count += 1;
            }
            else
            {
                //alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
                $Monatskalender .='<td '.$Style_DayCell.'>*</td>';
            }

        }
    }
    //Ende der Wochenreihe
    $Monatskalender .='</tr>';
}
//Ende des Monats
$Monatskalender .='</table>';

//nur noch was schickes drum herum
$browser='
<html>
<head>
<style type="text/css" media="screen">
body  { '.$Style_background.';
         font-family: Arial;
      }
</style>
</head>
<body scroll="no">'
.$Monatskalender.
'</body>
</html>';

//und ablegen
return $browser;
}

function CreateVariableByName($id, $name, $type, $profile = "")
{
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}

//--------------------- Funktionen ENDE ------------------------

?>


Ok werde ich so machen und berichte dann

Gesendet von meinem iPad mit Tapatalk

Hallo,
vielen Dank für deine Skripte!

Anfangs habe ich die OpenSSL Fehlermeldung im Log erhalten:

Erweiterung php_openssl.dll nicht geladen. Nicht nutzbar in Verbindung mit OpenSSL 1.0.1

Danach habe ich die php_openssl.dll, die libeay32.dll und die ssleay32.dll wie weiter vorne in diesem Thema gepostet ersetzt.

Jetzt stellt sich mir die Frage, ob das im Sinne des Erfinders ist.
Ich hatte im IP-Symcon Verzeichnis die Dateien libeay32.dll und ssleay32.dll in der Version 1.0.1.7.
Mit denen klappte es nicht.
Im geposteten Zip-Archiv waren diese Dateien in Version 0.9.8.18 enthalten.
Mit diesen funktioniert es nun.

Wäre es nicht besser, wenn man die Module updatet, welche nach wie vor die 0.9.8.18 benötigen, so dass 1.0.1.7 verwendet werden kann?
Wer ist für die veraltete Abhängigkeit verantwortlich?

Wie schon oft in diesem Forum erwähnt werden die Module über Live-Update geupdatet, Fremdwort Forensuche :eek:

Richtig und dann kommt die von mir beschriebene Fehlermeldung, bis man die veraltete Version wieder in das IP-Symcon Verzeichnis kopiert.
Hast du meinen Beitrag gelesen?

Bevor hier das Aschendorf Phänomen wieder zuschlägt gehe ich mal dazwischen. Ich schau mir das heute Abend noch mal an.

Schablone sein Handy.

OK, mein Fehler, da ist wohl aktuell wieder was schiefgelaufen. Die aktuelle Version lief kürzlich noch und ich bin davon ausgegangen, daß sie das noch tut. Habe aber gerade gesehen, dass bei mir das auch nicht geht. Pardon :o

@Brovning, @Powerfreddy

Nach Rücksprache mit paresy ist es immer noch so das die
php_openssl.dll nur mit der OpenSSL 0.9.8 funktioniert.

Sorry! :o

Ok, Danke!
Verstehe ich es richtig, dass von Seiten paresy etwas unternommen werden muss, damit die php_openssl.dll in einer neueren Version genutzt werden kann?
Das wäre sehr wichtig, dass man auf die aktuellste Version upgraden könnte, seitdem der OpenSSL Bug bekannt wurde… :eek:
(siehe OpenSSL-Thema hier im Forum)

Ich meine das mann die PHP-Version in IPS tauschen kann.
Ich habe das aber noch nicht gemacht.

Desweiteren weis ich nicht ob das, dass Problem löst.