Search in sources :

Example 6 with Output

use of org.olat.ims.qti.container.Output in project openolat by klemens.

the class SequentialItemNavigator method submitItems.

/**
 * @see org.olat.ims.qti.navigator.Navigator#submitItems(org.olat.ims.qti.container.ItemsInput)
 */
public void submitItems(ItemsInput curitsinp) {
    clearInfo();
    AssessmentContext ac = getAssessmentContext();
    SectionContext sc = ac.getCurrentSectionContext();
    int st = submitOneItem(curitsinp);
    if (st != QTIConstants.ITEM_SUBMITTED) {
        // item or assessment-finished-text
        if (st == QTIConstants.ERROR_SUBMITTEDITEM_TOOMANYATTEMPTS) {
            throw new RuntimeException("import check failed: there was a maxattempts in a item, but mode is sequential/item");
        } else if (st == QTIConstants.ERROR_ASSESSMENT_OUTOFTIME) {
            getInfo().setError(st);
            getInfo().setRenderItems(false);
        } else if (st == QTIConstants.ERROR_SUBMITTEDITEM_OUTOFTIME) {
            getInfo().setError(st);
            // still continue to next item
            getInfo().setRenderItems(true);
        }
    } else {
        // ok, display feedback
        ItemContext itc = getAssessmentContext().getCurrentSectionContext().getCurrentItemContext();
        Output outp = itc.getOutput();
        if (outp != null)
            getInfo().setCurrentOutput(outp);
        // check on item feedback
        if (itc.isFeedback()) {
            // feedback allowed
            getInfo().setFeedback(itc.getOutput().hasItem_Responses());
        }
        getInfo().setMessage(QTIConstants.MESSAGE_ITEM_SUBMITTED);
        getInfo().setRenderItems(true);
    }
    // find next item
    int itpos = sc.getCurrentItemContextPos();
    if (itpos < sc.getItemContextCount() - 1 && sc.isOpen()) {
        // there are still further items in the current section
        sc.setCurrentItemContextPos(++itpos);
        sc.getCurrentItemContext().start();
    } else {
        // fetch next section
        if (!sc.isOpen()) {
            getInfo().setError(QTIConstants.ERROR_SECTION_OUTOFTIME);
            getInfo().setRenderItems(true);
        }
        ac.getCurrentSectionContext().sectionWasSubmitted();
        int secPos = ac.getCurrentSectionContextPos();
        int secPosMax = ac.getSectionContextCount() - 1;
        if (!ac.isOpen()) {
            getInfo().setError(QTIConstants.ERROR_ASSESSMENT_OUTOFTIME);
            getInfo().setRenderItems(false);
            submitAssessment();
        } else if (secPos == secPosMax)
            submitAssessment();
        else {
            while (secPos < secPosMax) {
                // there are still further section(s)
                secPos++;
                if (ac.getSectionContext(secPos).getItemContextCount() != 0)
                    break;
            }
            if (secPos == secPosMax && ac.getSectionContext(secPos).getItemContextCount() == 0) {
                // reached last section but section is empty -> finish assessment
                submitAssessment();
            } else {
                ac.setCurrentSectionContextPos(secPos);
                ac.getCurrentSectionContext().setCurrentItemContextPos(0);
                ac.getCurrentSectionContext().start();
                ac.getCurrentSectionContext().getCurrentItemContext().start();
                // since new section starts, show next the section title and description
                getInfo().setRenderItems(false);
            }
        }
    }
    getAssessmentInstance().persist();
}
Also used : SectionContext(org.olat.ims.qti.container.SectionContext) AssessmentContext(org.olat.ims.qti.container.AssessmentContext) ItemContext(org.olat.ims.qti.container.ItemContext) Output(org.olat.ims.qti.container.Output)

Example 7 with Output

use of org.olat.ims.qti.container.Output in project OpenOLAT by OpenOLAT.

the class DefaultNavigator method submitAssessment.

/**
 * @see org.olat.qti.process.Navigator#submitAssessment()
 */
