+ Antworten
Seite 15 von 19 ErsteErste ... 5 13 14 15 16 17 ... LetzteLetzte
Ergebnis 141 bis 150 von 187
  1. #141
    Registriert seit
    May 2008
    Ort
    Forstern
    Beiträge
    928

    Zitat Zitat von marcusb Beitrag anzeigen
    Leider kann ich eine Meldung nicht löschen, wenn ich im Webfront den "OK"-Button drücke. (Browser ist Firefox.)
    Ist das eine "removeble" Meldung bzw. wie hast Du sie erzeugt!?

    Zitat Zitat von marcusb Beitrag anzeigen

    Wenn ich es richtig verstanden habe, muss ich im Skript dafür bei Webhook die Instanz des Webfronts eintragen (also im Objektbaum unter "Konfigurator Instanzen" die Webfront Configurator Instanz die ich nutze).
    Jein, Du musst einen Webhook "/hook/msg" anlegen, welcher auf das MeldungsverwaltungsScript zeigt! Also nicht auf das Webfront sondern das Script selber!

    Ciao Heiko
    SERVER: FritzBox 7490, Raspberry Pi 3, CCU2 und IP-Symcon V5.1 (Ninja) | SYSTEME: Amazon ECHOs, Apple TVs, Homematic/HmIP, LevelJet, Logitech Harmony, Pioneer AVR, Philips Hue, Samsung TV's, Somfy RFX, Apple & Android Handys & Tablets | MODULE: IPSymconAwido, IPSymconToolmatic, IPSymconAlmanac, SymconMHC | SKINS: WwxSkin

  2. #142
    Registriert seit
    Apr 2009
    Beiträge
    98

    vielen Dank für Deine Hilfe Pitti.

    Nachdem ich den Webhook angelegt habe funktioniert es und ich kann die Meldungen per Druck auf den "OK"-Knopf löschen.

    Ich habe noch nicht so ganz verstanden, wofür die Variable $WFC im Konfig Bereich ist. Was muss ich dort hinterlegen? Den Webfront Konfigurator?

    Vielleicht stelle ich mich nur so blöd an, aber eine etwas ausführliche Doku sowie das aktuelle Skript im ersten Thread wäre sehr hilfreich...

  3. #143
    Registriert seit
    May 2008
    Ort
    Forstern
    Beiträge
    928

    Zitat Zitat von marcusb Beitrag anzeigen
    Ich habe noch nicht so ganz verstanden, wofür die Variable $WFC im Konfig Bereich ist. Was muss ich dort hinterlegen? Den Webfront Konfigurator?
    Genau, die ID vom Webfront Konfigurator in welchem Du die Meldungsanzeige verwendest. Sie wird benötigt um den Meldungstyp 4 zu realisieren (Switch Page).

    Ciao Heiko
    SERVER: FritzBox 7490, Raspberry Pi 3, CCU2 und IP-Symcon V5.1 (Ninja) | SYSTEME: Amazon ECHOs, Apple TVs, Homematic/HmIP, LevelJet, Logitech Harmony, Pioneer AVR, Philips Hue, Samsung TV's, Somfy RFX, Apple & Android Handys & Tablets | MODULE: IPSymconAwido, IPSymconToolmatic, IPSymconAlmanac, SymconMHC | SKINS: WwxSkin

  4. #144
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    393

    Abend!
    Erstmal vielen Dank für das nützliche Skript! Ich logge hier alle Schaltvorgänge und Alarme mit...

    Aber beim Webfront SkinLight sieht man das Icon am Anfang jedes Eintrags nicht,

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Unbe111nannt.jpg 
Hits:	66 
Größe:	106.4 KB 
ID:	47851

    Meine Frage: Wie kann ich das Icon nicht darstellen? Aufgrund der enormen Platzverschwendung von Webfront möchte ich es eigentlich eh nicht haben...

    Danke und lg
    KNX
    IPS @ Raspberry Pi3 - IPSStudio - Collibrico - Sonos

  5. #145
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    393

    DANKE! Habs hinbekommen!

    Schaut bei mir aber jetzt so aus: (passt supertoll, weil platzsparend)
    NUR kann ich jetzt keinen Eintrag mehr löschen...

    Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Unbessssnannt.jpg 
