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 = 60; // Der Teilnehmer hat 1 Minute (60 Sekunden) 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);
**Wichtig:** Falls Sie im Fragebogen mehrere, voneinander unabhängige Timer einsetzen möchten, müssen Sie die Variable ''$time0'' im PHP-Code jedes Mal anders benennen. Der Name der Variable muss auch im Befehl ''registerVariable()'' ausgetauscht werden -- insgesamt also 5 Mal.
Falls der Teilnehmer den Timer durch Neu-Laden oder Verwendung des "Zurück"-Knopfes neu starten darf, können Sie den PHP-Code auf eine Zeile reduzieren (nicht empfohlen). Diese Variante funktioniert allerdings nicht, wenn Sie den Timer über mehrere Seiten laufen lassen möchten.
replace('%remain%', 60); // Der Teilnehmer hat 60 Sekunden für die Bearbeitung
Für den eigentlichen Timer legen Sie im **Fragenkatalog** in einer Rubrik mit **Neuer Text** __oder__ unter **Textbausteine u. Beschriftung** einen neuen Textbaustein an.
Für die //Darstellung// legen Sie bitte "HTML-Code" fest. Fügen Sie anschließend folgenden Inhalt ein.
Einige Abschnitte im JavaScript sind als //optional// markiert. Diese Abschnitte kann man bei Bedarf einfach entfernen.
Nach dem Speichern ziehen Sie diesen Textbaustein direkt unter den PHP-Code auf die Fragebogen-Seite.
**Hinweis:** Wenn Sie nach Ablauf des Timers mittels ''alert()'' einen Hinweis anzeigen, so wird die Zeit bis zum Wegklicken des Hinweise in der Bearbeitungszeit im Datensatz auftauchen. Die gespeicherte Bearbeitungszeit liegt dann höher als der Timer tatsächlich für die Bearbeitung erlaubt.
Die Initialisierung der Weiterleitung wird erst durchgeführt, wenn die Fragebogen-Seite vollständig geladen wurde (''onload''). Das hat zwei Gründe: Zum einen wird die Ladezeit in der tatsächlichen Bearbeitungszeit berücksichtigt, zum anderen kann der Weiter-Knopf erst ausgeblendet werden, wenn die Seite vollständig geladen wurde.
**Hinweis:** Denken Sie daran, den Textbaustein mit dem JavaScript in die Fragebogenseite zu ziehen -- und zwar unter dem PHP-Code.
Unter dem PHP- und JavaScript-Code fügen Sie nun die Textbausteine und/oder Fragen ein, welche die Fragebogenseite zeigen soll. Die Platzierung unter dem PHP-Code ist wichtig, damit der Filter korrekt funktioniert, sollte die Zeit bereits abgelaufen sein.
**Mehrsprachige Versionen:** Sollten Sie verschiedene Sprachen für den Fragebogen verwenden, benutzen Sie das Übersetzungshilfe Tool (unter Sprachversionen) und kopieren Sie den Code für den Timer in die unterschiedlichen Sprachversionen.
===== Countdown anzeigen =====
Sie können dem Teilnehmer anzeigen, wie viel Zeit ihm noch zur Bearbeitung bleibt. Fügen Sie dafür auf der Fragebogen-Seite zunächst folgenden HTML-Code ein (entweder in einem Textbaustein, direkt in einer Frage oder via HTML-Code Element).
Verbleibende Zeit:
Zusätzlich müssen Sie den JavaScript-Code noch ein wenig ergänzen.
===== Timer über mehrere Seiten =====
Der obige Code -- egal ob mit oder ohne sichtbarem Countdown -- ist auch dafür geeignet, einen Timer über mehrere Seiten des Fragebogens laufen zu lassen. Sie dürfen nur nicht den "Weiter"-Knopf ausblenden. Entfernen Sie also ggf. folgende Zeilen aus dem JavaScript:
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
Den ''isset()''-Teil im PHP-Code können Sie auf den Folgeseiten weglassen, aber er stört auch nicht.
// Prüfung, ob die Zeit schon abgelaufen ist
$timer = 60; // Der Teilnehmer hat 1 Minute (60 Sekunden) 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);
Unter dem PHP-Code platzieren Sie auch auf der zweiten Seite den Textbaustein mit dem JavaScript und darunter die Fragen.
**Einschränkung:** Ladezeiten, die zwischen den Fragebogen-Seiten auftreten, werden dem Teilnehmer von der Bearbeitungszeit abgezogen. Umgekehrt bekommt der Teilnehmer durch Rundungsfehler maximal eine Sekunde zusätzlich geschenkt.