public final void submitAssessment() {
    Output pendingOutput = null;
    boolean pendingFeedback = getInfo().isFeedback();
    boolean alreadyClosed = getAssessmentInstance().isClosed();
    if (pendingFeedback && getAssessmentInstance().getAssessmentContext().getCurrentSectionContext() != null) {
        ItemContext itc = getAssessmentInstance().getAssessmentContext().getCurrentSectionContext().getCurrentItemContext();
        pendingOutput = itc.getOutput();
    }
    getAssessmentInstance().stop();
    if (!getAssessmentInstance().isPreview() && !alreadyClosed) {
        CoreSpringFactory.getImpl(IQManager.class).persistResults(getAssessmentInstance());
    }
    AssessmentContext ac = getAssessmentContext();
    info.clear();
    if (ac.isFeedbackavailable()) {
        Output outp = ac.getOutput();
        getInfo().setCurrentOutput(outp);
        getInfo().setFeedback(true);
    } else if (pendingFeedback) {
        getInfo().setCurrentOutput(pendingOutput);
        getInfo().setFeedback(true);
    }
    // info.clear();
    info.setMessage(QTIConstants.MESSAGE_ASSESSMENT_SUBMITTED);
    info.setStatus(QTIConstants.ASSESSMENT_FINISHED);
    info.setRenderItems(false);
    if (delegate != null && !getAssessmentInstance().isPreview() && !alreadyClosed) {
        delegate.submitAssessment(assessmentInstance);
    }
    getAssessmentInstance().cleanUp();
}
Also used : ItemContext(org.olat.ims.qti.container.ItemContext) IQManager(org.olat.modules.iq.IQManager) AssessmentContext(org.olat.ims.qti.container.AssessmentContext) Output(org.olat.ims.qti.container.Output)

Example 8 with Output

use of org.olat.ims.qti.container.Output in project OpenOLAT by OpenOLAT.

the class IQComponentRenderer method buildForm.

/**
 * Render the QTI form
 * @param comp
 * @param translator
 * @param renderer
 * @return rendered form
 */