Hits:	90 
Größe:	125.2 KB 
ID:	47854
    was tun?

    btw: Habe Version 2.2, was ist bei 2.3 anders?

    lg
    Geändert von cbeham (19.02.19 um 22:47 Uhr)
    KNX
    IPS @ Raspberry Pi3 - IPSStudio - Collibrico - Sonos

  6. #146
    Registriert seit
    May 2008
    Ort
    Forstern
    Beiträge
    928

    Hi cbeham,

    das mit den Versionen ist wirklich etwas doof, aber so ist das mit Scripten die sich weiter entwickeln ;-)
    Ich habe einige Veränderungen die hier vorgeschlagen und auch umgesetzt worden nicht mitgezogen da sie für mich nicht in mein Konzept passten. Du hast ja auch eine Version mit dem Zeitstempel vor der Meldung

    Poste doch einfach mal was Du verändert hast, schätze in der Funktion renderData(), oder? Dann schau ich es mir mal an.

    Gruß Heiko
    SERVER: FritzBox 7490, Raspberry Pi 3, CCU2 und IP-Symcon V5.1 (Ninja) | SYSTEME: Amazon ECHOs, Apple TVs, Homematic/HmIP, LevelJet, Logitech Harmony, Pioneer AVR, Philips Hue, Samsung TV's, Somfy RFX, Apple & Android Handys & Tablets | MODULE: IPSymconAwido, IPSymconToolmatic, IPSymconAlmanac, SymconMHC | SKINS: WwxSkin

  7. #147
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    393

    Zitat Zitat von pitti Beitrag anzeigen
    Hi cbeham,

    das mit den Versionen ist wirklich etwas doof, aber so ist das mit Scripten die sich weiter entwickeln ;-)
    Ich habe einige Veränderungen die hier vorgeschlagen und auch umgesetzt worden nicht mitgezogen da sie für mich nicht in mein Konzept passten. Du hast ja auch eine Version mit dem Zeitstempel vor der Meldung

    Poste doch einfach mal was Du verändert hast, schätze in der Funktion renderData(), oder? Dann schau ich es mir mal an.

    Gruß Heiko
    Danke! Toller Support
    Darf ich das ganze Skript hier posten (am Abend)?

    lg
    KNX
    IPS @ Raspberry Pi3 - IPSStudio - Collibrico - Sonos

  8. #148
    Registriert seit
    May 2008
    Ort
    Forstern
    Beiträge
    928

    Zitat Zitat von cbeham Beitrag anzeigen
    Danke! Toller Support
    Noch habe ich nix gemacht

    Zitat Zitat von cbeham Beitrag anzeigen
    Darf ich das ganze Skript hier posten (am Abend)?
    Ich werde mich nicht dagegen wehren

    Bis heut Abend
    Heiko
    SERVER: FritzBox 7490, Raspberry Pi 3, CCU2 und IP-Symcon V5.1 (Ninja) | SYSTEME: Amazon ECHOs, Apple TVs, Homematic/HmIP, LevelJet, Logitech Harmony, Pioneer AVR, Philips Hue, Samsung TV's, Somfy RFX, Apple & Android Handys & Tablets | MODULE: IPSymconAwido, IPSymconToolmatic, IPSymconAlmanac, SymconMHC | SKINS: WwxSkin

  9. #149
    Registriert seit
    Nov 2016
    Ort
    Österreich, OÖ, Schärding
    Beiträge
    393

    Abend!

    Was nicht funktioniert ist First in Lastout (d.h. letzte Meldung soll ganz oben stehen)
    $fifo = false; oder true; bringt keine Änderung

    und die Buttons links sollten ein ganz klein wenig größer sein, damit man ordentlich draufklicken kann zum löschen der einzelnen Meldungen!

    und noch eine Bitte, da man im SkinLight die Icons sowieso nicht sehen kann, könnte man sie auch weglassen!?

    und gerade noch etwas gefunden:
    wenn ich einen bestimmten typ löschen möchte, 0... Normal, löscht er auch immer 2 mit!
    $success = IPS_RunScriptWaitEx(19710, array('action' => 'removeType', 'type' => '0'));




    Dickes Danke!

    Code:
    <? 
    ################################################################################ 
    # Scriptbezeichnung: System.Dashboard.ips.php 
    # Version: 2.2.20180226 
    # Author:  Heiko Wilknitz (@Pitti) 
    #          Original von Horst (12.11.2010) 
    #          Angepasst für RasPi lueralba (31.3.2015) 
    # 
    # Meldungsanzeige im WebFront 
    # =========================== 
    # 
    # Dieses Skript dient zur Verwaltung einer Meldungsliste im WebFront. 
    # Meldungen können hinzugefügt und entfernt werden. Es ist auch möglich, 
    # Meldungen zu einem bestimmten Zeitpunkt automatisch löschen zu lassen, 
    # sowie das Löschen von Meldungen durch Klick im WebFront zu aktivieren. 
    # Mit der Version 2.0 ist es möglich den Button zum Wechseln der Seite 
    # im Webfront zu benutzen (Typ 4). 
    # 
    # Installation: 
    # ------------- 
    # 
    # Dieses Skript richtet automatisch alle nötigen Objekte bei manueller 
    # Ausführung ein. Eine weitere manuelle Ausführung setzt alle benötigten Objekte 
    # wieder auf den Ausgangszustand. 
    # 
    # - Neues Skript erstellen 
    # - Diesen PHP-Code hineinkopieren 
    # - Skript Abspeichern 
    # - Webfront ID eintragen (Abschnitt 'Konfiguration') 
    # - Skript Ausführen 
    # 
    # Meldung durch ein anderes Skript hinzufügen lassen: 
    # --------------------------------------------------- 
    # 
    # $number = IPS_RunScriptWaitEx(ObjektID, array('action' => 'add', 'text' => 'Test', 'expires' => time() + 60, 'removable' => true)); 
    # Die Rückgabe des Aufrufes ist die Identifikationsnummer der neuen Nachricht, 
    # bei Misserfolg wird der Wert 0 zurückgegeben. 
    # 
    # Parameter: 
    # - 'text': Meldungstext 
    # - 'expires' (optional): Zeitpunkt des automatischen Löschens der Meldung 
    #          als Unix-Timestamp. Ist der Wert kleiner als die aktuelle Timestamp, 
    #          wird nicht automatisch gelöscht. 
    # - 'removable' (optional): Anzeige eines Buttons zum Löschen der Meldung im WebFront. 
    # - 'type' (optional): Art der Meldung ... 0 => Normal(grün), 
    #          1 => Fehler(rot), 2 => Warnung(gelb), 3 => Todo(blau), 4 => Goto(orange) 
    # - 'image' (optional): Name des WebFront-Icons (ipsIcon<name>), welches 
    #          für Meldung verwendet werden soll, Standard ist "Talk" 
    #          Doku:  https://www.symcon.de/service/dokumentation/komponenten/icons/  
    #          z.B. Clock, Gear, Alert, etc....   
    # - 'page' (optional): Nur in Verbindung mit Type 4 - Seitenname 
    #          HINWEIS: funktioniert nur ohne Parameter 'removable'!! 
    # 
    # Meldung durch ein anderes Skript löschen lassen: 
    # ------------------------------------------------ 
    # 
    # $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'remove', 'number' => 123)); 
    # Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
    # 
    # Parameter: 
    # - 'number': Identifikationsnummer der zu löschenden Meldung 
    # 
    # Meldung eines bestimmten Types löschen: 
    # ------------------------------------------------ 
    # 
    # $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'removeType', 'type' => x)); 
    # Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
    # 
    # Parameter: 
    # - 'type': Meldungstyp der gelöscht werden soll (x = 0|1|2|3|4) 
    # 
    # Alle vorhandenen Meldungen durch ein anderes Skript löschen lassen: 
    # ------------------------------------------------------------------- 
    # 
    # $success = IPS_RunScriptWaitEx(ObjektID, array('action' => 'removeAll')); 
    # Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0. 
    # 
    # Eine Meldungen hinzufügen, welche bei Klick auf den Button die Seite wechselt: 
    # ------------------------------------------------------------------------------ 
    # 
    # $id = IPS_RunScriptWaitEx(ObjektID , array('action' => 'add', 'text' => $text, 'type' => 4, 'image' => 'Telephone', 'page' => 'catAnrufe')); 
    # Der Parameter 'page' definiert zu welcher Seite im Webfront gewechselt werden soll. 
    # Der Name der Seite muss einer existierenden 'Element ID' im konfigurierten Webfront 
    # entsprechen (z.b. item32435). 
    #   
    # ----------------------------- Konfigruration --------------------------------- 
    # 
    # WebFront Configuration 
    $wfc     = 19710 /*[Forstern.NET]*/;   
    # 
    # First In First Out - erste Meldung wird zuerst dargestellt, sonst  
    # letzte Meldung zuerst (LIFO). 
    $fifo    = false;  
    # 
    ################################################################################ 
    
    switch ($_IPS['SENDER']) { 
        case 'Execute': 
            install(); 
            break; 
    
        case 'RunScript': 
            $result = 0; 
            switch ($_IPS['action']) { 
                case 'add': 
                    $expires  = isset($_IPS['expires']) ? $_IPS['expires'] : 0; 
                    $removable  = isset($_IPS['removable']) ? $_IPS['removable'] : false; 
                    $text     = isset($_IPS['text']) ? $_IPS['text'] : 'leer'; 
                    $type     = isset($_IPS['type']) ? $_IPS['type'] : 0; 
                    $image    = isset($_IPS['image']) ? $_IPS['image'] : 'Talk'; 
                    $page     = isset($_IPS['page']) ? $_IPS['page'] : ''; 
                    if (!($expires > time())) { $expires = 0; } 
                    if (!($removable === true)) { $removable = false; } 
                    if (!($type > 0)) { $type = 0; } 
                    if (!(is_string($page))) { $page = ''; } 
                    if (!($image != '')) { $image = 'Talk'; } 
                    if (is_string($text) && $text != '') { 
                      //  $result = addMessage($text, $expires, $removable, $type, $image, $page, $fifo); 
                      $result = addMessage($text, $expires, $removable, $type, $image, $page, $fifo); 
                    } 
                    break; 
    
                case 'remove': 
                    $number = isset($_IPS['number']) ? $_IPS['number'] : -1; 
                    if ($number > 0) { 
                        $result = removeMessage($number, $fifo); 
                    } 
                    break; 
    
                case 'removeAll': 
                    $result = removeAllMessages(); 
                    break; 
                case 'removeType': 
                    $type = isset($_IPS['type']) ? $_IPS['type'] : -1; 
                    if ($type >= 0) { 
                      $result = removeTypes($type, $fifo); 
                    } 
                    break; 
            } 
            echo $result; 
            break; 
    
        case 'TimerEvent': 
            $number = explode('#', IPS_GetName($_IPS['EVENT'])); 
            $number = $number[1]; 
            IPS_DeleteEvent($_IPS['EVENT']); 
            removeMessage($number, $fifo); 
            break; 
    
        case 'WebHook': 
            $result = 0; 
            switch ($_GET['action']) { 
                case 'remove': 
                  $number = isset($_GET['number']) ? $_GET['number'] : -1; 
                  if ($number > 0) { 
                      $result = removeMessage($number, $fifo); 
                  } 
                  break; 
                case 'switch': 
                  $page = isset($_GET['page']) ? $_GET['page'] : ''; 
                  if (is_string($page) && $page !='') { 
                      $result = switchPage($wfc, $page); 
                  } 
                  break; 
        } 
        echo $result; 
        break; 
    } 
    
    function removeAllMessages () 
    { 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
        $MessagesID = IPS_GetVariableIDByName('Meldungen', $ParentID); 
        $LastNumberID = IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 
    
        $ids = IPS_GetChildrenIDs($_IPS['SELF']); 
        foreach ($ids as $id) { 
            if (IPS_EventExists($id) && substr(IPS_GetName($id), 0, 16) == 'Remove Message #') { 
                IPS_DeleteEvent($id); 
            } 
        } 
        SetValueString($DataID, json_encode(array())); 
        SetValueString($MessagesID, 'Keine Meldungen vorhanden!'); 
        SetValueInteger($LastNumberID, 0); 
         
        return 1; 
    } 
    
    function removeTypes($type, $method)  
    { 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
         
        $result = 0; 
        $i = 0; 
        $j = 0; 
        $data = json_decode(GetValueString($DataID), true); 
        foreach($data as $dataid => $dataval) { 
            if($dataval['type'] == $type) { 
                if(removeMessage($dataid, $method)) $i++; 
                $j++; 
            } 
        } 
        if ($i == $j) $result = 1; 
        return $result; 
    } 
    
    function removeMessage($number, $method) 
    { 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
        $result = 0; 
        if (IPS_SemaphoreEnter($_IPS['SELF'].'DataUpdate', 2000)) { 
            $data = json_decode(GetValueString($DataID), true); 
            if (isset($data[$number])) { 
                unset($data[$number]); 
                $eventID = @IPS_GetEventIDByName('Remove Message #'.$number, $_IPS['SELF']); 
                if ($eventID !== false) { 
                    IPS_DeleteEvent($eventID); 
                } 
                SetValueString($DataID, json_encode($data)); 
                $result = 1; 
            } 
            else { 
                throwException('Could not remove message #'.$number.': Unknown message number!'); 
            } 
            IPS_SemaphoreLeave($_IPS['SELF'].'DataUpdate'); 
            renderData($data, $method); 
        } 
        else { 
            throwException('Could not remove message #'.$number.': Semaphore timeout!'); 
        } 
        return $result; 
    } 
    
    function addMessage ($text, $expires, $removable, $type, $image, $page, $method) 
    { 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
        $LastNumberID = IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 
        $number = 0; 
        if (IPS_SemaphoreEnter($_IPS['SELF'].'DataUpdate', 2000)) { 
            $data = json_decode(GetValueString($DataID), true); 
            if (!is_array($data)) { 
                $data = array(); 
            } 
            $number = GetValueInteger($LastNumberID) + 1; 
            $data[$number] = array('timestamp' => time(), 'text' => utf8_encode($text), 'expires' => $expires, 'removable' => $removable, 'type' => $type, 'image' => $image, 'page' => $page); 
            if ($expires > time()) { 
                $eventID = IPS_CreateEvent(1); 
                IPS_SetParent($eventID, $_IPS['SELF']); 
                IPS_SetName($eventID, 'Remove Message #'.$number); 
                IPS_SetEventCyclic($eventID, 1, 0, 0, 0, 0, 0); 
                if($expires == 0) { 
                    IPS_SetEventCyclicDateFrom($eventID, 0, 0, 0); 
                } else { 
                    IPS_SetEventCyclicDateFrom($eventID, (int)date('j',$expires), (int)date('n', $expires),  (int)date('Y', $expires));
                } 
                IPS_SetEventCyclicDateTo($eventID, 0, 0, 0); 
                 
                if($expires == 0) { 
                    IPS_SetEventCyclicTimeFrom($eventID, 0, 0, 0); 
                } else { 
                    IPS_SetEventCyclicTimeFrom($eventID, (int)date("H", $expires), (int)date("i", $expires), (int)date("s", $expires));
                } 
                IPS_SetEventCyclicTimeTo($eventID, 0, 0, 0); 
                IPS_SetEventActive($eventID, true); 
            } 
            SetValueString($DataID, json_encode($data)); 
            SetValueInteger($LastNumberID, $number); 
            IPS_SemaphoreLeave($_IPS['SELF'].'DataUpdate'); 
            renderData($data, $method); 
        } 
        else { 
            throwException('Could not add message: Semaphore timeout!'); 
        } 
        return $number; 
    } 
    
    function switchPage($wfc, $page) 
    { 
        $result = WFC_SwitchPage($wfc, $page); 
        return $result; 
    } 
    
    function install () 
    { 
        IPS_SetHidden($_IPS['SELF'], true); 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $instanceID = 0; 
        if (IPS_InstanceExists($ParentID)) { 
            $instance = IPS_GetInstance($ParentID); 
            if ($instance['ModuleInfo']['ModuleID'] == '{485D0419-BE97-4548-AA9C-C083EB82E61E}') { 
                $instanceID = $ParentID; 
            } 
        } 
        if ($instanceID == 0) { 
            $instanceID = IPS_CreateInstance('{485D0419-BE97-4548-AA9C-C083EB82E61E}'); 
            IPS_SetParent($instanceID, $ParentID); 
            IPS_SetName($instanceID, 'Meldungen'); 
            IPS_SetParent($_IPS['SELF'], $instanceID); 
            $ParentID = $instanceID; 
        } 
        $DataID = @IPS_GetVariableIDByName('Daten', $ParentID); 
        if ($DataID === false) { 
            $DataID = IPS_CreateVariable(3); 
            IPS_SetParent($DataID, $ParentID); 
            IPS_SetName($DataID, 'Daten'); 
        } 
        SetValueString($DataID, json_encode(array())); 
        $MessagesID = @IPS_GetVariableIDByName('Meldungen', $ParentID); 
        if ($MessagesID === false) { 
            $MessagesID = IPS_CreateVariable(3); 
            IPS_SetParent($MessagesID, $ParentID); 
            IPS_SetName($MessagesID, 'Meldungen'); 
            IPS_SetVariableCustomProfile($MessagesID, '~HTMLBox'); 
        } 
        SetValueString($MessagesID, 'Keine Meldungen vorhanden!'); 
        $LastNumberID = @IPS_GetVariableIDByName('letzte Meldungsnummer', $ParentID); 
        if ($LastNumberID === false) { 
            $LastNumberID = IPS_CreateVariable(1); 
            IPS_SetParent($LastNumberID, $ParentID); 
            IPS_SetName($LastNumberID, 'letzte Meldungsnummer'); 
        } 
        SetValueInteger($LastNumberID, 0); 
         
        $ids = IPS_GetChildrenIDs($_IPS['SELF']); 
        foreach ($ids as $id) { 
            if (IPS_EventExists($id) && substr(IPS_GetName($id), 0, 16) == 'Remove Message #') { 
                IPS_DeleteEvent($id); 
            } 
        } 
    } 
    
    function renderData ($data, $method) 
    { 
        $ParentID = IPS_GetParent($_IPS['SELF']); 
        $DataID = IPS_GetVariableIDByName('Daten', $ParentID); 
        $MessagesID = IPS_GetVariableIDByName('Meldungen', $ParentID); 
        // Etwas CSS und HTML 
        $style = ""; 
        $style = $style.'<style type="text/css">'; 
        $style = $style.'table.msg { width:100%; border-collapse: collapse; }'; 
        $style = $style.'td.fst { width: 12px; text-align:center; padding: 0px;  border-left: 0px solid rgba(255, 255, 255, 0.2); border-top: 0px solid rgba(255, 255, 255, 0.1); }'; 
        $style = $style.'td.mid { width: 5px; padding: 2px; border-top: 0px solid rgba(255, 255, 255, 0.1); }'; 
        $style = $style.'td.lst { padding: 3px;  border-right: 0px solid rgba(255, 255, 255, 0.2); border-top: 0px solid rgba(255, 255, 255, 0.1); }';
        $style = $style.'tr:last-child { border-bottom: 1px solid rgba(255, 255, 255, 0.2); }'; 
        $style = $style.'.blue { padding: 5px; color: rgb(255, 255, 255); background-color: rgb(0, 0, 255); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }'; 
        $style = $style.'.red { padding: 5px; color: rgb(255, 255, 255); background-color: rgb(255, 0, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }'; 
        $style = $style.'.green { padding: 5px; color: rgb(255, 255, 255); background-color: rgb(0, 255, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }'; 
        $style = $style.'.yellow { padding: 5px; color: rgb(255, 255, 255); background-color: rgb(255, 255, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }'; 
        $style = $style.'.orange { padding: 5px; color: rgb(255, 255, 255); background-color: rgb(255, 160, 0); background-image: linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -o-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -moz-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -webkit-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); background-image: -ms-linear-gradient(top,rgba(0,0,0,0) 0,rgba(0,0,0,0.3) 50%,rgba(0,0,0,0.3) 100%); }'; 
        $style = $style.'</style>'; 
        $content = $style; 
        $content = $content.'<table class="msg">'; 
    
    if (count($data) == 0) {   
        $content = $content.'<tr><td></td></tr>'; // Diese Zeile ersetzt die nächsten 5 und bewirkt, dass das Meldungsfenster leer bleibt, wenn keine Meldungen anstehen.  
            //$content = $content.'<tr>';  
            //$content = $content.'<td class="fst"><img src=\'img/icons/Ok.svg\'></img></td>';  
            //$content = $content.'<td class="mid">Keine Meldungen vorhanden!</td>';  
            //$content = $content.'<td class=\'lst\'><div class=\'green\' onclick=\'alert("Nachricht kann nicht bestätigt werden.");\'>OK</div></td>';  
            //$content = $content.'</tr>';  
        }   
        else {   
            foreach ($data as $number => $message) {  
                if ($message['type']) {  
                    switch ($message['type']) {   
                        case 3:   
                            $type = 'blue';  
                            break;  
                        case 2:   
                            $type = 'yellow';  
                            break;  
                        case 1:   
                            $type = 'red';  
                            break;  
                        default:  
                            $type = 'green';  
                            break;  
                    }  
                }  
                else {  
                    $type = 'green';  
                }   
                if ($message['image']) {   
                    $image = '<img src=\'img/icons/'.$message['image'].'.svg\'></img>';   
                }   
                else {   
                      $image = '<img src=\'img/icons/Ok.svg\'></img>';   
                }           
    
                $content .= '<tr>';   
                if ($message['removable']) {   
                    $content = $content.'<td class=\'fst\'><div class=\''.$type.'\' onclick="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'hook/remove?ts=\' + (new Date()).getTime() + \'&ScriptID='.$_IPS['SELF'].'&number='.$number.'\' }); "></div></td>'; // original: ">OK</div></td>';  
                }   
                else {   
                    $content = $content.'<td class=\'fst\'><div class=\''.$type.'\' onclick=\'alert("Nachricht kann nicht bestätigt werden.");\'>OK</div></td>';  
                }   
                $content = $content.'<td class="mid">'.$image.'</td>';  
    
                $content = $content.'<td class="lst">'.utf8_decode($message['text']).'</td>';  
                $content .= '</tr>';   
            }   
        }  
        $content = $content. '</table>';  
        SetValueString($MessagesID, $content);  
    } 
    
    function throwException($message) 
    { 
        IPS_LogMessage($_IPS['SELF'], $message); 
    } 
    ################################################################################ 
    
    
    ?>

    Geändert von cbeham (20.02.19 um 18:10 Uhr)
    KNX
    IPS @ Raspberry Pi3 - IPSStudio - Collibrico - Sonos

  10. #150
    Registriert seit
    May 2008
    Ort
    Forstern
    Beiträge
    928

    Moin,

    Zitat Zitat von cbeham Beitrag anzeigen
    Was nicht funktioniert ist First in Lastout (d.h. letzte Meldung soll ganz oben stehen)
    [COLOR=#000000][FONT=Consolas]$fifo = false; oder true; bringt keine Änderung
    Ja, das war noch ein Fehler in der v2.2

    Zitat Zitat von cbeham Beitrag anzeigen
    und die Buttons links sollten ein ganz klein wenig größer sein, damit man ordentlich draufklicken kann zum löschen der einzelnen Meldungen!

    und noch eine Bitte, da man im SkinLight die Icons sowieso nicht sehen kann, könnte man sie auch weglassen!?
    Was willst Du genau haben?

    Original Version => <ICON> <MESSAGE> <BUTTON>

    Deine Version=> <BUTTON> <MESSAGE>

    Richtig, also vorne Icon weg und dafür den Button?

    Zitat Zitat von cbeham Beitrag anzeigen
    und gerade noch etwas gefunden:
    wenn ich einen bestimmten typ löschen möchte, 0... Normal, löscht er auch immer 2 mit!
    $success = IPS_RunScriptWaitEx(19710, array('action' => 'removeType', 'type' => '0'));

    Den Typ nicht in Hochkomma stellen, also nicht '0' sondern nur 0!!!

    Melde Dich, dann schicke ich Dir eine Mail zum Testen und baue es dann alles in eine neue Version!

    Gruß Heiko
    SERVER: FritzBox 7490, Raspberry Pi 3, CCU2 und IP-Symcon V5.1 (Ninja) | SYSTEME: Amazon ECHOs, Apple TVs, Homematic/HmIP, LevelJet, Logitech Harmony, Pioneer AVR, Philips Hue, Samsung TV's, Somfy RFX, Apple & Android Handys & Tablets | MODULE: IPSymconAwido, IPSymconToolmatic, IPSymconAlmanac, SymconMHC | SKINS: WwxSkin

Ähnliche Themen

  1. Update und Webfront zerschossen
    Von Lukky im Forum WebFront
    Antworten: 2
    Letzter Beitrag: 10.09.10, 16:18
  2. Webfront reload Frage
    Von Matraaxel im Forum WebFront
    Antworten: 8
    Letzter Beitrag: 17.01.10, 17:03
  3. Umstellung V1 auf V2 mit Designer oder Webfront?
    Von hmpf99 im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 3
    Letzter Beitrag: 22.04.09, 20:51
  4. Antworten: 0
    Letzter Beitrag: 09.02.09, 23:59

Stichworte