Meldungsanzeige im WebFront

Du hast bestimmt den Parameter als $ts und nicht als $_GET[‚ts‘] abgefragt. Das ist aber seit PHP 5.4 zwingend erforderlich.

paresy

Hallo,

so sieht mein Script aus, dass durch den Klick auf OK ausgeführt werden sollte:

$ScrID = $_GET['ScriptID'];
isset($_GET['number']) ? $num = $_GET['number'] : $num = FALSE;
isset($_GET['action']) ? $act = $_GET['action'] : $act = FALSE;

if ($ScrID > 0 && $num >= 0)
{
    IPS_RunScriptWaitEx($ScrID, array('action' => 'remove', 'number' => $num));
}
if($ScrID > 0 && $act == 'removeRemovable') {
   IPS_RunScriptWaitEx($ScrID, array('action' => 'removeRemovable'));
}

ich verwende also $ts gar nicht

Kann jetzt im Moment auch keinen Fehler finden.

Workaround:

Trage in der removeMessage.php in der Zeile

    IPS_RunScriptWaitEx(50863, array('action' => 'remove', 'number' => $number) );

als ScriptID die ID des Hauptskriptes ein die die removeMessage.php startet.

Ist bei mir die 50863 und bei Dir mit Sicherheit eine andere.

Das seltsame ist das in $ScriptID und $numbers die korrekten Werte drin sind aber die ScriptID wird einfach nur hardcoded übernommen aber die $numbers funktioniert.

@paresy: Gibt es vielleicht einen Bug in IPS_RunScriptWaitEx das dieses keine Variablen mehr als ID annimmt?

paresy,

ist das Originalskript.

<?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 > 0 && $number >= 0)
{
    IPS_RunScriptWaitEx($ScriptID, array('action' => 'remove', 'number' => $number) );
}
?> 

ah, jetzt hab ichs:

IPS_RunScriptWaitEx((int)$ScrID, array('action' => 'remove', 'number' => $num));

$ScrID muss eine Integer-Variable sein.

bei mir funktionierts jetzt so :slight_smile:

Danke Christian,

das war es.

Über was man alles stolpern kann :smiley:

ja, mir ists auch nur aufgefallen, wie du geschrieben hast, die ID direkt eingegeben funktioniert.

Ich dachte ja, dass eben das Script gar nicht ausgeführt wird.

sind denn $_GET-Variablen nicht generell vom Typ String?

Anscheinend.

Na hoffentlich habe ich da nicht noch mehr solche Leichen begraben :rolleyes:

Die werden sich aber schon bemerkbar machen :slight_smile:

… hab den Post mal wieder gelöscht … funktioniert alles Wunderbar :slight_smile: Die Message IDs haben mich durcheinander gebracht.
Da ich immer die Scripts unter meiner Variablen stehen habe habe ich es nun so gelöst :

$instanz = IPS_GetParent($IPS_SELF);
IPS_RunScriptWaitEx(57086, array('action' => 'add', 'text' => $message, 'msgnum' => $instanz));

Cooles Teil :slight_smile: aber leider habe ich noch was zum meckern … die Bilder werden nicht mehr angezeigt, ich denke das hängt mit dem Update auf 3.0 zusammen.

Gruß

Hatte auch Probleme dass nach dem Update auf die 3.0 der OK-Button nicht mehr funktionierte und habe zuerst übersehen dass im Skript auf Seite 1 der folgende Teil aktualisiert wurd:

$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>'

Seit dem geht es wieder, nur die Icons werden wie schon angemerkt wurde nicht mehr angezeigt.

Gruß
Tobias

Hallo Leute,

aus irgendeinem Grund werden keine Icons mehr vor den Meldungen bei mir angezeigt. Ich vermute der Fehler liegt vielleicht hier:

if ($message['img']) {
                  //$cont_img = '<img src="data/icon.php?name='.$message['img'].'&theme=png" class="iconImage" />';
                  $cont_img = '<div class="ipsIcon'.$message['img'].'"></div>';
                } else {
                  $cont_img = ' ';
                }

Die Icons sind im Bereich der selbst Hinzugefügten. Kann mir jemand sagen, ob der Fehler tatsächlich hier liegt und wie ich es am Besten korrigiere?

Joachim

…kann mir vielleicht dann zumindest erklären, was diese Zeile bewirkt?

$cont_img = '<div class="ipsIcon'.$message['img'].'"></div>';

Joachim

…ich führe meinen Monolog mal weiter…

Ursprünglich war ja dieser Zeile aktiv:

$cont_img = '<img src="data/icon.php?name='.$message['img'].'&theme=png" class="iconImage" />';

Ich habe nun nach der Datei „icon.php“ gesucht und in der aktuellen Version ist sie nicht mehr vorhanden. In einer älteren Sicherheitskopie fand ich sie jedoch und habe sie wieder in den Data-Ordner kopiert - und siehe da, die Icons werden wir angezeigt.