public StringOutput buildForm(IQComponent comp, Translator translator, Renderer renderer, URLBuilder ubu) {
    StringOutput sb = new StringOutput();
    Info info = comp.getAssessmentInstance().getNavigator().getInfo();
    AssessmentInstance ai = comp.getAssessmentInstance();
    int status = info.getStatus();
    int message = info.getMessage();
    boolean renderItems = info.isRenderItems();
    AssessmentContext act = ai.getAssessmentContext();
    // first treat messages and errors
    if (info.containsMessage()) {
        switch(message) {
            case QTIConstants.MESSAGE_ITEM_SUBMITTED:
                // item hints?
                if (info.isHint()) {
                    Hint el_hint = info.getCurrentOutput().getHint();
                    if (el_hint.getFeedbackstyle() == Hint.FEEDBACKSTYLE_INCREMENTAL) {
                        // increase the hint level so we know which hint to display
                        ItemContext itc = act.getCurrentSectionContext().getCurrentItemContext();
                        int nLevel = itc.getHintLevel() + 1;
                        int numofhints = el_hint.getChildCount();
                        if (nLevel > numofhints)
                            nLevel = numofhints;
                        itc.setHintLevel(nLevel);
                        // <!ELEMENT hint (qticomment? , hintmaterial+)>
                        displayFeedback(sb, (GenericQTIElement) el_hint.getChildAt(nLevel - 1), ai, translator.getLocale());
                    } else {
                        displayFeedback(sb, el_hint, ai, translator.getLocale());
                    }
                }
                // item solution?
                if (info.isSolution()) {
                    Solution el_solution = info.getCurrentOutput().getSolution();
                    displayFeedback(sb, el_solution, ai, translator.getLocale());
                }
                // item fb?
                renderFeedback(info, sb, ai, translator);
                if (!comp.getMenuDisplayConf().isEnabledMenu() && comp.getMenuDisplayConf().isItemPageSequence() && !info.isRenderItems()) {
                    // if item was submitted and sequence is pageSequence and menu not enabled and isRenderItems returns false show section info
                    SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                    displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                }
                break;
            case QTIConstants.MESSAGE_SECTION_SUBMITTED:
                // SectionContext sc = act.getCurrentSectionContext();
                if (info.isFeedback()) {
                    Output outp = info.getCurrentOutput();
                    GenericQTIElement el_feedback = outp.getEl_response();
                    if (el_feedback != null) {
                        displayFeedback(sb, el_feedback, ai, translator.getLocale());
                    } else {
                        renderFeedback(info, sb, ai, translator);
                    }
                }
                if (!comp.getMenuDisplayConf().isEnabledMenu() && !comp.getMenuDisplayConf().isItemPageSequence()) {
                    SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                    displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                }
                break;
            case QTIConstants.MESSAGE_ASSESSMENT_SUBMITTED:
                // provide assessment feedback if enabled and existing
                if (info.isFeedback()) {
                    Output outp = info.getCurrentOutput();
                    GenericQTIElement el_feedback = outp.getEl_response();
                    if (el_feedback != null)
                        displayFeedback(sb, el_feedback, ai, translator.getLocale());
                }
                break;
            case // for menu item navigator
            QTIConstants.MESSAGE_SECTION_INFODEMANDED:
                // provide some stats maybe
                SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                break;
            case // at the start of the test
            QTIConstants.MESSAGE_ASSESSMENT_INFODEMANDED:
                displayAssessmentInfo(sb, act, ai, comp, ubu, translator);
                break;
        }
    }
    if (renderItems) {
        boolean displayForm = true;
        // First check wether we need to render a form.
        // No form is needed if the current item has a matapplet object to be displayed.
        // Matapplets will send their response back directly.
        SectionContext sct = act.getCurrentSectionContext();
        ItemContext itc = null;
        if (sct != null && !ai.isSectionPage()) {
            itc = sct.getCurrentItemContext();
            if (itc != null) {
                Item item = itc.getQtiItem();
                if (item.getQTIIdent().startsWith("QTIEDIT:FLA:"))
                    displayForm = false;
            }
        }
        // do not display form with button in case no more item is open
        if (sct != null && ai.isSectionPage()) {
            displayForm = sct.getItemsOpenCount() > 0;
        }
        sb.append("<form action=\"");
        ubu.buildURI(sb, new String[] { VelocityContainer.COMMAND_ID }, new String[] { "sitse" });
        sb.append("\" id=\"ofo_iq_item\" method=\"post\">");
        String memoId = null;
        String memoTx = "";
        boolean memo = comp.provideMemoField();
        if (!ai.isSectionPage()) {
            if (itc != null) {
                displayItem(sb, renderer, ubu, itc, ai);
                if (memo) {
                    memoId = itc.getIdent();
                    memoTx = ai.getMemo(memoId);
                }
            }
        } else {
            if (sct != null && sct.getItemContextCount() != 0) {
                displayItems(sb, renderer, ubu, sct, ai);
                if (memo) {
                    memoId = sct.getIdent();
                    memoTx = ai.getMemo(memoId);
                }
            }
        }
        boolean isDefaultMemo = false;
        if (memo) {
            if (memoTx == null) {
                isDefaultMemo = true;
                memoTx = translator.translate("qti.memofield.text");
            }
        }
        sb.append("<div class=\"row\">");
        sb.append("<div class='o_button_group'>");
        sb.append("<input class=\"btn btn-primary\" type=\"submit\" name=\"olat_fosm\" value=\"");
        if (ai.isSectionPage())
            sb.append(StringEscapeUtils.escapeHtml(translator.translate("submitMultiAnswers")));
        else
            sb.append(StringEscapeUtils.escapeHtml(translator.translate("submitSingleAnswer")));
        sb.append("\"");
        if (!displayForm)
            sb.append(" style=\"display: none;\"");
        sb.append(" />").append("</div><div class='col-md-10'>");
        if (memo && memoId != null) {
            sb.append("<div class=\"o_qti_item_note_box\">");
            sb.append("<label class=\"control-label\" for=\"o_qti_item_note\">").append(translator.translate("qti.memofield")).append("</label>");
            sb.append("<textarea id=\"o_qti_item_note\" class=\"form-control\" rows=\"4\" spellcheck=\"false\" onchange=\"memo('");
            sb.append(memoId);
            sb.append("', this.value);\" onkeyup=\"resize(this);\" onmouseup=\"resize(this);\"");
            if (isDefaultMemo) {
                sb.append(" onfocus=\"clrMemo(this);\"");
            }
            sb.append(">").append(memoTx).append("</textarea>").append("</div>");
        }
        // end memo
        sb.append("</div>").append(// end row
        "</div>").append("</form>");
    }
    if (status == QTIConstants.ASSESSMENT_FINISHED) {
        if (info.isFeedback()) {
            Output outp = info.getCurrentOutput();
            GenericQTIElement el_feedback = outp.getEl_response();
            if (el_feedback != null) {
                displayFeedback(sb, el_feedback, ai, null);
            } else {
                renderFeedback(info, sb, ai, translator);
                // add the next button
                sb.append("<a class=\"btn btn-primary\" onclick=\"return o2cl()\" href=\"");
                ubu.buildURI(sb, new String[] { VelocityContainer.COMMAND_ID }, new String[] { "sitsec" });
                String title = translator.translate("next");
                sb.append("\" title=\"" + StringEscapeUtils.escapeHtml(title) + "\">");
                sb.append("<span>").append(title).append("</span>");
                sb.append("</a>");
            }
        }
    }
    return sb;
}
Also used : SectionContext(org.olat.ims.qti.container.SectionContext) Hint(org.olat.ims.qti.container.qtielements.Hint) StringOutput(org.olat.core.gui.render.StringOutput) Info(org.olat.ims.qti.navigator.Info) Hint(org.olat.ims.qti.container.qtielements.Hint) AssessmentContext(org.olat.ims.qti.container.AssessmentContext) ItemContext(org.olat.ims.qti.container.ItemContext) Item(org.olat.ims.qti.container.qtielements.Item) StringOutput(org.olat.core.gui.render.StringOutput) Output(org.olat.ims.qti.container.Output) GenericQTIElement(org.olat.ims.qti.container.qtielements.GenericQTIElement) AssessmentInstance(org.olat.ims.qti.process.AssessmentInstance) Solution(org.olat.ims.qti.container.qtielements.Solution)

