Unipark Forum

Unipark Forum (http://forum.unipark.info/forum/index.php)
-   Tutorials (http://forum.unipark.info/forum/forumdisplay.php?f=318)
-   -   Nach Ablauf einer gewissen Zeit eine Aktion auslösen (http://forum.unipark.info/forum/showthread.php?t=14069)

JensL 10.06.2014 17:56

Nach Ablauf einer gewissen Zeit eine Aktion auslösen
 
Primär relevant war diese Umsetzung bisher in der Variante, dass die Bearbeitungszeit eines gewissen Abschnitts des Fragebogens zeitlich begrenzt werden soll, prinzipiell könnte man die gleiche Funktion aber auch für andere Zwecke einsetzen, bei denen Zeitmessung relevant ist.

Vorneweg gilt es zwei Dinge festzuhalten:

1. Wenn es nur um den Absendezeitpunkt, oder die Zugriffszeiten geht, so bietet der Export mit den Variablen wie den rts_Variablen, date_of_last_access etc. hinreichende Informationen und man kann sich unnötige Arbeitsschritte sparen. Näheres hierzu findet Ihr im Handbuch unter "14.8.1 Übersicht über die Variablen"

2. Die Interaktion im Verhältnis zu den errechneten Zeitwerten wird (größtenteils) nicht in Echtzeit erfolgen, sondern erst beim Absenden einer Seite. Für eine Echtzeit-Reaktion (bspw. nach genau 2 Minuten soll ein Popup Fenster geöffnet werden) müsste man JavaScript einsetzen. Da es sich dabei aber um eine eigenständige, umfangreiche Programmiersprache handelt, können wir dafür leider keinen Support leisten.

Nun zu den Umsetzungsmöglichkeiten:

A) Der Zeitrahmen erstreckt sich über mehrere Seiten:

Hierfür lässt sich der aktuelle Unix-Zeitstempel ( de.wikipedia.org/wiki/Unixzeit ) in einer Variable speichern. Dazu müsst Ihr folgende Schritte unternehmen:

1. zwei benutzerdefinierte Variablen anlegen
2. einen Rekodierungstrigger am Anfang des zu messenden Abschnitts anlegen der die erste der beiden zuvor angelegten Variablen mit dem Wert UNIX_TIMESTAMP() beschreibt

Das weitere Vorgehen sieht dann so aus, dass man auf jeder Seite erneut UNIX_TIMESTAMP() in die zweite angelegte Variable rekodiert und dann die erste Variable von der zweiten subtrahiert, um mit der daraus resultierenden Differenz in Sekunden weiter zu arbeiten.

Dies kann direkt in der Bedingung eines Triggers geschehen
(#c_000y# - #c_000x#) > X
oder in einem Rekodierungstrigger, der die Differenz in eine dritte Variable schreibt.

So kann man dann bspw. einen Pagetrigger verwenden, um nach Überschreiten der vorgesehenen Zeit aus dem entsprechenden Bereich des Fragebogens zu leiten.

B) Der Zeitrahmen bezieht sich auf die Bearbeitung einer einzelnen Seite:

Die einfache Variante wäre, in den Seiteneigenschaften der betroffenen Seite einzustellen, dass die Seite automatisch nach X Sekunden abgesendet wird.

Manchmal reichen allerdings die angebotenen Zeitvorgaben nicht aus, dann kann man sich behelfen, indem man auf der Seite folgenden JavaScript-Code eingibt
Code:

<script type="text/javascript">
setInterval(function(){ document.getElementById('os').click(); }, 5000);
</script>

5000 gibt in dem Beispiel die Sekundenanzahl an.

Bitte beachtet was ich weiter oben zu JavaScript geschrieben habe. U.u. kann es, damit man dies einfügen kann außerdem notwendig sein, den Rich-Text-Editor zu aktivieren. Die entsprechende Option findet Ihr unter Optionen -> Persönliche Einstellungen -> Verhalten des Fragebogen-Editors.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.