From d7e13d0098c1e35ea16e7cba79ca6f4508f501d0 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 1 Nov 2017 21:16:14 +0100 Subject: [PATCH] OO-3104: check if the value is identifier based and compare the 2 identifiers --- .../ui/components/AssessmentRenderFunctions.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java index 6e44dcd8a71..3199e9125f4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentRenderFunctions.java @@ -63,6 +63,7 @@ import uk.ac.ed.ph.jqtiplus.value.Cardinality; import uk.ac.ed.ph.jqtiplus.value.DurationValue; import uk.ac.ed.ph.jqtiplus.value.FileValue; import uk.ac.ed.ph.jqtiplus.value.FloatValue; +import uk.ac.ed.ph.jqtiplus.value.IdentifierValue; import uk.ac.ed.ph.jqtiplus.value.IntegerValue; import uk.ac.ed.ph.jqtiplus.value.ListValue; import uk.ac.ed.ph.jqtiplus.value.MultipleValue; @@ -132,12 +133,13 @@ public class AssessmentRenderFunctions { // or not(@templateIdentifier) // or (qw:value-contains(qw:get-template-value(@templateIdentifier), @identifier) and not(@showHide='hide'))])"/> public static boolean isVisible(Choice choice, ItemSessionState iSessionState) { - Value templateValue = choice.getTemplateIdentifier() == null ? null : iSessionState.getTemplateValue(choice.getTemplateIdentifier()); - - return choice.getTemplateIdentifier() != null - //TODO the check must be checked - || (templateValue != null && templateValue.toString().equals(choice.getIdentifier().toString())) - || choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH; + if(choice.getTemplateIdentifier() == null) return true; + + Value templateValue = iSessionState.getTemplateValue(choice.getTemplateIdentifier()); + boolean visible = templateValue instanceof IdentifierValue + && ((IdentifierValue)templateValue).identifierValue().equals(choice.getIdentifier()) + && choice.getVisibilityMode() != VisibilityMode.HIDE_IF_MATCH; + return visible; } //<xsl:if test="qw:is-invalid-response(@responseIdentifier)"> -- GitLab