Example 9 with Output

use of org.olat.ims.qti.container.Output in project openolat by klemens.

the class IQComponentRenderer method buildForm.

/**
 * Render the QTI form
 * @param comp
 * @param translator
 * @param renderer
 * @return rendered form
 */
public StringOutput buildForm(IQComponent comp, Translator translator, Renderer renderer, URLBuilder ubu) {
    StringOutput sb = new StringOutput();
    Info info = comp.getAssessmentInstance().getNavigator().getInfo();
    AssessmentInstance ai = comp.getAssessmentInstance();
    int status = info.getStatus();
    int message = info.getMessage();
    boolean renderItems = info.isRenderItems();
    AssessmentContext act = ai.getAssessmentContext();
    // first treat messages and errors
    if (info.containsMessage()) {
        switch(message) {
            case QTIConstants.MESSAGE_ITEM_SUBMITTED:
                // item hints?
                if (info.isHint()) {
                    Hint el_hint = info.getCurrentOutput().getHint();
                    if (el_hint.getFeedbackstyle() == Hint.FEEDBACKSTYLE_INCREMENTAL) {
                        // increase the hint level so we know which hint to display
                        ItemContext itc = act.getCurrentSectionContext().getCurrentItemContext();
                        int nLevel = itc.getHintLevel() + 1;
                        int numofhints = el_hint.getChildCount();
                        if (nLevel > numofhints)
                            nLevel = numofhints;
                        itc.setHintLevel(nLevel);
                        // <!ELEMENT hint (qticomment? , hintmaterial+)>
                        displayFeedback(sb, (GenericQTIElement) el_hint.getChildAt(nLevel - 1), ai, translator.getLocale());
                    } else {
                        displayFeedback(sb, el_hint, ai, translator.getLocale());
                    }
                }
                // item solution?
                if (info.isSolution()) {
                    Solution el_solution = info.getCurrentOutput().getSolution();
                    displayFeedback(sb, el_solution, ai, translator.getLocale());
                }
                // item fb?
                renderFeedback(info, sb, ai, translator);
                if (!comp.getMenuDisplayConf().isEnabledMenu() && comp.getMenuDisplayConf().isItemPageSequence() && !info.isRenderItems()) {
                    // if item was submitted and sequence is pageSequence and menu not enabled and isRenderItems returns false show section info
                    SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                    displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                }
                break;
            case QTIConstants.MESSAGE_SECTION_SUBMITTED:
                // SectionContext sc = act.getCurrentSectionContext();
                if (info.isFeedback()) {
                    Output outp = info.getCurrentOutput();
                    GenericQTIElement el_feedback = outp.getEl_response();
                    if (el_feedback != null) {
                        displayFeedback(sb, el_feedback, ai, translator.getLocale());
                    } else {
                        renderFeedback(info, sb, ai, translator);
                    }
                }
                if (!comp.getMenuDisplayConf().isEnabledMenu() && !comp.getMenuDisplayConf().isItemPageSequence()) {
                    SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                    displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                }
                break;
            case QTIConstants.MESSAGE_ASSESSMENT_SUBMITTED:
                // provide assessment feedback if enabled and existing
                if (info.isFeedback()) {
                    Output outp = info.getCurrentOutput();
                    GenericQTIElement el_feedback = outp.getEl_response();
                    if (el_feedback != null)
                        displayFeedback(sb, el_feedback, ai, translator.getLocale());
                }
                break;
            case // for menu item navigator
            QTIConstants.MESSAGE_SECTION_INFODEMANDED:
                // provide some stats maybe
                SectionContext sc = ai.getAssessmentContext().getCurrentSectionContext();
                displaySectionInfo(sb, sc, ai, comp, ubu, translator);
                break;
            case // at the start of the test
            QTIConstants.MESSAGE_ASSESSMENT_INFODEMANDED:
                displayAssessmentInfo(sb, act, ai, comp, ubu, translator);
                break;
        }
    }
    if (renderItems) {
        boolean displayForm = true;
        // First check wether we need to render a form.
        // No form is needed if the current item has a matapplet object to be displayed.
        // Matapplets will send their response back directly.
        SectionContext sct = act.getCurrentSectionContext();
        ItemContext itc = null;
        if (sct != null && !ai.isSectionPage()) {
            itc = sct.getCurrentItemContext();
            if (itc != null) {
                Item item = itc.getQtiItem();
                if (item.getQTIIdent().startsWith("QTIEDIT:FLA:"))
                    displayForm = false;
            }
        }
        // do not display form with button in case no more item is open
        if (sct != null && ai.isSectionPage()) {
            displayForm = sct.getItemsOpenCount() > 0;
        }
        sb.append("<form action=\"");
        ubu.buildURI(sb, new String[] { VelocityContainer.COMMAND_ID }, new String[] { "sitse" });
        sb.append("\" id=\"ofo_iq_item\" method=\"post\">");
        String memoId = null;
        String memoTx = "";
        boolean memo = comp.provideMemoField();
        if (!ai.isSectionPage()) {
            if (itc != null) {
                displayItem(sb, renderer, ubu, itc, ai);
                if (memo) {
                    memoId = itc.getIdent();
                    memoTx = ai.getMemo(memoId);
                }
            }
        } else {
            if (sct != null && sct.getItemContextCount() != 0) {
                displayItems(sb, renderer, ubu, sct, ai);
                if (memo) {
                    memoId = sct.getIdent();
                    memoTx = ai.getMemo(memoId);
                }
            }
        }
        boolean isDefaultMemo = false;
        if (memo) {
            if (memoTx == null) {
                isDefaultMemo = true;
                memoTx = translator.translate("qti.memofield.text");
            }
        }
        sb.append("<div class=\"row\">");
        sb.append("<div class='o_button_group'>");
        sb.append("<input class=\"btn btn-primary\" type=\"submit\" name=\"olat_fosm\" value=\"");
        if (ai.isSectionPage())
            sb.append(StringEscapeUtils.escapeHtml(translator.translate("submitMultiAnswers")));
        else
            sb.append(StringEscapeUtils.escapeHtml(translator.translate("submitSingleAnswer")));
        sb.append("\"");
        if (!displayForm)
            sb.append(" style=\"display: none;\"");
        sb.append(" />").append("</div><div class='col-md-10'>");
        if (memo && memoId != null) {
            sb.append("<div class=\"o_qti_item_note_box\">");
            sb.append("<label class=\"control-label\" for=\"o_qti_item_note\">").append(translator.translate("qti.memofield")).append("</label>");
            sb.append("<textarea id=\"o_qti_item_note\" class=\"form-control\" rows=\"4\" spellcheck=\"false\" onchange=\"memo('");
            sb.append(memoId);
            sb.append("', this.value);\" onkeyup=\"resize(this);\" onmouseup=\"resize(this);\"");
            if (isDefaultMemo) {
                sb.append(" onfocus=\"clrMemo(this);\"");
            }
            sb.append(">").append(memoTx).append("</textarea>").append("</div>");
        }
        // end memo
        sb.append("</div>").append(// end row
        "</div>").append("</form>");
    }
    if (status == QTIConstants.ASSESSMENT_FINISHED) {
        if (info.isFeedback()) {
            Output outp = info.getCurrentOutput();
            GenericQTIElement el_feedback = outp.getEl_response();
            if (el_feedback != null) {
                displayFeedback(sb, el_feedback, ai, null);
            } else {
                renderFeedback(info, sb, ai, translator);
                // add the next button
                sb.append("<a class=\"btn btn-primary\" onclick=\"return o2cl()\" href=\"");
                ubu.buildURI(sb, new String[] { VelocityContainer.COMMAND_ID }, new String[] { "sitsec" });
                String title = translator.translate("next");
                sb.append("\" title=\"" + StringEscapeUtils.escapeHtml(title) + "\">");
                sb.append("<span>").append(title).append("</span>");
                sb.append("</a>");
            }
        }
    }
    return sb;
}
Also used : SectionContext(org.olat.ims.qti.container.SectionContext) Hint(org.olat.ims.qti.container.qtielements.Hint) StringOutput(org.olat.core.gui.render.StringOutput) Info(org.olat.ims.qti.navigator.Info) Hint(org.olat.ims.qti.container.qtielements.Hint) AssessmentContext(org.olat.ims.qti.container.AssessmentContext) ItemContext(org.olat.ims.qti.container.ItemContext) Item(org.olat.ims.qti.container.qtielements.Item) StringOutput(org.olat.core.gui.render.StringOutput) Output(org.olat.ims.qti.container.Output) GenericQTIElement(org.olat.ims.qti.container.qtielements.GenericQTIElement) AssessmentInstance(org.olat.ims.qti.process.AssessmentInstance) Solution(org.olat.ims.qti.container.qtielements.Solution)

