0 votes
in SoSci Survey (dt.) by s264231 (120 points)

Hallo,

Ich möchte einen Timer in meine Studie einfügen, der während der Bearbeitung von 12 randomisert dargebotenen Aufgaben abläuft.
Da meine Randomisierung gestört wurde, wenn ich den Timer auf einer einzelnen leeren Seite im PHP-Code gestartet habe, muss ich ihn jetzt eine Seite zusammen mit der Randomisierung und dem Einleitungstext mit einfügen. (Ansonsten wurde nach Nachhaken dieselbe Aufgabe zwei Mal angezeigt)
Leider startet mein Timer jetzt während der Einleitung, aber er sollte erst mit der ersten Aufgabe (die danach angezeigt wird) beginnen. Als workaround, dachte ich der Timer könnte vielleicht durch den Weiter-Button aktiviert werden. Wie kann ich das in meinen Code mit einpflegen?

Code auf der Randomisierungs-/ Einleitungsseite:
// Einleitung
if(value('MZ01') == 1){

question('MZ02');

}elseif(value('MZ01') == 2){

question('MZ04');

}

// Seitenreihenfolge
if (!isset($seiten)) {

$DA = array('DA1', 'DA2', 'DA3', 'DA4', 'DA5', 'DA6', 'DA7', 'DA8');
shuffle($DA);
$DA = array_chunk($DA, 4);
$AG = array('AG1', 'AG2', 'AG3', 'AG4');
shuffle($AG);
$seiten = array_merge($DA[0], $AG, $DA[1]);
$seiten[] = 'MC'; //nachfolgende Seite
registerVariable($seiten);

}
setPageOrder($seiten);

// Timer
// Ablauf der Zeit als Variable $timeout speichern
if (!isset($timeout)) {

if(value('MZ01') == 1){
    $timeout = strtotime('+ 12 minutes'); //12
    registerVariable($timeout);
}

}

// Aufgabennummer
//$counter = 0;
registerVariable($counter);

Code auf den Aufgabenseiten:
// Filter: Zeit abgelaufen? --> nur bei Interventionsgruppen!
if(value('MZ01') == 1){

if (time() > $timeout) {
    goToPage('TIMERENDE');
}
$timeLeft = $timeout - time();
replace('%timeLeft%', $timeLeft);
text('Timeranzeige');

}

// Aufgabennummer anzeigen
if(getRoute() == 'next'){

$counter = $counter + 1;

}
replace('%zahl%', $counter);

Vielen Dank! :)

1 Answer

0 votes
by SoSci Survey (308k points)

Euin "Aktivieren" gibt es in der Form nicht - relevant ist beim Timer, der über mehrere Seiten läuft, eigentlich nur der Referenzwert. Das müsste bei Ihnen $timeout sein:

$timeout = strtotime('+ 12 minutes');
registerVariable($timeout);

Sie könnten einmal versuchen, diesen PHP-Code in die neue Funktion "Verarbeitung der Antworten mittels PHP" (unten auf der Seite bei "Fragebogen zusammenstellen) zu packen. Dieser Code wird beim Klick auf "Weiter" ausgeführt - ich bin allerdings nicht sicher, ob registerVariable() dort bereits funktioniert.

Falls nicht, könnten Sie die Verweidauer von der Seite, die Sie mittels caseTime() bekommen, einfach auf die Zeit draufrechnen - natürlich erst in den PHP-Schnipseln auf den einzelnen Seiten, auf denen Sie den Timer einbinden.

$timeout2 = $timeout + caseTime(5);
if (time() > $timeout2) {
    goToPage('TIMERENDE');
}
// u.s.w.
by s264231 (120 points)
Das erste hat funktioniert, vielen Dank!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...