Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Dashboard

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #191 (permalink)  
Alt 21.05.10, 17:53
Benutzerbild von Ferengi-Master
Großer Nagus
 
Registriert seit: Feb 2007
Ort: Zwickau
Beiträge: 3,960
Standard

Ideen sind immer gern gesehen, mal schauen was sich machen lässt.
__________________
MfG Thomas

Hardware im Einsatz: Eaton Xcomfort | Enocean | FS20 | 1-Wire | ALL2282+Axis WebCam | AVM Fritz! Repeater | WMRS200 Wetterstation | IPS-Funksystem-868 | Visu auf: 10"Touchscreen | Apple iPod Touch 2G | Apple iPod Touch 4G | Apple IPhone 4s | Software: IPS V2.5 | IPS Server mit Windows 7 Prof 32bit und Mediaportal 1.2.1 | diverse IPS Clients mit Dashboard | WebFront | iFront

*** Citius, altius, fortius ***
Mit Zitat antworten
  #192 (permalink)  
Alt 23.05.10, 17:17
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard Export termine.txt

Hallo alle zusammen,

wie versprochen als erstes der Export von der termine.txt in iCalender.

PHP-Code:
function export_sunbird()
{
/*=============================================
export_sunbird - Martin Heinzel - 18.03.2010
Version: 2.1

Beschreibung:
In diesem Skript werden die Termine von der Ferengi-Master Terminverwaltung
in eine Sunbird Import-Datei konvertiert.

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

17.05.2010 von Version 1.0 -> 2.0

Berschreibung:

Angepasst auf Ferengi-Master Terminverwaltung V 2.40b

27.05.2010 von Version 2.0 -> 2.1

Berschreibung:

FIX: Termin-Ende -> Monatsangabe hatte drei Nullen


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

Berschreibung:

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

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

//Bitte anpassen
//------------------------------------------
//Angabe der Location
$term_location "Bocholt";
//Ablageort für termine.txt Ferengi Master
$file_ferengi IPS_GetKernelDir()."media\\termine.txt";
//Ablageort für kalender.ics Sunbird
$file_sunbird IPS_GetKernelDir()."media\\kalender.ics";
//------------------------------------------

// ID's
//---------

$id_TV IPS_GetObjectIDByName(".Terminverwaltung"0);
// ID Handshake-Variable
$id_file_time_sunbird = @IPS_GetVariableIDByName("file_time_sunbird"$id_TV);
// wenn es die Variable noch nicht gibt -> anlegen in .Terminverwaltung
if($id_file_time_sunbird === false)
{
    
$id_file_time_sunbird IPS_CreateVariable(1);
   
IPS_SetName($id_file_time_sunbird"file_time_sunbird");
    
IPS_SetParent($id_file_time_sunbird$id_TV);
}
$id_term_art_text IPS_GetVariableIDByName("term_art_text"$id_TV);

// Variablen
//--------------

//String für kompletten Sunbird Datensatz
$Sunbird_DS_komplett "BEGIN:VCALENDAR"."\r\n"."\r\n";

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

//--------------------------- Main ----------------------------
//Daten holen
//Terminarten holen
$term_art_text GetValueString($id_term_art_text);
//Terminart zerlegen und in array
$term_art_arr explode("|"$term_art_text);
//Termine in Variable einlesen
$termfile file_get_contents($file_ferengi);
//nach Zeilenumbruch trennen und in array
$term_arr_komplett explode("\r\n"$termfile);

//alle Termine durchlaufen
foreach($term_arr_komplett as $key => $value)
{
    
//Der erste Datensatz ist "1"
   
if($key 0)
    {

        
//einzelnen Datensatz in Daten zerlegen
       
$term_arr explode(","$value);

        
//Daten den Variablen zuweisen
       
$term_zeitstempel    $term_arr[0];
       
$term_einmalig         $term_arr[1];
       
$term_jaerlich         $term_arr[2];
       
$term_mo               $term_arr[3];
       
$term_di               $term_arr[4];
       
$term_mi               $term_arr[5];
       
$term_do               $term_arr[6];
       
$term_fr               $term_arr[7];
       
$term_sa               $term_arr[8];
       
$term_so               $term_arr[9];
       
$term_aktiv            $term_arr[10];
          
$term_stunde             $term_arr[11];
      
$term_minute             $term_arr[12];
          
$term_tag                 $term_arr[13];
      
$term_monat              $term_arr[14];
       
$term_loe              $term_arr[16];
         
$term_14tag_ger         $term_arr[19];
         
$term_14tag_ung         $term_arr[20];
         
$term_erin                 $term_arr[21];
         
$term_anzei                 $term_arr[22];
         
$term_art                 $term_arr[23];
         
$term_monatlich       $term_arr[24];
       
$term_inhalt           $term_arr[25];
         
$term_trigger          $term_arr[26];
          
$term_trigger_para      $term_arr[27];

        
//Daten für Sunbird zusammenstellen

        //In der Kalenderdatei dürfen keine Umlaute existieren
       
$term_inhalt             str_replace("Ä""Ae"$term_inhalt);
       
$term_inhalt             str_replace("ä""ae"$term_inhalt);
       
$term_inhalt             str_replace("Ü""Ue"$term_inhalt);
       
$term_inhalt             str_replace("ü""ue"$term_inhalt);
       
$term_inhalt             str_replace("Ö""Oe"$term_inhalt);
       
$term_inhalt             str_replace("ö""oe"$term_inhalt);

        if(
$term_aktiv)
        {

           
//Anlegen des Events
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."BEGIN:VEVENT"."\r\n";
           
//Titel
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."SUMMARY:".$term_inhalt."\r\n";
           
//Kategorie
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."CATEGORIES:".$term_art_arr[$term_art]."\r\n";

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

            //Einmalige Termine
            
if($term_einmalig)
            {

               
//Startzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTSTART;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."00"."\r\n";
               
//Endzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTEND;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."59"."\r\n";

            }

            
//Monatliche Termine
            
if($term_monatlich)
            {

                
//Berechnung des Monats
                //Anzahl der Tage im Monat errechnen
                
$max_days cal_days_in_month(CAL_GREGORIAN,date("n"),date("Y"));
                if(
$term_tag $max_days)
                {
                    
$term_monat date("n") -1;
                }
                else
                {
                    
$term_monat date("n");
                }
                
$term_monat sprintf("%02s"$term_monat);

               
//Monatlicher Termin
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."RRULE:FREQ=MONTHLY;INTERVAL=1"."\r\n";
               
//Startzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTSTART;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."00"."\r\n";
               
//Endzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTEND;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."59"."\r\n";

            }

            
//Jährliche Termine
            
if($term_jaerlich)
            {

               
//Berechnung des Endtermins
             
$term_tag_ende $term_tag +1;
             
$term_monat_ende $term_monat;
                
$term_jahr_start date("Y");
                
//Anzahl der Tage im Monat errechnen
                
$max_days cal_days_in_month(CAL_GREGORIAN,(int)$term_monat,date("Y"));
               If(
$term_tag_ende $max_days)
               {
                   
$term_tag_ende 1;
                   
$term_monat_ende $term_monat_ende +1;
                   If(
$term_monat_ende 12)
                    {
                        
$term_monat_ende 1;
                   
$term_jahr_start $term_jahr_start -1;
                    }
                }
                
$term_tag_ende sprintf("%02s"$term_tag_ende);
                
$term_monat_ende sprintf("%02s"$term_monat_ende);

               
//Jährlicher Termin
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."RRULE:FREQ=YEARLY;INTERVAL=1"."\r\n";
               
//Startzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTSTART;VALUE=DATE:".$term_jahr_start.$term_monat.$term_tag."\r\n";
               
//Endzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTEND;VALUE=DATE:".date("Y").$term_monat_ende.$term_tag_ende."\r\n";
            }

            
//Wöchentliche Termine 14 Tage gerade und ungerade
            
if($term_mo or $term_di or $term_mi or $term_do or
                
$term_fr or $term_sa or $term_so)
            {

                
//Erzeugen des Wochentages von 0-6
                
if($term_so$term_weekday 0;
                if(
$term_mo$term_weekday 1;
                if(
$term_di$term_weekday 2;
                if(
$term_mi$term_weekday 3;
                if(
$term_do$term_weekday 4;
                if(
$term_fr$term_weekday 5;
                if(
$term_sa$term_weekday 6;

                
//aktueller Wochentag von 0-6
                
$tag = (date("w"));
                
//Wann war der Wochentag im Verhältnis zu heute?
                
$diff $term_weekday $tag;

                If(
$term_14tag_ger or $term_14tag_ung)
                {

                    
//aktuelle Woche ist ungleich der Terminwoche
                    
if(($term_14tag_ger and ((date("W") % 2) != 0)) or ($term_14tag_ung and ((date("W") % 2) == 0)))
                    {
                  
$week_ungleich 1;
                    }
                    else
                    {
                  
$week_ungleich 0;
                    }

                    if((
$week_ungleich and ($term_weekday >0) and ($tag >0)) or
                        (
$week_ungleich and ($term_weekday ==0) and ($tag ==0)) or
                        (!
$week_ungleich and (($term_weekday ==0) or ($tag ==0))))
                    {
                        
$diff $diff -7;
                    }
                }

                
$diff_str $diff.' day';
                
$term_date strtotime ($diff_str);

               
$term_tag    date("d",$term_date);
               
$term_monat  date("m",$term_date);

                If(
$term_14tag_ger or $term_14tag_ung)
                {
                   
//14 tägiger Termin
                 
$Sunbird_DS_komplett $Sunbird_DS_komplett."RRULE:FREQ=WEEKLY;INTERVAL=2"."\r\n";
                }
               else
               {
                   
//Wöchentliche Termin
                 
$Sunbird_DS_komplett $Sunbird_DS_komplett."RRULE:FREQ=WEEKLY;INTERVAL=1"."\r\n";
                }

               
//Startzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTSTART;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."00"."\r\n";
               
//Endzeit
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DTEND;TZID=Europe/Berlin:".date("Y").$term_monat.$term_tag."T".$term_stunde.$term_minute."59"."\r\n";
            }

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

           //Ort
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."LOCATION:".$term_location."\r\n";
           
//Beschreibung
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."DESCRIPTION:".$term_trigger.",".$term_trigger_para."\r\n";

            
//Prüfen ob der Termin mit Erinnerung ist
            
if($term_erin)
            {
               
//Anlegen der Erinnnerung
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."BEGIN:VALARM"."\r\n";

                
//Auswahl der Erinnerung
                
Switch($term_erin)
                {
                    case 
1:
                       
//Erinnerung 5 Min
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-PT5M"."\r\n";
                        break;

                    case 
2:
                       
//Erinnerung 15 Min
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-PT15M"."\r\n";
                        break;

                    case 
3:
                       
//Erinnerung 30 Min
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-PT30M"."\r\n";
                        break;

                    case 
4:
                       
//Erinnerung 1 Stunde
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-PT1H"."\r\n";
                        break;

                    case 
5:
                       
//Erinnerung 1 Tag
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-P1D"."\r\n";
                        break;

                    case 
6:
                       
//Erinnerung 2 Tage
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-P2D"."\r\n";
                        break;

                    case 
7:
                       
//Erinnerung 1 Woche
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-P1W"."\r\n";
                        break;

                    case 
8:
                       
//Erinnerung 2 Wochen
                     
$Sunbird_DS_komplett $Sunbird_DS_komplett."TRIGGER;VALUE=DURATION:-P2W"."\r\n";

                }

               
//Erinnerungstext
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."DESCRIPTION:Mozilla Alarm: ".$term_inhalt."\r\n";
               
//Erinnerung anzeigen
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."ACTION:DISPLAY"."\r\n";
               
//Erinnerung-ENDE
             
$Sunbird_DS_komplett $Sunbird_DS_komplett."END:VALARM"."\r\n";
            }

           
//Event-ENDE
         
$Sunbird_DS_komplett $Sunbird_DS_komplett."END:VEVENT"."\r\n"."\r\n";

        }
   }
}

$Sunbird_DS_komplett $Sunbird_DS_komplett."END:VCALENDAR"."\r\n";

//Ausgeben in die Importdatei von Sunbird
$handle=fopen($file_sunbird"w");
fwrite($handle,$Sunbird_DS_komplett);
fclose($handle);

//Den Zeitstempel der Sunbird Kalender-Datei holen
$timestanp_sunbird filemtime($file_sunbird);

//Den aktuellen Zeitstempel abspeichern
SetValueInteger($id_file_time_sunbird$timestanp_sunbird);

//---------------------- Main Ende ----------------------------

An dieser Stelle muss das Script von euch angepasst werden.

//Bitte anpassen
//------------------------------------------
//Angabe der Location
$term_location = "Bocholt";
//Ablageort für termine.txt Ferengi Master
$file_ferengi = IPS_GetKernelDir()."media\\termine.txt";
//Ablageort für kalender.ics Sunbird
$file_sunbird = IPS_GetKernelDir()."media\\kalender.ics";
//------------------------------------------

Bitte startet erst mit einer iCalender "Testdatei" damit Ihr euch bestehende Termine nicht kaputt schreibt. Also:

//Ablageort für kalender.ics Sunbird
$file_sunbird = IPS_GetKernelDir()."media\\test_kal.ics";

o. ä.

Das Script legt bereits für den Inport (den ich noch umklimpern muss ) eine Handshake - Variable in .Termineverwaltung an.


27.05.2010 Edit: Fix am Script -> siehe Beschreibung im Script


Bis dann


Martin

Geändert von Schablone (27.05.10 um 10:19 Uhr)
Mit Zitat antworten
  #193 (permalink)  
Alt 24.05.10, 01:07
Senior Member
 
Registriert seit: Nov 2007
Ort: Weimar/Thüringen
Beiträge: 231
Standard

hallo,

Zitat:
Beschäftige Dich dann ersteinmal die Terminverwaltung inkl. Dashboard Visu ans laufen zu bekommen, die Import/Exportfunktion ist der zweite Schritt.
ich will aber garkeine dashboard visu wie du sie vorschlägst. will nur die funktion nutzen um die termine anzuzeigen. termin input soll nur am thunderbird/sunbird/n97 geschehen. das dashboard soll sie nur anzeigen. deswegen schäue ich diesen riesen aufwand des termininput sheet fürs dashboard anzulegen. wie gesagt, für mich is des absolut überflüssig!

grüße
Mit Zitat antworten
  #194 (permalink)  
Alt 24.05.10, 07:32
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard

Hallo pinki,


Zitat:
Zitat von pinki99 Beitrag anzeigen
ich will aber garkeine dashboard visu wie du sie vorschlägst. will nur die funktion nutzen um die termine anzuzeigen. termin input soll nur am thunderbird/sunbird/n97 geschehen. das dashboard soll sie nur anzeigen.
Die Importfunktion von iCalender kommt jetzt als nächstes.
Großes Indianer-Ehrenwort! Gib mir noch ne Woche.

Bis dann


Martin
Mit Zitat antworten
  #195 (permalink)  
Alt 24.05.10, 19:00
Benutzerbild von Ferengi-Master
Großer Nagus
 
Registriert seit: Feb 2007
Ort: Zwickau
Beiträge: 3,960
Standard

Zitat:
will nur die funktion nutzen um die termine anzuzeigen
Die anstehenden Termine werden in der Stringvariable $termine ausgegeben.
Die Erinnerungen in der Stringvariable $term_erin_anzeige.
__________________
MfG Thomas

Hardware im Einsatz: Eaton Xcomfort | Enocean | FS20 | 1-Wire | ALL2282+Axis WebCam | AVM Fritz! Repeater | WMRS200 Wetterstation | IPS-Funksystem-868 | Visu auf: 10"Touchscreen | Apple iPod Touch 2G | Apple iPod Touch 4G | Apple IPhone 4s | Software: IPS V2.5 | IPS Server mit Windows 7 Prof 32bit und Mediaportal 1.2.1 | diverse IPS Clients mit Dashboard | WebFront | iFront

*** Citius, altius, fortius ***
Mit Zitat antworten
  #196 (permalink)  
Alt 27.05.10, 10:38
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard Import iCalender -> termine.txt

Hallo alle zusammen,

wie versprochen der Import von iCalender in termine.txt.

!!! vorher die termine.txt sichern !!!

Als erstes das Script.

PHP-Code:
function import_sunbird()
{
/*=============================================
import_sunbird - Martin Heinzel - 24.05.2010
Version: 2.0

Beschreibung:
In diesem Skript werden die Termine von der Sunbird Terminverwaltung
in die Ferengi-Master termine.txt konvertiert.

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

24.05.2010 von Version 1.0 -> 2.0

Berschreibung:

Angepasst auf Ferengi-Master Terminverwaltung V 2.40b

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

Berschreibung:

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

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

//Bitte anpassen
//------------------------------------------
//Ablageort für termine.txt Ferengi Master
$file_ferengi IPS_GetKernelDir()."media\\termine.txt";
//Ablageort für kalender.ics Sunbird
$file_sunbird IPS_GetKernelDir()."media\\kalender.ics";
//------------------------------------------

// ID's
//---------

$id_TV IPS_GetObjectIDByName(".Terminverwaltung"0);
// ID Handshake-Variable
$id_file_time_sunbird = @IPS_GetVariableIDByName("file_time_sunbird"$id_TV);
// wenn es die Variable noch nicht gibt -> anlegen in .Terminverwaltung
if($id_file_time_sunbird === false)
{
    
$id_file_time_sunbird IPS_CreateVariable(1);
   
IPS_SetName($id_file_time_sunbird"file_time_sunbird");
    
IPS_SetParent($id_file_time_sunbird$id_TV);
}
$id_term_art_text IPS_GetVariableIDByName("term_art_text"$id_TV);

// Variablen
//--------------

//String für kompletten Sunbird Datensatz
$Sunbird_DS_komplett "";
//String array für Ferengi Terminverwaltung
$term_arr_komplett = array();
$term_arr_komplett[] = "000000000,0,0,0,0,0,0,0,0,0,0,00,00,00,00,,0,,,0,0,0,0,0,0,,0,0";

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

//--------------------------- Main ----------------------------
if(file_exists($file_sunbird))
{
    
//Den Zeitstempel der Sunbird Kalender-Datei holen
    
$timestanp_sunbird filemtime($file_sunbird);
}
else
{
    
//Wenn die Datei nicht existiert dann ist der Zeitstempel NULL
    
$timestanp_sunbird 0;
}

//Den letzten Zeitstempel holen
$old_timestanp_sunbird GetValueInteger($id_file_time_sunbird);

//Wenn der Zeitstempel der aktuellen Datei neuer ist
if($timestanp_sunbird $old_timestanp_sunbird)
{

//Den aktuellen Zeitstempel abspeichern
SetValueInteger($id_file_time_sunbird$timestanp_sunbird);

//Daten holen
//Termine in Variable einlesen
$Sunbird_DS_komplett file_get_contents($file_sunbird);
//Den kompletten Datensatz zerlegen
$Sunbird_DS_arr_komplett explode("BEGIN:"$Sunbird_DS_komplett);

//alle Datensätze durchlaufen
foreach($Sunbird_DS_arr_komplett as $key_1 => $value_1)
{

    
//Ferengi Daten im Datensatz
    
$term_einmalig           0;
   
$term_jaerlich           0;
   
$term_mo                 0;
      
$term_di                 0;
      
$term_mi                 0;
      
$term_do                 0;
      
$term_fr                 0;
      
$term_sa                 0;
      
$term_so                 0;
      
$term_aktiv              0;
      
$term_stunde             "";
      
$term_minute             "";
      
$term_tag             "";
      
$term_monat              "";
      
$term_loe                 0;
      
$term_14tag_ger         0;
      
$term_14tag_ung         0;
      
$term_erin                 0;
      
$term_anzei                 0;
      
$term_art                 0;
      
$term_monatlich       0;
      
$term_inhalt             "";
      
$term_trigger            "";
      
$term_trigger_para     "";
   
$term_woche             0;
   
$term_14Tage         0;

    
//Der erste Datensatz ist "2"
   
if($key_1 1)
    {
        
//einzelnen Datensatz in Daten zerlegen
       
$Sunbird_arr explode("\r\n"$value_1);

        
//Nur Datensätze vom Typ "VEVENT" und "VTODO" durchlaufen
        
if($Sunbird_arr[0] == "VEVENT" or $Sunbird_arr[0] == "VTODO")
        {
            
//Daten von Sunbird sind immer aktiv und werden angezeigt
          
$term_aktiv    1;
              
$term_anzei    1;

            
//alle Daten durchlaufen
            
foreach($Sunbird_arr as $key_2 => $value_2)
            {
                
//Daten zerlegen in Parameter und Wert
            
$Data_arr explode(":"$value_2);

                
//Kontrolle der Parameter
                
Switch($Data_arr[0])
                {

                    case 
"SUMMARY":
                      
$term_inhalt     $Data_arr[1];
                        break;

                    case 
"CATEGORIES":
                        
//Variable initialisieren
                  
$cat_exist 0;
                  
$cat_count 0;
                        
//Die Kategorie von Sunbird harmonisieren
                        
$cat_sunbird strtolower($Data_arr[1]);
                        
//Terminarten holen
                        
$term_art_text GetValueString($id_term_art_text);
                        
//Terminart zerlegen und in array
                        
$term_art_arr explode("|"$term_art_text);
                        
//Terminart prüfen
                        
foreach($term_art_arr as $term_art_value)
                        {
                           
//Die Kategorie von Ferengi-Master hamonisieren
                            
$cat_term_art strtolower($term_art_value);
                            
//Kontrolle der Kategorie
                            
if($cat_term_art === $cat_sunbird)
                            {
                                 
$cat_exist 1;
                           
$term_art $cat_count;
                            }
                     
$cat_count $cat_count +1;
                        }

                        
//wenn die Kategorie nicht vorhanden ist dann
                        
if(!$cat_exist)
                        {
                            
//Die neue Kategorie zufügen
                     
$term_art_arr[] = $Data_arr[1];
                            
$term_art $cat_count;
                        }
                        
//Kategorie wandeln in String
                        
$term_art_text implode("|"$term_art_arr);
                        
//und ablegen
                       
SetValueString($id_term_art_text$term_art_text);
                        break;

                    
//Wiederholender Termin
                    
case "RRULE":

                        
//Wiederholung zerlegen und in array
                        
$term_rule_arr explode(";"$Data_arr[1]);

                        
//Termin wöchentlich und 14 Tage
                        
if($term_rule_arr[0] == "FREQ=WEEKLY")
                        {
                           
//Kontrolle des Intervall
                           
$term_rule_count count($term_rule_arr);
                            
//Wenn ein Intervall vorhanden ist -> Kontrolle
                            
if($term_rule_count 1)
                           {
                                if(
$term_rule_arr[1] == "INTERVAL=2")
                                {
                           
$term_14Tage 1;
                                }
                                else
                                {
                           
$term_woche 1;
                                }
                            }
                           else
                           {
                        
$term_woche 1;
                            }
                        }

                        
//Termin monatlich
                        
if($term_rule_arr[0] == "FREQ=MONTHLY")
                        {
                          
$term_monatlich 1;
                        }

                        
//Termin jährlich
                        
if($term_rule_arr[0] == "FREQ=YEARLY")
                        {
                          
$term_jaerlich 1;
                        }
                        break;

                    
//Zeitstempel Datum
                    
case "DTSTART;VALUE=DATE":
                       
$term_jahr      substr($Data_arr[1], 04);
                       
$term_monat     substr($Data_arr[1], 42);
                       
$term_tag        substr($Data_arr[1], 62);
                         
$term_stunde    "00";
                       
$term_minute    "00";
                       
$term_sekunde    "00";
                        break;

                    
//Zeitstempel Datum und Zeit
                    
case "DTSTART;TZID=Europe/Berlin":
                       
$term_jahr        substr($Data_arr[1], 04);
                       
$term_monat     substr($Data_arr[1], 42);
                       
$term_tag        substr($Data_arr[1], 62);
                       
$term_stunde    substr($Data_arr[1], 92);
                       
$term_minute    substr($Data_arr[1],112);
                       
$term_sekunde    substr($Data_arr[1],132);
                        break;

                    
//Beschreibung
                    
case "DESCRIPTION":

                        
//Wert zerlegen in Trigger und Parameter
                    
$trigger_arr            explode(","$Data_arr[1]);
                       
$term_trigger          substr($trigger_arr[0], 0strlen($trigger_arr[0])-1);
                      
$term_trigger_para     $trigger_arr[1];

                }
            }

            
//Restliche Daten generieren
            //Time stamp
            
$term_timestamp   mktime((int)$term_stunde, (int)$term_minute0, (int)$term_monat, (int)$term_tag2000);

            
//Termin einmalig
            
if(!$term_jaerlich and !$term_monatlich and !$term_14Tage and !$term_woche)
            {
                
$term_einmalig 1;
              
$term_loe          1;
            }

            
//Termin wöchentlich und 14 tägig
            
if($term_woche or $term_14Tage)
            {

                
$timestamp   mktime(000, (int)$term_monat, (int)$term_tag, (int)$term_jahr);
                
$tag          date("w"$timestamp);

                
//Kontrolle des Wochentages
                
Switch($tag)
                {

                    case 
0:
                      
$term_so                 1;
                        break;
                    case 
1:
                      
$term_mo                 1;
                        break;
                    case 
2:
                      
$term_di                 1;
                        break;
                    case 
3:
                      
$term_mi                 1;
                        break;
                    case 
4:
                      
$term_do                 1;
                        break;
                    case 
5:
                      
$term_fr                 1;
                        break;
                    case 
6:
                      
$term_sa                 1;

                }

                
//Kontrolle der Woche 14tägig gerade oder ungerade
                
if($term_14Tage)
                {

                    if((
date("W"$timestamp) % 2) == 0)
                    {
                          
$term_14tag_ger         1;
                    }
                    else
                    {
                          
$term_14tag_ung         1;
                    }
                }

                
//wenn Wochenwert gesetzt, Datum auf 0 setzen
                
$term_jahr      0;
                
$term_monat     0;
                
$term_tag        0;

            }

           
//wenn monatlich gesetzt, Monat auf 0 setzen
           
if($term_monatlich)    $term_monat        0;

           
//wenn jährlich gesetzt, Zeit auf 0 setzen
           
if($term_jaerlich)
           {
                
$term_stunde    0;
                
$term_minute    0;
                
$term_sekunde    0;
           }

            
//Termin array zusammenstellen
            
$term_arr[0]  = $term_timestamp;
            
$term_arr[1]  = $term_einmalig;
           
$term_arr[2]  = $term_jaerlich;
               
$term_arr[3]  = $term_mo;
           
$term_arr[4]  = $term_di;
           
$term_arr[5]  = $term_mi;
           
$term_arr[6]  = $term_do;
           
$term_arr[7]  = $term_fr;
           
$term_arr[8]  = $term_sa;
           
$term_arr[9]  = $term_so;
           
$term_arr[10] = $term_aktiv;
           
$term_arr[11] = sprintf("%02s"$term_stunde);
           
$term_arr[12] = sprintf("%02s"$term_minute);
           
$term_arr[13] = sprintf("%02s"$term_tag);
           
$term_arr[14] = sprintf("%02s"$term_monat);
           
$term_arr[15] = "";
           
$term_arr[16] = $term_loe;
           
$term_arr[17] = "";
           
$term_arr[18] = "";
           
$term_arr[19] = $term_14tag_ger;
            
$term_arr[20] = $term_14tag_ung;
            
$term_arr[21] = 0;
           
$term_arr[22] = $term_anzei;
               
$term_arr[23] = $term_art;
           
$term_arr[24] = $term_monatlich;
           
$term_arr[25] = $term_inhalt;
           
$term_arr[26] = $term_trigger;
           
$term_arr[27] = $term_trigger_para;


            
//Termin in einen String
            
$termin           implode(","$term_arr);
         
$term_arr_komplett[] = $termin;
        }

        
//Datensatz vom Typ "VALARM" durchlaufen
        
if($Sunbird_arr[0] == "VALARM")
        {
            
//den letzten Datensatz des Array ausgeben
         
$termin        end($term_arr_komplett);
         
//wandeln in ein ARRAY
         
$term_arr   explode(","$termin);

            
//alle Daten durchlaufen
            
foreach($Sunbird_arr as $key_2 => $value_2)
            {
                
//Daten zerlegen in Parameter und Wert
            
$Data_arr explode(":"$value_2);

                if(
$Data_arr[0] == "TRIGGER;VALUE=DURATION")
                {

                    
//Auswahl der Erinnerung
                    
Switch($Data_arr[1])
                    {
                        case 
"-PT5M":
                           
//Erinnerung 5 Min
                         
$term_arr[21] = 1;
                            break;

                        case 
"-PT15M":
                           
//Erinnerung 15 Min
                         
$term_arr[21] = 2;
                            break;

                        case 
"-PT30M":
                           
//Erinnerung 30 Min
                         
$term_arr[21] = 3;
                            break;

                        case 
"-PT1H":
                           
//Erinnerung 1 Stunde
                         
$term_arr[21] = 4;
                            break;

                        case 
"-P1D":
                           
//Erinnerung 1 Tag
                         
$term_arr[21] = 5;
                            break;

                        case 
"-P2D":
                           
//Erinnerung 2 Tage
                         
$term_arr[21] = 6;
                            break;

                        case 
"-P1W":
                           
//Erinnerung 1 Woche
                         
$term_arr[21] = 7;
                            break;

                        case 
"-P2W":
                           
//Erinnerung 2 Wochen
                         
$term_arr[21] = 8;

                    }
                }
            }

            
//Termin in einen String
            
$termin           implode(","$term_arr);
            
$arr_count    count($term_arr_komplett);
         
$term_arr_komplett[$arr_count -1] = $termin;
        }
    }
}

sort($term_arr_komplett); // nach Zeit sortieren
$term_neu_komplett implode("\r\n"$term_arr_komplett); // in String zurück

$handle=fopen($file_ferengi"w");
fwrite($handle,$term_neu_komplett);
fclose($handle);

}
//---------------------- Main Ende ----------------------------


An dieser Stelle muss das Script von euch angepasst werden.

//Bitte anpassen
//------------------------------------------
//Ablageort für termine.txt Ferengi Master
$file_ferengi = IPS_GetKernelDir()."media\\termine.txt";
//Ablageort für kalender.ics Sunbird
$file_sunbird = IPS_GetKernelDir()."media\\kalender.ics";
//------------------------------------------


Neue Kategorien werden automatisch importiert.
Dazu muss aber Code in der Ferengi-Master Terminverwaltung deaktiviert werden.

Vorher ca. in Zeile 188:
PHP-Code:
if(GetValueString($id_term_art_text) != $term_art_text_neu)
{
   
SetValueString($id_term_art_text$term_art_text_neu);

Nachher:
PHP-Code:
// import_sunbird
//    if(GetValueString($id_term_art_text) != $term_art_text_neu)
//    {
//       SetValueString($id_term_art_text, $term_art_text_neu);
//    } 
Erinnerungen die in der Feregie-Master Terminverwaltung nicht existieren laufen ins leere!!
Es gibt: keine, 5 min, 15 min, 30 min, 1 Stunde, 1 Tag, 2 Tage, 1 Woche, 2 Wochen



Bis dann


Martin


PS:

!!! vorher die termine.txt sichern !!!
!!! vorher die termine.txt sichern !!!
!!! vorher die termine.txt sichern !!!
!!! vorher die termine.txt sichern !!!
Mit Zitat antworten
  #197 (permalink)  
Alt 12.07.10, 22:42
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard "Add On" Jahres und Monatsübersicht

Hallo alle zusammen,

in den nächsten Tagen ist es so weit.

Ein "Add On" für die Ferengi-Master Terminverwaltung.

Eine Jahresübersicht mit der Anzeige aller Termine sowie eine monatliche Übersicht zum blättern.

Bis dann


Martin
Miniaturansicht angehängter Grafiken
kalender.jpg   kalender_monat.jpg  
Mit Zitat antworten
  #198 (permalink)  
Alt 13.07.10, 20:21
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard "Add On" Jahreskalender

Hallo alle zusammen,

als erstes kommt der Jahreskalender für die Ferengi-Master Terminverwaltung.


PHP-Code:
function calender_year()
{
/*=============================================
calender_year - Martin Heinzel - 13.07.2010
Version: 1.0

Beschreibung:
Mit diesem Skript wird ein Jahreskalender erstellt.
Dieser Kalender enthält alle Termine aus der
Ferengi-Master Terminverwaltung 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');
$rawCount_Month 0;
$year         date('Y');
$act_day     date('j');
$act_month     date('n');

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

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

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

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

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

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

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


//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 des Jahreskalenders beginnend mit der Monatsaufteilung
$Jahreskalender '<table border="0" summary="Jahreskalender" ><tr>';

//durchlaufen der einzelnen Monate
foreach($arr_Month as $key => $Month)
{
    
//erstellen der Monatsansicht mit dem Monat und den Tageskopfdaten
    
$Jahreskalender .='<td><table border="1" summary="Kalender '.$Month.'">
   <tr>
       <th colspan="7" '
.$Style_MonthHeader.'>'.$Month.'</th>
   </tr>
   <tr>'
.$DayHeader.'</tr>';

    
//berechnen des aktuellen Monats
    
$month $key+1;
    
//wie viele Tage hat dieser Monat
   
$total_days date('t'mktime(000$month1$year));
   
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
    
$day_offset = (date('w'mktime(000$month1$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++)
    {
        
$Jahreskalender .='<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)
            {
                
$Jahreskalender .='<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)
                    {
                        
$Jahreskalender .='<td '.$Style_DayCell.' '.$Style_Today.'>'.($Day_Count).'</td>';
                    }
                    else
                    {
                        
//Tage mit einem Termin werden eingefärbt
                        
if(getAppointment($Day_Count$month$year))
                        {
                            
$Jahreskalender .='<td '.$Style_DayCell.' '.$Style_Appointment.'>'.($Day_Count).'</td>';
                        }
                        else
                        {
                            
//alle anderen Tagen sind ohne färbung
                            
$Jahreskalender .='<td '.$Style_DayCell.'>'.($Day_Count).'</td>';
                        }
                    }
                    
$Day_Count += 1;
                }
                else
                {
                    
//alle Tage die über die maximalen Monatstage gehen werden mit leeren Zellen aufgefüllt
                    
$Jahreskalender .='<td '.$Style_DayCell.'>*</td>';
                }

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

    
//aufaddieren der Monate in einer Reihe
   
$rawCount_Month += 1;
   
//nach 4 Monaten wird eine neue Monatsreihe begonnen
    
if($rawCount_Month == 4)
    {
        
$Jahreskalender .='</tr><tr>';
      
$rawCount_Month 0;
    }
}
//Beenden des Jahreskalenders
$Jahreskalender .= '</tr></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">'
.$Jahreskalender.
'</body>
</html>'
;

//und ablegen
return $browser;
}

function 
getAppointment($aktDay$aktMonth$aktYear)
{
/*=============================================
getAppointment - Martin Heinzel - 12.07.2010
Version: 1.0

Beschreibung:
In diesem Skript werden die Termine von der Ferengi-Master Terminverwaltung
für einen bestimmten Tag gesucht.

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

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

Berschreibung:

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

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

//Bitte anpassen
//------------------------------------------
//Ablageort für termine.txt
$filename IPS_GetKernelDir()."media\\termine.txt";

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

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

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

//Daten holen
$termfile                 file_get_contents($filename); //Termine in Variable einlesen
$term_arr_komplett     explode("\r\n"$termfile); // nach Zeilenumbruch trennen und in array
$erg                       "";
$aktAppointment      false;

foreach(
$term_arr_komplett as $key => $value//alle Termine durchlaufen
{
    
$term_arr explode(","$value); // einzelnen Datensatz in Daten zerlegen

    
$term_einmalig           $term_arr[1];
   
$term_jaerlich           $term_arr[2];
   
$term_mo                 $term_arr[3];
      
$term_di                 $term_arr[4];
      
$term_mi                 $term_arr[5];
      
$term_do                 $term_arr[6];
      
$term_fr                 $term_arr[7];
      
$term_sa                 $term_arr[8];
      
$term_so                 $term_arr[9];
      
$term_aktiv              $term_arr[10];
      
$term_stunde             $term_arr[11];
      
$term_minute             $term_arr[12];
      
$term_tag             $term_arr[13];
      
$term_monat              $term_arr[14];
      
$term_loe                 $term_arr[16];
      
$term_14tag_ger         $term_arr[19];
      
$term_14tag_ung         $term_arr[20];
      
$term_erin                 $term_arr[21];
      
$term_anzei                 $term_arr[22];
      
$term_art                 $term_arr[23];
      
$term_monatlich       $term_arr[24];
      
$term_inhalt             $term_arr[25];
      
$term_trigger            $term_arr[26];
      
$term_trigger_para     $term_arr[27];

   if(
$term_aktiv//wenn aktiver Termin gefunden => prüfen
   
{
       
//Timestamp von heute
         
$heute        mktime (0,0,0,$aktMonth,$aktDay,$aktYear);
         
//Timestamp des Termins aus der for Schleife
        
if($term_monatlich != 1//kein Monatlicher Termin
        
{
            
$termin_dat   mktime (0,0,0$term_monat$term_tag ,$aktYear);
        }
        else 
//Monatlicher Termin
        
{
            
$termin_dat   mktime (0,0,0$aktMonth$term_tag$aktYear);
        }
         
//schauen ob Termin auf heute($erg = 0) oder morgen fällt ($erg = -1)
         
$diff         $heute-$termin_dat;
         
$erg          $diff/((60*60)*24);
         
//heutigen Tag ermitteln
         
$tag          = (date("w"$heute));

      
//wiederkehrende Wöchentliche Termine die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 0)
         {
            
$erg          0;
         }
      
//wiederkehrende 14 Tägige Termine an geraden Wochen die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
            
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 0)
         {
            if((
date("W"$heute) % 2)==0)
            {
                 
//gerade Woche
                
$erg          0;
            }
         }
         
//wiederkehrende 14 Tägige Termine an ungeraden Wochen die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 1)
         {
            if((
date("W"$heute) % 2)!=0)
            {
                
//ungerade Woche
                
$erg          0;
         }
        }

        if(
$erg == 0)
        {
            
$aktAppointment true;
        }
    }
}
//---------------------- Main Ende ----------------------------
return $aktAppointment;

Das Skript erzeugt einen String der im Dash in einem Web Browser angezeigt werden kann.

Beispiel:

PHP-Code:
$id_Jahreskalender 32453 /*[.Terminverwaltung\Overview_Year]*/;
$browser calender_year();
SetValueString($id_Jahreskalender$browser); 
Die Konfiguration des Dashboards entnehmt ihr bitte dem Screenshot.

Bis dann

Martin
Miniaturansicht angehängter Grafiken
konfig.jpg  
Mit Zitat antworten
  #199 (permalink)  
Alt 16.07.10, 20:15
Benutzerbild von Schablone
Senior Member
 
Registriert seit: Sep 2009
Ort: Bocholt
Beiträge: 570
Standard Monats Kalender

Hallo alle zusammen,

wie besprochen kommt hier der Monatskalender.


Als erstes das Skript:

PHP-Code:
/*=============================================
skrKalender_Monat - Martin Heinzel - 16.07.2010
Version: 1.0

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

Das Skript wird über 3 Tasten aus dem Dashboard gesteuert.

Taste "init"   -> sichtbar machen des Monatskalenders und initialisieren auf den aktuellen Monat
Taste "vor"    -> blättern um einen Monat vor. Nach Dezember kommt Januar
Taste "vzur"   -> blättern um einen Monat nach hinten. Nach Januar kommt Dezember

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

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

Berschreibung:

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

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

// ID's
//---------

$id_TV IPS_GetObjectIDByName(".Terminverwaltung"0);

// ID "Month-counter" zum blättern
$id_month_counter = @IPS_GetVariableIDByName("View_Month_count"$id_TV);
// wenn es die Variable noch nicht gibt -> anlegen alle Variablen in .Terminverwaltung
if($id_month_counter === false)
{
    
//anlegen der Variablen "View_Month_count" als Integer
    
$id_month_counter IPS_CreateVariable(1);
   
IPS_SetName($id_month_counter"View_Month_count");
    
IPS_SetParent($id_month_counter$id_TV);
    
    
//anlegen der Variablen "Overview_Month" als String
    
$id_overview_month IPS_CreateVariable(3);
   
IPS_SetName($id_overview_month"Overview_Month");
    
IPS_SetParent($id_overview_month$id_TV);

    
//anlegen der Variablen "visible_view_month" als Bool
    
$id_visible_view_month IPS_CreateVariable(0);
   
IPS_SetName($id_visible_view_month"visible_view_month");
    
IPS_SetParent($id_visible_view_month$id_TV);
}
else
{
    
$id_overview_month IPS_GetVariableIDByName("Overview_Month"$id_TV);
}

$month GetValueInteger($id_month_counter);

if (!isset(
$IPS_COMPONENT))     $IPS_COMPONENT    ="";

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

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

if($IPS_COMPONENT == "init")
{
    
$month     = (integer)date('n');
    
SetValueInteger($id_month_counter$month);
}

if(
$IPS_COMPONENT == "vor")
{
    
$month     += 1;
    if(
$month 12)
    {
        
$month 1;
    }
    
SetValueInteger($id_month_counter$month);
}

if(
$IPS_COMPONENT == "zur")
{
    
$month     -= 1;
    if(
$month 1)
    {
        
$month 12;
    }
    
SetValueInteger($id_month_counter$month);
}

$browser calender_month($month);
SetValueString($id_overview_month$browser);

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


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

function calender_month($month)
{
/*=============================================
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 der
Ferengi-Master Terminverwaltung 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&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$key          $month -1;
$year         date('Y');
$act_day     date('j');
$act_month     date('n');

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

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

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

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

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

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

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


//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(000$month1$year));
//an welchem Tag beginnt der Monat -> Da die Woche mit Montag beginnt muss 1 subtrahiert werden
$day_offset = (date('w'mktime(000$month1$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
                    
if(getAppointment($Day_Count$month$year))
                    {
                        
$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 
getAppointment($aktDay$aktMonth$aktYear)
{
/*=============================================
getAppointment - Martin Heinzel - 12.07.2010
Version: 1.0

Beschreibung:
In diesem Skript werden die Termine von der Ferengi-Master Terminverwaltung
für einen bestimmten Tag gesucht.

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

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

Berschreibung:

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

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

//Bitte anpassen
//------------------------------------------
//Ablageort für termine.txt
$filename IPS_GetKernelDir()."media\\termine.txt";

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

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

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

//Daten holen
$termfile                 file_get_contents($filename); //Termine in Variable einlesen
$term_arr_komplett     explode("\r\n"$termfile); // nach Zeilenumbruch trennen und in array
$erg                       "";
$aktAppointment      false;

foreach(
$term_arr_komplett as $key => $value//alle Termine durchlaufen
{
    
$term_arr explode(","$value); // einzelnen Datensatz in Daten zerlegen

    
$term_einmalig           $term_arr[1];
   
$term_jaerlich           $term_arr[2];
   
$term_mo                 $term_arr[3];
      
$term_di                 $term_arr[4];
      
$term_mi                 $term_arr[5];
      
$term_do                 $term_arr[6];
      
$term_fr                 $term_arr[7];
      
$term_sa                 $term_arr[8];
      
$term_so                 $term_arr[9];
      
$term_aktiv              $term_arr[10];
      
$term_stunde             $term_arr[11];
      
$term_minute             $term_arr[12];
      
$term_tag             $term_arr[13];
      
$term_monat              $term_arr[14];
      
$term_loe                 $term_arr[16];
      
$term_14tag_ger         $term_arr[19];
      
$term_14tag_ung         $term_arr[20];
      
$term_erin                 $term_arr[21];
      
$term_anzei                 $term_arr[22];
      
$term_art                 $term_arr[23];
      
$term_monatlich       $term_arr[24];
      
$term_inhalt             $term_arr[25];
      
$term_trigger            $term_arr[26];
      
$term_trigger_para     $term_arr[27];

   if(
$term_aktiv//wenn aktiver Termin gefunden => prüfen
   
{
       
//Timestamp von heute
         
$heute        mktime (0,0,0,$aktMonth,$aktDay,$aktYear);
         
//Timestamp des Termins aus der for Schleife
        
if($term_monatlich != 1//kein Monatlicher Termin
        
{
            
$termin_dat   mktime (0,0,0$term_monat$term_tag ,$aktYear);
        }
        else 
//Monatlicher Termin
        
{
            
$termin_dat   mktime (0,0,0$aktMonth$term_tag$aktYear);
        }
         
//schauen ob Termin auf heute($erg = 0) oder morgen fällt ($erg = -1)
         
$diff         $heute-$termin_dat;
         
$erg          $diff/((60*60)*24);
         
//heutigen Tag ermitteln
         
$tag          = (date("w"$heute));

      
//wiederkehrende Wöchentliche Termine die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 0)
         {
            
$erg          0;
         }
      
//wiederkehrende 14 Tägige Termine an geraden Wochen die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
            
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 0)
         {
            if((
date("W"$heute) % 2)==0)
            {
                 
//gerade Woche
                
$erg          0;
            }
         }
         
//wiederkehrende 14 Tägige Termine an ungeraden Wochen die auf heute fallen prüfen
      
if ($tag == and $term_so == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mo == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_di == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_mi == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_do == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_fr == and $term_14tag_ger == and $term_14tag_ung == or
             
$tag == and $term_sa == and $term_14tag_ger == and $term_14tag_ung == 1)
         {
            if((
date("W"$heute) % 2)!=0)
            {
                
//ungerade Woche
                
$erg          0;
         }
        }

        if(
$erg == 0)
        {
            
$aktAppointment true;
        }
    }
}
//---------------------- Main Ende ----------------------------
return $aktAppointment;

Bitte alles in ein Skript kopieren und ausführen. Damit werden die benötigten Variablen angelegt.

Für die Einbindung ins Dashboard habe ich Screenshots gemacht.

Wenn noch Fragen bestehen bitte melden.

Bis dann


Martin
Miniaturansicht angehängter Grafiken
kalender_monat.jpg   kalender.jpg   button_init.jpg   button_init_konfig.jpg   button_zur.jpg  

button_zur_konfig.jpg   button_exit.jpg   kalender_konfig.jpg  
Mit Zitat antworten
  #200 (permalink)  
Alt 31.07.10, 13:47
Benutzerbild von Ferengi-Master
Großer Nagus
 
Registriert seit: Feb 2007
Ort: Zwickau
Beiträge: 3,960
Standard

Besteht Interesse eine Termin mittels e-mail an die Terminverwaltung zu senden?
Ich könnte ein Interface schreiben mit welchen man mit jedem beliebigen e-mail Client von überall einen Termin an die Terminverwaltung senden kann.
Dazu würde die TV einfach den Text der e-mail parsen, dieser müßte dann natürlich ein fertiges Formular sein. So ne Idee, bei entsprechendem Zuspruch würde ich mich drübermachen.
__________________
MfG Thomas

Hardware im Einsatz: Eaton Xcomfort | Enocean | FS20 | 1-Wire | ALL2282+Axis WebCam | AVM Fritz! Repeater | WMRS200 Wetterstation | IPS-Funksystem-868 | Visu auf: 10"Touchscreen | Apple iPod Touch 2G | Apple iPod Touch 4G | Apple IPhone 4s | Software: IPS V2.5 | IPS Server mit Windows 7 Prof 32bit und Mediaportal 1.2.1 | diverse IPS Clients mit Dashboard | WebFront | iFront

*** Citius, altius, fortius ***
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Im Dashboard werden die Elemente verschoben rhekeren Allgemeine Diskussion 9 08.02.09 15:32
Designerfehler unter V2.0 mit Dashboard? Luggi Allgemeine Diskussion 2 13.10.08 15:11
Dashboard direkt laden... korny Allgemeine Diskussion 2 21.09.08 16:12
CPU Auslastung unter V2.0 Luggi Allgemeine Diskussion 3 02.08.08 17:29
Unglücklich mit 1-Wire unter V2.0 Luggi Allgemeine Diskussion 11 10.07.08 21:59


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0