Hallo,
ich versuche zwei verschiedene Funktionen zu verbinden. Zum einen möchte ich bestimmte Fragen mittels der "Nicht zurücklegen" Methode rotieren lassen, aber auch sicherstellen, dass Partizipierende nach 30 Sekunden zur nächsten Frage gebracht werden.
Momentan habe ich auf meiner Fragebogenseite folgende Bausteine:
PHP-Code für den Timer
if (!isset($time0)) {
$time0 = time();
registerVariable($time0); // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 30; // Der Teilnehmer hat 30Sekunden Zeit zur Bearbeitung
if (time() >= $time0 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);
Java Script für den Timer:
<script type="text/javascript">
<!--
// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Zeit ist vorbei.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
</script>
Randomisierer Baustein
PHP-Code für den Randomisierer:
$fragen = valueList('MP14', NULL, 'label');
$kennung = loopPage($fragen);
question($kennung);
So wie ich verstehe, besteht das Problem darin, dass der Randomisierer die Seite nur aktualisiert mit einer neuen Frage und keine neue Seite erstellt, wieso der Timer nach 30 Sekunden dann zu der letzten Fragebogenseite leitet und nicht die nächste Frage aus dem Randomisierer darstellt.
Weiß jemand wie ich das beheben kann?