Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:create:functions:buttontopage [14.03.2019 12:54] leinerde:create:functions:buttontopage [05.08.2021 14:44] – [Optionale Seiten] admin
Zeile 195: Zeile 195:
 ); );
 </code> </code>
 +
 +
 +===== Optionale Seiten =====
 +
 +Eine weitere Anwendung von ''buttonToPage()'' besteht darin, dass man optionale Seiten oder Abschnitte im Fragebogen realisieren kann. So könnte eine [[:de:create:consent|informierte Einwilligung]] zunächst nur die Kurzfassung der Informationen präsentieren und per Klick auf den Knopf "Vollständige Informationen" gelangt man auf eine Seite, welche die detaillierte Darstellung beinhaltet.
 +
 +In der praktichen Umsetzung würde man die Seite mit der vollständigen Information überspringen, wenn die befragte Person nur auf "Weiter" klickt. Man hätte also folgende Seiten:
 +
 +  * Seite 1 mit der Kurzfassung
 +  * Seite 2 ("details") mit der detaillierten Information
 +  * Seite 3 ("start") auf welcher der eigentliche Fragebogen beginnt
 +
 +Der PHP-Code würde nun den Platzhalter ''%details%'' mit einem Knopf zur Seite 2 belegen, während ''[[:de:create:functions:setnextpage]]'' dafür sorgt, dass der "Weiter"-Knopf zur Seite 3 führt.
 +
 +<code php>
 +buttonCode('details', 'Vollständige Informationen', '%details%');
 +setNextPage('start');
 +</code>
 +
 +Dieser PHP-Code wird auf Seite 1 platziert, darunter der Text mit der Kurzfasssung, welche an geeigneter Stellen den Platzhalter ''%details%'' verwendet.
 +
 +Umgekehrt kann ''buttonToPage()'' natürlich auch verwendet werden, damit Befragte einen Abschnitt überspringen können, den sie nicht beantworten möchten. Wenn die Relevanz eines Abschnitts aus den bisherigen Fragen hervor geht, ist eine [[:de:create:filters|Filterfrage]] in aller Regel aber die bessere Lösung.
 +
 +Weiterhin sei auf die Funktion ''[[:de:create:functions:textlink]]'' verwiesen, welche einen umfangreichen Informationstext in einem Pop-Up-Fenster anzeigt.
 +
 +===== JavaScript =====
 +
 +Die Funktion ''buttonToPage()'' liefert einen Knopf, dessen aussehen mittels CSS auch angepasst werden kann. Aber im Prinzip ist auch möglich, das Verhalten mit anderen HTML-Elementen zu verknüpfen.
 +
 +Damit der Fragebogen den Sprungbefehl entgegennimmt, muss der ''buttonToPage()'' Befehl zunächst einmal mit dem gewünschten Sprungziel aufgerufen werden.
 +
 +<code php>
 +buttonToPage('pageID');
 +</code>
 +
 +Weiterhin ist eine JavaScript-Funktion erforderlich, welche die passenden Daten in die Fragebogen-Seite schreibt und anschließend die Seite mittels "Weiter" abschickt. Diese ist im folgenden HTML-Code definiert. Zusätzlich wird dort ein normaler Links mittels ''<a>'' definiert und die Funktion mittels ''addEventListener()'' (ganz am Ende) an diesen Link gekoppelt. Der zweite Event-Listener für ''"contextmenu"'' fängt einen Rechtsklick ab.
 +
 +<code html>
 +<a id="submitLink" href="https://www.soscisurvey.de">www.soscisurvey.de</a>
 +
 +<script type="text/javascript">
 +function goButton(evt) {
 +  var field = document.createElement("input");
 +  field.setAttribute("type", "hidden");
 +  field.setAttribute("name", "submitGo");
 +  field.setAttribute("value", "pageID");  // Enter the appropriate page ID here!
 +  // Apppend the hidden input to the questionnaire form
 +  var form = SoSciTools.getForm();
 +  form.appendChild(field);
 +  // Submit the page
 +  SoSciTools.submitPage();
 +  // Do not follow the original link
 +  evt.preventDefault();
 +  return false;
 +}
 +
 +// Change the behavior of the link
 +document.getElementById("submitLink").addEventListener("click", goButton);
 +document.getElementById("submitLink").addEventListener("contextmenu", goButton);
 +</script>
 +</code>
 +
 +Die Seiten-Kennung, welche in der JavaScript-Funktion in das Formularfeld geschrieben wird, muss dieselbe sein wie im vorigen Aufruf von ''buttonToPage()'' und beide Inhalte (PHP-Code und HTML-Code) müssen auf derselben Fragebogen-Seite stehen.
 +
 +Wenn man nun auf den Link klickt, wird der Klick so ungeleitet, als hätte man auf den Knopf zur Seite "pageID" geklickt.
 +
 +**Hinweis:** Einige Browser sperren womöglich das Abfangen des Rechtsklicks - es kann also durchaus passieren, dass Nutzer über Rechtsklick -> //auf neuer Seite öffnen// direkt auf die verlinkte Seite gelangen.
de/create/functions/buttontopage.txt · Zuletzt geändert: 25.09.2021 21:09 von admin
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 4.0 International
Driven by DokuWiki