+ Antworten
Seite 1 von 14 1 2 3 11 ... LetzteLetzte
Ergebnis 1 bis 10 von 139
  1. #1
    Registriert seit
    Aug 2008
    Ort
    Sereetz
    Beiträge
    1,649

    Post Meldungsanzeige im WebFront

    PHP-Code:
    <?php
    /*******************************************************************************************************************************

    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.


    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
    - Skript Ausführen


    Meldung durch ein anderes Skript hinzufügen lassen:
    ---------------------------------------------------

    $number = IPS_RunScriptWaitEx(12345, 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.


    Meldung durch ein anderes Skript löschen lassen:
    ------------------------------------------------

    $success = IPS_RunScriptWaitEx(12345, 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


    Alle vorhandenen Meldungen durch ein anderes Skript löschen lassen:
    -------------------------------------------------------------------

    $success = IPS_RunScriptWaitEx(12345, array('action' => 'removeAll'));
    Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0.

    *******************************************************************************************************************************/


    switch ($IPS_SENDER)
    {
        case 
    'Execute':
            
    install();
            break;
            
        case 
    'RunScript':
            
    $result 0;
            switch (
    $action)
            {
                case 
    'remove':
                    if (isset(
    $number) && $number 0)
                    {
                        
    $result removeMessage($number);
                    }
                    break;
                    
                case 
    'add':
                    if (!(isset(
    $expires) && $expires time())) { $expires 0; }
                    if (!(isset(
    $removable) && $removable === true)) { $removable false; }
                    if (isset(
    $text) && is_string($text) && $text != '')
                    {
                        
    $result addMessage($text$expires$removable);
                    }
                    break;
                    
                case 
    'removeAll':
                    
    $result removeAllMessages();
                    break;
            }
            echo 
    $result;
            break;
            
        case 
    'TimerEvent':
            
    $number explode('#'IPS_GetName($IPS_EVENT));
            
    $number $number[1];
            
    IPS_DeleteEvent($IPS_EVENT);
            
    removeMessage($number);
            break;
    }

    function 
    removeAllMessages ()
    {
        global 
    $IPS_SELF;
        
        
    $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), 016) == 'Remove Message #')
            {
                
    IPS_DeleteEvent($id);
            }
        }
        
        
    SetValueString($DataIDjson_encode(array()));
        
    SetValueString($MessagesID'Keine Meldungen vorhanden!');
        
    SetValueInteger($LastNumberID0);
        
        return 
    1;
    }

    function 
    removeMessage ($number)
    {
        global 
    $IPS_SELF;
        
        
    $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($DataIDjson_encode($data));
                
    $result 1;
            }
            else
            {
                
    throwException('Could not remove message #'.$number.': Unknown message number!');
            }
            
    IPS_SemaphoreLeave($IPS_SELF.'DataUpdate');
            
    renderData($data);
        }
        else
        {
            
    throwException('Could not remove message #'.$number.': Semaphore timeout!');
        }
        
        return 
    $result;
    }

    function 
    addMessage ($text$expires$removable)
    {
        global 
    $IPS_SELF;
        
        
    $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('text' => utf8_encode($text), 'expires' => $expires'removable' => $removable);
            if (
    $expires time())
            {
                
    $eventID IPS_CreateEvent(1);
                
    IPS_SetParent($eventID$IPS_SELF);
                
    IPS_SetName($eventID'Remove Message #'.$number);
                
    IPS_SetEventCyclic($eventID100000);
                
    IPS_SetEventCyclicDateBounds($eventIDmktime(000date('n'$expires), date('j'$expires), date('Y'$expires)), 0);
                
    IPS_SetEventCyclicTimeBounds($eventIDmktime(date('H'$expires), date('i'$expires), date('s'$expires)), 0);
                
    IPS_SetEventActive($eventIDtrue);
            }
            
    SetValueString($DataIDjson_encode($data));
            
    SetValueInteger($LastNumberID$number);
            
    IPS_SemaphoreLeave($IPS_SELF.'DataUpdate');
            
    renderData($data);
        }
        else
        {
            
    throwException('Could not add message: Semaphore timeout!');
        }
        
        return 
    $number;
    }

    function 
    install ()
    {
        global 
    $IPS_SELF;
        
        
    IPS_SetHidden($IPS_SELFtrue);
        
        
    $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($DataIDjson_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($LastNumberID0);
        
        
    $ids IPS_GetChildrenIDs($IPS_SELF);
        foreach (
    $ids as $id)
        {
            if (
    IPS_EventExists($id) && substr(IPS_GetName($id), 016) == 'Remove Message #')
            {
                
    IPS_DeleteEvent($id);
            }
        }
    }

    function 
    renderData ($data)
    {
        global 
    $IPS_SELF;
        
        
    $ParentID IPS_GetParent($IPS_SELF);
        
    $DataID IPS_GetVariableIDByName('Daten'$ParentID);
        
    $MessagesID IPS_GetVariableIDByName('Meldungen'$ParentID);
        
        
    $content "";
        
        if (
    count($data) == 0)
        {
            
    $content 'Keine Meldungen vorhanden!';
        }
        else
        {
            
    $content '<table style="width: 100%;"><tbody>';
            foreach (
    $data as $number => $message)
            {
                
    $content .= '<tr>';
                if (
    $message['removable'])
                {
                    
    $content .= '<td style="line-height: 25px;">'.utf8_decode($message['text']).'</td><td align="right"><div onclick="window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest();HTTP.open(\'GET\',o.url,true);HTTP.send();};window.xhrGet({ url: \'user/removeMessage.php?ts=\' + (new Date()).getTime() + \'&ScriptID='.$IPS_SELF.'&number='.$number.'\' });" style="border:1px solid #3B3B4D; margin:0px; padding:3px; text-align:center; width: 100px;">OK</div></td>';
                }
                else
                {
                    
    $content .= '<td style="line-height: 25px;" colspan="2">'.utf8_decode($message['text']).'</td>';
                }
                
    $content .= '</tr>';
            }
            
    $content .= '</tbody></table>';
        }
        
        
    SetValueString($MessagesID$content);
    }

    function 
    throwException ($message)
    {
        global 
    $IPS_SELF;
        
        
    IPS_LogMessage($IPS_SELF$message);
    }
    ?>
    PHP-Code:
    <?php
    /*******************************************************************************************************************************

    Meldungsanzeige im WebFront
    ===========================

    Dieses Skript ist Erforderlich, damit Meldungen per Klick im WebFront gelöscht werden können.
    Es ist unter IP-Symcon/webfront/user/removeMessage.php zu kopieren.

    *******************************************************************************************************************************/

    $ScriptID $_GET['ScriptID'];
    $number $_GET['number'];

    if (
    $ScriptID && $number >= 0)
    {
        
    IPS_RunScriptWaitEx((int)$ScriptID, array('action' => 'remove''number' => $number));
    }
    ?>
    Geändert von paresy (22.09.14 um 13:54 Uhr) Grund: dojo.xhrGet bzgl. Kompatibiltät ausgetauscht
    Horst

  2. #2
    Registriert seit
    Jan 2010
    Ort
    Regau, Österreich
    Beiträge
    370

    Guten Morgen!

    Nettes Script
    aber wenn ich eine Meldung durch ein anderes Script löschen will, brauch ich ja die Nummer dazu. muss ich diese also in eine extra Variable mitspeichern, oder wie finde ich sonst die Meldungsnummer zum löschen raus?
    Wär eventuell nicht schlecht, wenn man sich selber eine Nummer anlegen kann mit der man die Meldung löscht.
    noch was wäre nett, wenn wir schon bei wünsch dir was sind *g*:
    ein Bild mit angeben zb. Information.png, Warning.png .... und die dann in einer neuen Tabellenspalte vor dem Meldungstext mit anzeigen

  3. #3
    Registriert seit
    Jan 2010
    Ort
    Regau, Österreich
    Beiträge
    370

    hallo...
    hab mich heute ein bisschen ins Script eingelesen und gebastelt... und meine Wünsche sind alle erledigt

  4. #4
    Registriert seit
    Sep 2007
    Ort
    Daisendorf - Bodensee
    Beiträge
    946

    Na dann enthalt es uns doch nicht vor...
    HM per CCU2 + LAN-Adapter am RasPi | Youless | Hydreon RG-11 | SONOS 2xPlay:1, 1xPlay:5, 3xConnect:AMP | eBus

  5. #5
    Registriert seit
    Jan 2010
    Ort
    Regau, Österreich
    Beiträge
    370

    ups.. na klar *g*
    hier noch mal das abgeänderte Script:
    PHP-Code:
    <?php
    /*******************************************************************************************************************************

    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.


    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
    - Skript Ausführen


    Meldung durch ein anderes Skript hinzufügen lassen:
    ---------------------------------------------------

    $number = IPS_RunScriptWaitEx(xxxxx, 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.


    Meldung durch ein anderes Skript löschen lassen:
    ------------------------------------------------

    $success = IPS_RunScriptWaitEx(xxxxx, 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


    Alle vorhandenen Meldungen durch ein anderes Skript löschen lassen:
    -------------------------------------------------------------------

    $success = IPS_RunScriptWaitEx(xxxxx, array('action' => 'removeAll'));
    Bei erfolgreichem Löschen wird der Wert 1 zurückgegeben, bei Misserfolg der Wert 0.

    *******************************************************************************************************************************/


    switch ($IPS_SENDER)
    {
        case 
    'Execute':
            
    install();
            break;

        case 
    'RunScript':
            
    $result 0;
            switch (
    $action)
            {
                case 
    'remove':
                    if (isset(
    $number) && $number 0)
                    {
                        
    $result removeMessage($number);
                    }
                    break;
                    case 
    'rmMsgNum':
                    if (isset(
    $msgnum) && $msgnum 0)
                    {
                              
    $result removeMsgNum($msgnum);
                         }
                         break;

                case 
    'add':
                    if (!(isset(
    $expires) && $expires time())) { $expires 0; }
                    if (!(isset(
    $removable) && $removable === true)) { $removable false; }
                    if (!(isset(
    $msgnum) && $msgnum 0)) { $msgnum 0; }
                    if (!(isset(
    $img) && $img != '')) { $img ''; }
                    if (isset(
    $text) && is_string($text) && $text != '')
                    {
                        
    $result addMessage($text$expires$removable$msgnum$img);
                    }
                    break;

                case 
    'removeAll':
                    
    $result removeAllMessages();
                    break;
            }
            echo 
    $result;
            break;

        case 
    'TimerEvent':
            
    $number explode('#'IPS_GetName($IPS_EVENT));
            
    $number $number[1];
            
    IPS_DeleteEvent($IPS_EVENT);
            
    removeMessage($number);
            break;
    }

    function 
    removeAllMessages ()
    {
        global 
    $IPS_SELF;

        
    $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), 016) == 'Remove Message #')
            {
                
    IPS_DeleteEvent($id);
            }
        }

        
    SetValueString($DataIDjson_encode(array()));
        
    SetValueString($MessagesID'Keine Meldungen vorhanden!');
        
    SetValueInteger($LastNumberID0);

        return 
    1;
    }

    function 
    removeMsgNum($msgnum) {
    /* Loescht Meldungen anhand der Meldungsnummer, es werden dabei alle Meldungen mit der gleichen Nummer geloescht */
        
    global $IPS_SELF;

        
    $ParentID IPS_GetParent($IPS_SELF);
        
    $DataID IPS_GetVariableIDByName('Daten'$ParentID);

        
    $result 0;
         
    $i 0;
         
    $j 0;
        
    $data json_decode(GetValueString($DataID), true);
         
         if(!empty(
    $msgnum)) {
             foreach(
    $data as $dataid => $dataval) {
                  if(
    $dataval['msgnum'] == $msgnum) {
                    if(
    removeMessage($dataid)) $i++;
                    
    $j++;
                 }
              }
              if (
    $i == $j$result 1;
         }
      return 
    $result;
    }

    function 
    removeMessage ($number)
    {
        global 
    $IPS_SELF;

        
    $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($DataIDjson_encode($data));
                
    $result 1;
            }
            else
            {
                
    throwException('Could not remove message #'.$number.': Unknown message number!');
            }

            
    IPS_SemaphoreLeave($IPS_SELF.'DataUpdate');
            
    renderData($data);
        }
        else
        {
            
    throwException('Could not remove message #'.$number.': Semaphore timeout!');
        }

        return 
    $result;
    }

    function 
    addMessage ($text$expires$removable$msgnum$img)
    {
        global 
    $IPS_SELF;

        
    $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('text' => utf8_encode($text), 'expires' => $expires'removable' => $removable'msgnum' => $msgnum'img' => $img);
            if (
    $expires time())
            {
                
    $eventID IPS_CreateEvent(1);
                
    IPS_SetParent($eventID$IPS_SELF);
                
    IPS_SetName($eventID'Remove Message #'.$number);
                
    IPS_SetEventCyclic($eventID100000);
                
    IPS_SetEventCyclicDateBounds($eventIDmktime(000date('n'$expires), date('j'$expires), date('Y'$expires)), 0);
                
    IPS_SetEventCyclicTimeBounds($eventIDmktime(date('H'$expires), date('i'$expires), date('s'$expires)), 0);
                
    IPS_SetEventActive($eventIDtrue);
            }
            
    SetValueString($DataIDjson_encode($data));
            
    SetValueInteger($LastNumberID$number);
            
    IPS_SemaphoreLeave($IPS_SELF.'DataUpdate');
            
    renderData($data);
        }
        else
        {
            
    throwException('Could not add message: Semaphore timeout!');
        }

        return 
    $number;
    }

    function 
    install ()
    {
        global 
    $IPS_SELF;

        
    IPS_SetHidden($IPS_SELFtrue);

        
    $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($DataIDjson_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($LastNumberID0);

        
    $ids IPS_GetChildrenIDs($IPS_SELF);
        foreach (
    $ids as $id)
        {
            if (
    IPS_EventExists($id) && substr(IPS_GetName($id), 016) == 'Remove Message #')
            {
                
    IPS_DeleteEvent($id);
            }
        }
    }

    function 
    renderData ($data)
    {
        global 
    $IPS_SELF;

        
    $ParentID IPS_GetParent($IPS_SELF);
        
    $DataID IPS_GetVariableIDByName('Daten'$ParentID);
        
    $MessagesID IPS_GetVariableIDByName('Meldungen'$ParentID);

        
    $content "";

        if (
    count($data) == 0)
        {
            
    $content 'Keine Meldungen vorhanden!';
        }
        else
        {
            
    $content '<table style="width: 100%;"><tbody>';
            foreach (
    $data as $number => $message)
            {
                    if (
    $message['img']) {
                      
    $cont_img '<img src="data/icon.php?name='.$message['img'].'&theme=png" class="iconImage" />';
                    } else {
                      
    $cont_img '&nbsp;';
                    }
                
    $content .= '<tr>';
                if (
    $message['removable'])
                {
                    
    $content .= '<td style="width:20px;">'.$cont_img.'</td><td style="line-height: 25px;">'.utf8_decode($message['text']).'</td><td align="right"><div onclick="dojo.xhrGet({ url: \'user/removeMessage.php?ts=\' + (new Date()).getTime() + \'&ScriptID='.$IPS_SELF.'&number='.$number.'\' });" style="border:1px solid #3B3B4D; margin:0px; padding:3px; text-align:center; width: 100px;">OK</div></td>';
                }
                else
                {
                    
    $content .= '<td style="width:20px;">'.$cont_img.'</td><td style="line-height: 25px;" colspan="2">'.utf8_decode($message['text']).'</td>';
                }
                
    $content .= '</tr>';
            }
            
    $content .= '</tbody></table>';
        }

        
    SetValueString($MessagesID$content);
    }

    function 
    throwException ($message)
    {
        global 
    $IPS_SELF;

        
    IPS_LogMessage($IPS_SELF$message);
    }
    ?>
    ich habe bei der Funktion addMessage 2 Parameter hinzugefügt
    einmal $msgnum für eine Meldungsnummer und einmal $img ...
    Funktion renderData wurde fürs bild angepasst.
    eine neue Funktion dazugebastelt: removeMsgNum($msgnum)

    und oben im ersten Switch beim case RunScript einen neuen Case "rmMsgNum" zum löschen über die Meldungsnummer
    und den case "add" angepasst für die 2 Parameter

    eine Meldung wird erzeugt mit:
    IPS_RunScriptWaitEx(xxxxxx, array('action' => 'add', 'text' => 'Testmeldung ', 'expires' => time() + 0, 'removable' => true, 'msgnum' => 100, 'img' => 'Information'));

    und eine Meldung übers Script mittels Meldungsnummer löschen:
    IPS_RunScriptWaitEx(xxxxx, array('action' => 'rmMsgNum', 'msgnum' => 100));
    gibt true zurück wenn alle Meldungen mit der gleichen Nummer gelöscht worden sind

    hoffe man kennt sich ein bissal aus *g*

  6. #6
    Registriert seit
    Sep 2010
    Ort
    Emmerich
    Beiträge
    761

    Hallo Christian,

    kann man das so ändern, das wenn ich 2 mal die selbe Nummer sende, nur der Text des letzten sendens angeziegt wird. Also wenn die Nummer schon vorhanden ist, den ersten Text löschen und den zweiten anzeigen.

    Gruß Uwe
    Geändert von UH368 (15.11.10 um 00:47 Uhr)

  7. #7
    Registriert seit
    Jan 2010
    Ort
    Regau, Österreich
    Beiträge
    370

    Guten morgen!

    dazu müsstest du im Case "Add" einfach nur
    PHP-Code:
    removeMsgNum($msgnum); 
    hinzufügen
    bei mir in der Zeile 86...
    der ganze Case sieht dann so aus:
    PHP-Code:
    case 'add':
                    if (!(isset(
    $expires) && $expires time())) { $expires 0; }
                    if (!(isset(
    $removable) && $removable === true)) { $removable false; }
                    if (!(isset(
    $msgnum) && $msgnum 0)) { $msgnum 0; }
                    if (!(isset(
    $img) && $img != '')) { $img ''; }
                    if (isset(
    $text) && is_string($text) && $text != '')
                    {
                        
    removeMsgNum($msgnum);
                        
    $result addMessage($text$expires$removable$msgnum$img);
                    }
                    break; 

  8. #8
    Registriert seit
    Sep 2010
    Ort
    Emmerich
    Beiträge
    761

    Hallo Christian,

    danke für die Info, läuft gut.

    Was ich jetzt noch gesehen habe das die Variable "letzte Meldungsnummer" immer höher wird.

    Es wäre schön wenn man noch eine Variable hätte die angibt, das eine Meldung da ist.

    Gruß Uwe

  9. #9
    Registriert seit
    Jan 2010
    Ort
    Regau, Österreich
    Beiträge
    370

    man könnte sicher eine Variable anlegen und diese bei der Funktion addMessage hochzählen und bei der Funktion removeMessage runterzählen lassen
    bei der Funktion removeAllMessages dann einfach auf 0 setzen

  10. #10
    Registriert seit
    Sep 2010
    Ort
    Emmerich
    Beiträge
    761

    Gemeint war, so bald überhaupt eine Meldung da ist, eine Variable auf "true" setzten. Um irgendeine weiter Aktion auszuführen.

    Wenn ich mir deine Skriptänderung mal ansehe, ist ja einiges vom original Skript über oder ? Kannst du mal eine bereinigtes Skript hier einstellen.

    Gruß Uwe

Ä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