Hat es einen Grund, dass diese Datei in der aktuellen Version nicht mehr vorhanden ist??

Irgendwann wurde das Skript ja in diesem Kontext geändert:

$cont_img = '<div class="ipsIcon'.$message['img'].'"></div>'; 

Auch dieser Version funktioniert ja nicht mehr…

Sofern also dem (Wieder)-Einsatz der icon.php im Data-Ordner nichts widerspricht, ist der Fehler erst einmal verschwunden…

Joachim

Gibt kein Problem damit, dass du die reinkopierst… Wir benötigen diese offiziell nicht mehr, deswegen funktionierte bei dir dieser „Trick“ nicht. Praktisch kopierst du aber die alten Icons auch mit :slight_smile: - Im neuen WebFront haben wir Icons durch eine WebFont ausgetauscht… Damit ist das WF auch für Retina-Displays toll :slight_smile:

Hast du deine Icons auch korrekt im Skin hinzugefügt? Dann sollte die ipsIcon-Sache laufen…

paresy

Hallo Paresy,

vielen Dank für Deine Antwort.

Du selbst hattest mir mal den Vorschlag mit der Änderung gemacht (irgendwo in dem ewig langen Thread zur Umstellung auf die V3.0) - da es nicht funktionierte (obwohl die Icons m.E. alle Teil des Webfont sind) und ich den Syntax der Zeile nicht selbst nachvollziehen konnte - habe ich mich entschlossen es erst einmal so zu belassen…:wink:

Joachim

Hallo in die Runde,

sorry das ich das Script noch mal rauskrame.
Jedoch es gefällt mir zur einfachen Anzeige von Nachrichten auf dem WebFront. :slight_smile:

Ich habe hier IPS in der 3.1 Version zu laufen.
Das Script selber funktioniert bis auf eine Stelle auch soweit wie es soll. Ich kann Nachrichten erzeugen und im Webfront bestätigen. Welche dann gelöscht werden.

Das Problem ist: Wenn ein Zeitpunkt mit übergeben wird, wo die Nachricht automatisch gelöscht werden soll gibt es eine (mir nicht erklärbare) Fehlermeldung, welche auch nicht nach einem Scriptfehler aussieht.

Ich habe auch schon mal ein bisschen mit der Timererstellung rumgespielt.
Mit dem alten Funktionsaufruf wird der Timer erstellt, mit dem neuen Funktionsaufruf leider nicht. Eventuell kommt auch da die Fehlermeldung irgendwo her.

Das kann ja nun nichts Großes mehr sein, so hoffe ich.

Ob da mal bitte jemand ein Blick drauf werfen könnte?

Vielen Dank,

Grüße
dzvo

… 8< …
ab ca Zeile 180


        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);

            IPS_SetEventCyclicDateBounds($eventID, mktime(0, 0, 0, date('n', $expires), date('j', $expires), date('Y', $expires)), 0);
            IPS_SetEventCyclicTimeBounds($eventID, mktime(date('H', $expires), date('i', $expires), date('s', $expires)), 0);

			#   IPS_SetEventCyclicDateTo($eventID,date("j",$expires),date("n",$expires),date("Y",$expires));
			#   IPS_SetEventCyclicTimeTo($eventID,date("H",$expires),date("i",$expires),date("s",$expires));

			#   IPS_SetEventCyclicDateTo($eventID,24,12,2014);
			#   IPS_SetEventCyclicTimeTo($eventID,12,0,0);

            IPS_SetEventActive($eventID, true);
        }

… >8 …

ips_meldung.JPG
ips_meldung1.JPG
ips_meldung2.JPG

wenn das mal nicht damit zusammenhängt: klick

@dzvo: Magst du mal die aktuelle 3.2er Beta gegentesten, ob dort der Fehler auch auftritt?

paresy

Hallo paresy,

habe mir mal nun die 3.2 installiert. Was soll ich sagen, es geht ohne Fehlermeldung im Frontend.

Die alten Befehle zum Erstellen der Timer auf anhieb, sowie die neuen Befehle mit etwas Überarbeitung:


IPS_SetEventCyclicDateFrom($eventID,intval(date("j",$expires)),intval(date("n",$expires)),intval(date("Y",$expires)));
IPS_SetEventCyclicTimeFrom($eventID,intval(date("H",$expires)),intval(date("i",$expires)),intval(date("s",$expires)));


Ich hoffe das hilft Dir weiter.

Grüße
dzvo

Hoi,

Ähm kann die Meldungen nicht mehr per Button löschen?
Hat sich da etwas geändert?

Hat sich erledigt.
Skript umgebaut auf Form Post.

Besten Dank,
Gruß
Manfred