Example 10 with Output

use of org.olat.ims.qti.container.Output in project openolat by klemens.

the class DefaultNavigator method submitAssessment.

/**
 * @see org.olat.qti.process.Navigator#submitAssessment()
 */
public final void submitAssessment() {
    Output pendingOutput = null;
    boolean pendingFeedback = getInfo().isFeedback();
    boolean alreadyClosed = getAssessmentInstance().isClosed();
    if (pendingFeedback && getAssessmentInstance().getAssessmentContext().getCurrentSectionContext() != null) {
        ItemContext itc = getAssessmentInstance().getAssessmentContext().getCurrentSectionContext().getCurrentItemContext();
        pendingOutput = itc.getOutput();
    }
    getAssessmentInstance().stop();
    if (!getAssessmentInstance().isPreview() && !alreadyClosed) {
        CoreSpringFactory.getImpl(IQManager.class).persistResults(getAssessmentInstance());
    }
    AssessmentContext ac = getAssessmentContext();
    info.clear();
    if (ac.isFeedbackavailable()) {
        Output outp = ac.getOutput();
        getInfo().setCurrentOutput(outp);
        getInfo().setFeedback(true);
    } else if (pendingFeedback) {
        getInfo().setCurrentOutput(pendingOutput);
        getInfo().setFeedback(true);
    }
    // info.clear();
    info.setMessage(QTIConstants.MESSAGE_ASSESSMENT_SUBMITTED);
    info.setStatus(QTIConstants.ASSESSMENT_FINISHED);
    info.setRenderItems(false);
    if (delegate != null && !getAssessmentInstance().isPreview() && !alreadyClosed) {
        delegate.submitAssessment(assessmentInstance);
    }
    getAssessmentInstance().cleanUp();
}
Also used : ItemContext(org.olat.ims.qti.container.ItemContext) IQManager(org.olat.modules.iq.IQManager) AssessmentContext(org.olat.ims.qti.container.AssessmentContext) Output(org.olat.ims.qti.container.Output)

Aggregations

Output (org.olat.ims.qti.container.Output)12 AssessmentContext (org.olat.ims.qti.container.AssessmentContext)8 ItemContext (org.olat.ims.qti.container.ItemContext)8 SectionContext (org.olat.ims.qti.container.SectionContext)6 Hint (org.olat.ims.qti.container.qtielements.Hint)4 Solution (org.olat.ims.qti.container.qtielements.Solution)4 Iterator (java.util.Iterator)2 List (java.util.List)2 Element (org.dom4j.Element)2 StringOutput (org.olat.core.gui.render.StringOutput)2 Variable (org.olat.ims.qti.container.Variable)2 Variables (org.olat.ims.qti.container.Variables)2 GenericQTIElement (org.olat.ims.qti.container.qtielements.GenericQTIElement)2 Item (org.olat.ims.qti.container.qtielements.Item)2 Info (org.olat.ims.qti.navigator.Info)2 AssessmentInstance (org.olat.ims.qti.process.AssessmentInstance)2 IQManager (org.olat.modules.iq.IQManager)2