Skript über html Link starten

Ich würde gerne ein bestimmtest Skript über einen Link im Webfront starten. Der Link wird dynamisch in einer HTML-Box erzeugt und hat einen sich verändernden Parameter (ID der Zeile).
Soweit ich das bisher gefunden habe, sollte das gehen. Nu das „wie“ fehlt mir noch.
Und die Frage ist dann noch, wie bekomme ich dann den Wert der Übergabe in das aufgerufene Skrip.

Schau Dir mal das Thema „Webhook“ an, damit sollte es gehen!

Stichwort ist webhook, dort kannst du ein Script anhängen, das da deine Aktivitäten ausführen kann.

:slight_smile:

Gut, vielen Dank. Das funktioniert schon mal Parameter kommt auch. perfekt. Aber, nach dem anklicken bekomm ich eine leere Seite und in der Adresszeile steht oben, nona, der von mir angeklickte Link. Wie sag ich ihm, dass er praktisch nur einen screen refresh machen soll bzw. wieder auf der zuvor aufgerufenen Seite landen soll?

Im Moment noch eine Krücke

header("Location:".$_SERVER['HTTP_REFERER']."#17134",true); 

Funktoniert, aber der Browser lädt die ganze Seite neu.Und das funktioniert halt nur im Webfront. In der Mobilen Version wird das sicher nicht hinhauen.

Schreib doch mal was Du genau machen möchtest! Was bewirkt der Link und warum auf die selbe Seite? Generell Web-Seite im Users-Ordner oder HTMLBox?

Gruß Heiko

Ok, es geht darum, dass ich vom ICO (Poolmesser) Nachrichten in json Format bekomme die ich in einer HTML-Box als eine Tabelle aufbereite. Zu jeder Nachricht gibt es eine ID, mit der man diese Nachricht bestätigen kann.
Somit dachte sich der kleine Helmut, ich bastel einen Link in der Box, der mir ein bestimmtest Skript startet. In diesem Skript wird mit der Funktion der Instanz die Meldung bestätigt und dann die HTML Box wieder neu aufgebaut. Damit dann diese Meldung, die ich bestätigt habe, verschwindet. Das war der Plan. Somit sollte eigentlich nur die HTML Box mit den aktuellen unbestätigten Meldungen aktualisiert werden.

Mein Konstrukt sieht derweil so aus

<?php

//Start writing your code here
$WebHookID="";
$WebHookID=$_GET["ID"];
if($WebHookID != "")
{
    ONDILO_ValidateRecommendation(15799,$WebHookID);
    header("Location:".$_SERVER['HTTP_REFERER']."#17134",true); 
}

$Empfehlung=json_decode(ONDILO_GetListActiveRecommendations(15799),true);
$Anzahl = count($Empfehlung)-1;
$Empfehlung_HTML="<table style=\"width:100%\">";
$Empfehlung_HTML = $Empfehlung_HTML."<tr><th>Titel</th><th>Nachricht</th><th>Erstellt</th><th>Status</th><th>Bestätigen</th></tr>";
for ($i=0;$i<=$Anzahl;$i++)
{
    $Empfehlung_HTML = $Empfehlung_HTML."<tr>";
    $Empfehlung_HTML = $Empfehlung_HTML."
                        <td>".$Empfehlung[$i]["title"]."</td>"."
                        <td>".$Empfehlung[$i]["message"]."</td>"."
                        <td>".$Empfehlung[$i]["created_at"]."</td>"."
                        <td>".$Empfehlung[$i]["status"]."</td>"."
                        <td><a href=\"/hook/ICOValidieren?ID=".$Empfehlung[$i]["id"]."\">Ok</a>".
                        "</td>";
    $Empfehlung_HTML = $Empfehlung_HTML."</tr>";
}
$Empfehlung_HTML = $Empfehlung_HTML."</table>";
SetValue(49458,$Empfehlung_HTML);

Wenn das Skript über den Link gestartet wird, fürht es die Funktion ONDILO_ValidateRecommendation aus und baut dann die Box neu auf. Das Skript wird auch innerhalb von IPS jede Stunde aufgerufen. Dann ist die Variable $WebHookID natürlich leer und es wird nur die Box neu aufgebaut.

Ich hoffe ich habe sämtliche Unklarheiten beseitigt.

Wobei, mir ist gerade ein anderer Lösungsansatz eingefallen. Wäre aber sehr kompliziert:

  • ich erstelle statt der HTML Box dynamisch Variablen für jede Medung. Im Minimum zwei. Eine für die ID und die zweite für den Text. Oder halt mehr. der Name enthält als Prefix die ID der Meldung
  • Zu jeder Meldungszeile braucht es einen Button zum Bestätigen. der muss natürich auch dynamisch erstellt werden.
  • wird eine Meldung bestätigt, werden die dazugehörigen Variablen aus der Objektverwaltung gelöscht.

Das sollte mit den vorhandenen Funktionen machbar sein, ist aber schon sehr aufwendig.

Hallo Helmut,

also ich würde alles in ein Script packen und anhand des "SENDER"s entsprechend reagieren


// INSTALLATION bzw. DRIEKTES AUSFÜHREN
if ($_IPS['SENDER']=='Execute') {
	// ToDo
}
// WEBFRONT
else if($_IPS['SENDER'] == 'WebFront') {
    // Benutzer hat etwas geändert!
}
// VARIABLENAENDERUNG
else if($_IPS['SENDER'] == 'Variable') {
    // ToDo?
}
// TIMER EVENT
else if($_IPS['SENDER'] == "TimerEvent") {
	// Zeit ist wieder mal rum
}
// AUFRUF WEBHOOK
else if($_IPS['SENDER'] == 'WebHook') {
	// ToDo
}

Damit kannst Du dann je nach Art des Aufrufes reagieren!

Den Webhook würde ich per Javascript ausführen, somit erfolg kein direkter Reload :wink:



<script>
function Confirm(msg) {
    window.xhrGet=function xhrGet(o) {var HTTP = new XMLHttpRequest(); HTTP.open('GET',o.url,true);HTTP.send(); }; window.xhrGet({ url: 'hook/pool?action='+msg });
}
</script>
<div class="center">
  <div onclick="Confirm(2)">Meldung</div>
</div>

Das mal nur so aus der Hüfte!

Gruß Heiko

Werde ich mir anschauen. Und wo bau ich das Java ein? In die HTML Box?

Der 2.Teil ist kein Java sondern JavaScript und gehört mit ins HTML, welches dann in der HTMLBox gerendert wird!

Gruß Heiko

Sorry :wink:
Ah ja. Und es ist bereits immer alles in einem Skript gewesen. Halt ohne die elegante Abfrage.
Danke! :smiley:

Leider wird das Wetter schlecht. Gott sei dank ist die Meldung gekommen und dein Ansatz mit JavaScript funktioniert perfekt. Vieln Dank!