Daten schreibgeschützt anzeigen

Es kommt vor, dass die Antwort auf eine Frage dem Benutzer in einer Form angezeigt werden muss, die sich nicht verändern lässt. Auf den Zusammenfassungsseiten, wo der Benutzer seine Antworten überprüfen und die Schaltfläche "Zurück" bzw. Bearbeitungslinks zum Ändern verwenden kann, ist dies bereits der Fall.

Auf einer Fragenseite kann ein schreibgeschütztes boolesches Attribut auf "true" gesetzt werden, um anzuzeigen, dass alle auf der Seite angezeigten Fragen nicht bearbeitbar sind.

Es existiert auch ein weiterführender Mechanismus: Attribute für Read-only-Ausdrücke können für verschiedene Scriptelemente (Sektionen, alle Seitentypen, Cluster, Fragen und Listenfragen) verwendet werden. Wird der Ausdruck mit "true" bewertet, so wird er auf alle im Element enthaltenen Fragen angewendet. Im einfachsten Fall ist der Ausdruck "true", wenn das Element in jedem Fall schreibgeschützt sein muss. Für eine Zusammenfassungsseite bedeutet das, dass die Links zum Hinzufügen, Bearbeiten und Löschen nicht angezeigt werden.

Wenn für die Scriptelemente Cluster, Fragen und Listenfragen ein Read-only-Ausdruck definiert ist und sich eine der im Ausdruck referenzierten Fragen auf derselben Seite wie das Scriptelement befindet, wird das Scriptelement dynamisch aktiviert oder inaktiviert und ist nicht mehr nur schreibgeschützt. Das heißt, dass Fragen aktiviert oder inaktiviert werden, je nachdem, wie der Benutzer Antworten auf andere Fragen dieser Seite verändert. An Stellen, wo der Read-only-Ausdruck eines Clusters eine Frage auf derselben Seite referenziert, werden alle im Cluster enthaltenen Fragen aktiviert bzw. inaktiviert. Dieses dynamische IEG-Feature erfordert, dass JavaScript im Browser aktiviert ist. Da die Ausdrücke ohne Serveraufruf bewertet werden, kann es vorkommen, dass die Ausdrücke zum dynamischen Aktivieren und Inaktivieren von Fragen nicht auf angepasste Funktionen verweisen.

Dynamische Read-only-Ausdrücke können auf Fragen derselben Seite verweisen, die ihrerseits dynamisch aktiviert und inaktiviert werden. Dies bewirkt eine kaskadierende Abhängigkeit zwischen den Fragen. Beim Definieren von Ausdrücken mit kaskadierenden Abhängigkeiten sollte man vorsichtig sein, denn in IEG wird nicht berücksichtigt, ob die Fragen, auf die im Read-only-Ausdruck verwiesen wird, aktiviert sind oder nicht, sondern nur der Wert der Frage. Das kann für den Benutzer verwirrend sein, weil nicht immer ersichtlich ist, wodurch das Aktivieren und Inaktivieren einer Frage gesteuert wird.

Wenn beim Anzeigen einer Frage das entsprechende DS-Attribut einen Wert besitzt, so wird dieser angezeigt, selbst wenn die Frage anfangs inaktiviert ist. Daraufhin kann der Benutzer die Frage aktivieren und Änderungen an der Antwort vornehmen. Wird die Frage inaktiviert, fällt ihr Wert zurück auf den Wert, der anfänglich für die Frage angezeigt wurde. Nachdem eine Seite abgeschickt ist, wird das DS-Attribut erst dann aktualisiert, wenn die Frage aktiviert wird. Deshalb wird beim wiederholten Anzeigen der Seite wieder der ursprüngliche Wert des DS-Attributs angezeigt.

Wenn die Frage für sich selbst oder eines ihrer übergeordneten Elemente einen dynamischen Read-only-Ausdruck besitzt, ist es nicht möglich, sie als obligatorisch zu markieren.

Das dynamische Aktivieren oder Inaktivieren von Scriptelementen wird auf Beziehungsseiten nicht unterstützt.

Die in Schleifen erfassten Informationen können in Form von Listen auf den Zusammenfassungsseiten angezeigt werden. Es ist aber auch möglich, dieses Listenkonstrukt auf regulären Seiten zu verwenden, ohne einen Read-only-Ausdruck in einem der Elemente angeben zu müssen, die die Liste umgeben. Der einzige Unterschied bei Zusammenfassungslisten besteht darin, dass keine Links zulässig sind.

Eine andere Möglichkeit besteht darin, das gesamte Script auf schreibgeschützt zu setzen. Das ist zum Beispiel dann hilfreich, wenn ein Fallbearbeiter ein Script überprüfen muss, ohne eine der Antworten verändern zu können. Das Script wird mithilfe der IEG-Laufzeit-API durch Setzen eines Schreibschutzanzeigers in der Scriptausführung gesetzt, wie im Folgenden beschrieben:

Abbildung 1. Schreibschutzanzeiger auf eine Scriptausführung setzen
...
//Set read only flag.
IEGRuntime runtimeAPI = new IEGRuntime();
IEGScriptExecutionID runtimeExecID = new IEGScriptExecutionID();
runtimeExecID.executionID = execution.getExecutionID();
IEGReadOnlyFlag readOnlyFlag = new IEGReadOnlyFlag();
readOnlyFlag.readOnlyFlag = true;
runtimeAPI.setReadOnlyFlag(runtimeExecID, readOnlyFlag);
...