Search in sources :

Example 1 with ImsRepositoryResolver

use of org.olat.ims.qti.process.ImsRepositoryResolver in project OpenOLAT by OpenOLAT.

the class IQRunController method createChangelogMsg.

/**
 * @param ureq
 * @return
 */
private StringBuilder createChangelogMsg(UserRequest ureq) {
    /*
		 * TODO:pb:is ImsRepositoryResolver the right place for getting the change log?
		 */
    // re could be null, but if we are here it should not be null!
    Roles userRoles = ureq.getUserSession().getRoles();
    boolean showAll = userRoles.isAuthor() || userRoles.isOLATAdmin();
    // get changelog
    Formatter formatter = Formatter.getInstance(ureq.getLocale());
    ImsRepositoryResolver resolver = new ImsRepositoryResolver(referenceTestEntry);
    QTIChangeLogMessage[] qtiChangeLog = resolver.getDocumentChangeLog();
    StringBuilder qtiChangelog = new StringBuilder();
    if (qtiChangeLog.length > 0) {
        // there are resource changes
        Arrays.sort(qtiChangeLog);
        for (int i = qtiChangeLog.length - 1; i >= 0; i--) {
            // show latest change first
            if (!showAll && qtiChangeLog[i].isPublic()) {
                // logged in person is a normal user, hence public messages only
                Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
                qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
                String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
                qtiChangelog.append(msg);
                qtiChangelog.append("\n********************************\n");
            } else if (showAll) {
                // logged in person is an author, olat admin, owner, show all messages
                Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
                qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
                String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
                qtiChangelog.append(msg);
                qtiChangelog.append("\n********************************\n");
            }
        // else non public messages are not shown to normal user
        }
    }
    return qtiChangelog;
}
Also used : QTIChangeLogMessage(org.olat.ims.qti.QTIChangeLogMessage) Formatter(org.olat.core.util.Formatter) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) Roles(org.olat.core.id.Roles) Date(java.util.Date)

Example 2 with ImsRepositoryResolver

use of org.olat.ims.qti.process.ImsRepositoryResolver in project openolat by klemens.

the class IQRunController method createChangelogMsg.

/**
 * @param ureq
 * @return
 */
private StringBuilder createChangelogMsg(UserRequest ureq) {
    /*
		 * TODO:pb:is ImsRepositoryResolver the right place for getting the change log?
		 */
    // re could be null, but if we are here it should not be null!
    Roles userRoles = ureq.getUserSession().getRoles();
    boolean showAll = userRoles.isAuthor() || userRoles.isOLATAdmin();
    // get changelog
    Formatter formatter = Formatter.getInstance(ureq.getLocale());
    ImsRepositoryResolver resolver = new ImsRepositoryResolver(referenceTestEntry);
    QTIChangeLogMessage[] qtiChangeLog = resolver.getDocumentChangeLog();
    StringBuilder qtiChangelog = new StringBuilder();
    if (qtiChangeLog.length > 0) {
        // there are resource changes
        Arrays.sort(qtiChangeLog);
        for (int i = qtiChangeLog.length - 1; i >= 0; i--) {
            // show latest change first
            if (!showAll && qtiChangeLog[i].isPublic()) {
                // logged in person is a normal user, hence public messages only
                Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
                qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
                String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
                qtiChangelog.append(msg);
                qtiChangelog.append("\n********************************\n");
            } else if (showAll) {
                // logged in person is an author, olat admin, owner, show all messages
                Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
                qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
                String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
                qtiChangelog.append(msg);
                qtiChangelog.append("\n********************************\n");
            }
        // else non public messages are not shown to normal user
        }
    }
    return qtiChangelog;
}
Also used : QTIChangeLogMessage(org.olat.ims.qti.QTIChangeLogMessage) Formatter(org.olat.core.util.Formatter) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) Roles(org.olat.core.id.Roles) Date(java.util.Date)

Example 3 with ImsRepositoryResolver

use of org.olat.ims.qti.process.ImsRepositoryResolver in project OpenOLAT by OpenOLAT.

the class OnyxModule method isOnyxTest.

public static boolean isOnyxTest(final OLATResourceable res) {
    if (res.getResourceableTypeName().equals(TestFileResource.TYPE_NAME) || res.getResourceableTypeName().equals(SurveyFileResource.TYPE_NAME)) {
        Long resourceId = res.getResourceableId();
        Boolean onyx = onyxMap.get(resourceId);
        if (onyx == null) {
            onyx = Boolean.FALSE;
            try {
                final Resolver resolver = new ImsRepositoryResolver(res);
                // search for qti.xml, it not exists for qti2
                if (resolver.getQTIDocument() == null) {
                    onyx = Boolean.TRUE;
                } else {
                    onyx = Boolean.FALSE;
                }
            } catch (OLATRuntimeException e) {
                log.error("", e);
            }
            onyxMap.put(resourceId, onyx);
        }
        return onyx.booleanValue();
    } else {
        return false;
    }
}
Also used : Resolver(org.olat.ims.qti.process.Resolver) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) OLATRuntimeException(org.olat.core.logging.OLATRuntimeException) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver)

Example 4 with ImsRepositoryResolver

use of org.olat.ims.qti.process.ImsRepositoryResolver in project OpenOLAT by OpenOLAT.

the class IQDisplayController method init.

private void init(IQSecurityCallback secCallback, UserRequest ureq) {
    this.iqsec = secCallback;
    this.translator = Util.createPackageTranslator(IQDisplayController.class, ureq.getLocale());
    this.ready = false;
    retrieveListenerOres = new IQRetrievedEvent(ureq.getIdentity(), courseResId, courseNodeIdent);
    CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, ureq.getIdentity(), retrieveListenerOres);
    iqm = CoreSpringFactory.getImpl(IQManager.class);
    myContent = new VelocityContainer("olatmodiqrun", VELOCITY_ROOT + "/qti.html", translator, this);
    // Check if fibautocompl.js and fibautocompl.css exists for enhance FIB autocomplete feature
    Resolver autcompResolver = null;
    if (resolver == null) {
        RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftkey, true);
        autcompResolver = new ImsRepositoryResolver(re);
    } else {
        autcompResolver = this.resolver;
    }
    if (autcompResolver != null && autcompResolver.hasAutocompleteFiles()) {
        // Add Autocomplte JS and CSS file to header
        StringBuilder sb = new StringBuilder();
        // must be like <script type="text/javascript" src="/olat/secstatic/qti/74579818809617/_unzipped_/fibautocompl.js"></script>
        sb.append("<script type=\"text/javascript\" src=\"").append(autcompResolver.getStaticsBaseURI()).append("/").append(ImsRepositoryResolver.QTI_FIB_AUTOCOMPLETE_JS_FILE).append("\"></script>\n");
        // must be like <link rel="StyleSheet" href="/olat/secstatic/qti/74579818809617/_unzipped_/fibautocompl.css" type="text/css" media="screen, print">
        sb.append("<link rel=\"StyleSheet\" href=\"").append(autcompResolver.getStaticsBaseURI()).append("/").append(ImsRepositoryResolver.QTI_FIB_AUTOCOMPLETE_CSS_FILE).append("\" type=\"text/css\" media=\"screen\" >\n");
        JSAndCSSComponent autoCompleteJsCss = new JSAndCSSComponent("auto_complete_js_css", this.getClass(), true, sb.toString());
        myContent.put("autoCompleteJsCss", autoCompleteJsCss);
    }
    closeButton = LinkFactory.createButton("close", myContent, this);
    closeButton.setPrimary(true);
    qtiscoreprogress = new ProgressBar("qtiscoreprogress", 150, 0, 0, "");
    myContent.put("qtiscoreprogress", qtiscoreprogress);
    Boolean displayScoreProgress = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_SCOREPROGRESS);
    // migration,
    if (displayScoreProgress == null)
        displayScoreProgress = Boolean.TRUE;
    // menu
    if (!displayScoreProgress.booleanValue())
        qtiscoreprogress.setVisible(false);
    myContent.contextPut("displayScoreProgress", displayScoreProgress);
    qtiquestionprogress = new ProgressBar("qtiquestionprogress", 150, 0, 0, "");
    myContent.put("qtiquestionprogress", qtiquestionprogress);
    Boolean displayQuestionProgress = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_QUESTIONPROGRESS);
    // migration,
    if (displayQuestionProgress == null)
        displayQuestionProgress = Boolean.FALSE;
    if (!displayQuestionProgress.booleanValue())
        qtiquestionprogress.setVisible(false);
    myContent.contextPut("displayQuestionProgress", displayQuestionProgress);
    Boolean displayMenu = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_DISPLAYMENU);
    // migration
    if (displayMenu == null)
        displayMenu = Boolean.TRUE;
    myContent.contextPut("displayMenu", displayMenu);
    Boolean enableCancel = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLECANCEL);
    if (enableCancel == null) {
        if (// migration:
        modConfig.get(IQEditController.CONFIG_KEY_TYPE).equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS))
            // migration:
            enableCancel = Boolean.FALSE;
        else
            // disable
            // cancel
            // for
            // assessments
            // migration: enable otherwise
            enableCancel = Boolean.TRUE;
    }
    myContent.contextPut("enableCancel", enableCancel);
    Boolean enableSuspend = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLESUSPEND);
    // migration
    if (enableSuspend == null)
        enableSuspend = Boolean.FALSE;
    myContent.contextPut("enableSuspend", enableSuspend);
    qtistatus = new IQStatus(translator);
    qtistatus.setPreview(iqsec.isPreview());
    myContent.contextPut("qtistatus", qtistatus);
    setInitialComponent(myContent);
    // get the assessment
    AssessmentInstance ai = null;
    if (repositorySoftkey != null) {
        // instantiate from repository
        // build path information which will be used to store tempory qti file
        String resourcePathInfo = courseResId + File.separator + courseNodeIdent;
        ai = AssessmentFactory.createAssessmentInstance(ureq.getIdentity(), ureq.getHttpReq().getRemoteAddr(), modConfig, iqsec.isPreview(), courseResId, courseNodeIdent, resourcePathInfo, this);
    } else if (resolver != null) {
        // instantiate from given resolver
        ai = AssessmentFactory.createAssessmentInstance(ureq.getIdentity(), ureq.getHttpReq().getRemoteAddr(), courseResId, courseNodeIdent, resolver, persister, modConfig, this);
    }
    // check for null instance or instance with no items
    if (ai == null || ai.getAssessmentContext().getSectionContext(0).getItemContextCount() == 0)
        throw new AssertException("Assessment Instance was null or no sections/items found.");
    if (!iqsec.isAllowed(ai)) {
        // security check
        getWindowControl().setError(translator.translate("status.notallowed"));
        return;
    }
    if (iqsec.attemptsLeft(ai) < 1) {
        // security check
        // note: important: do not check on == 0 since the nr of attempts can be
        // republished for the same test with a smaller number as the latest time.
        getWindowControl().setInfo(translator.translate(ai.isSurvey() ? "status.survey.nomoreattempts" : "status.assess.nomoreattempts"));
        return;
    }
    if (ai.isResuming()) {
        getWindowControl().setInfo(translator.translate(ai.isSurvey() ? "status.survey.resumed" : "status.assess.resumed"));
    }
    ai.setPreview(iqsec.isPreview());
    /*
		 * menu render option: render only section titles or titles and questions.
		 */
    Object tmp = modConfig.get(IQEditController.CONFIG_KEY_RENDERMENUOPTION);
    Boolean renderSectionsOnly;
    if (tmp == null) {
        // migration
        modConfig.set(IQEditController.CONFIG_KEY_RENDERMENUOPTION, Boolean.FALSE);
        renderSectionsOnly = Boolean.FALSE;
    } else {
        renderSectionsOnly = (Boolean) tmp;
    }
    boolean enabledMenu = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLEMENU).booleanValue();
    boolean itemPageSequence = ((String) modConfig.get(IQEditController.CONFIG_KEY_SEQUENCE)).equals(AssessmentInstance.QMD_ENTRY_SEQUENCE_ITEM);
    IQMenuDisplayConf mdc = new IQMenuDisplayConf(renderSectionsOnly.booleanValue(), enabledMenu, itemPageSequence);
    Boolean tmpMemo = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_MEMO);
    boolean memo = tmpMemo == null ? false : tmpMemo.booleanValue();
    qticomp = new IQComponent("qticomponent", translator, ai, mdc, memo);
    qticomp.addListener(this);
    myContent.put("qticomp", qticomp);
    if (!ai.isResuming()) {
        Navigator navigator = ai.getNavigator();
        navigator.startAssessment();
    } else {
        // fxdiff BAKS-7 Resume function
        AssessmentContext act = ai.getAssessmentContext();
        if (act.getCurrentSectionContextPos() >= 0) {
            int sectionPos = act.getCurrentSectionContextPos();
            OLATResourceable sres = OresHelper.createOLATResourceableInstance("gse", new Long(sectionPos));
            WindowControl bwControl = addToHistory(ureq, sres, null, getWindowControl(), false);
            if (!ai.isSectionPage()) {
                SectionContext sct = act.getCurrentSectionContext();
                int itemPos = sct.getCurrentItemContextPos();
                if (itemPos >= 0) {
                    OLATResourceable ires = OresHelper.createOLATResourceableInstance("git", new Long(itemPos));
                    addToHistory(ureq, ires, null, bwControl, true);
                }
            }
        }
    }
    qtistatus.update(ai);
    if (!qtistatus.isSurvey()) {
        qtiscoreprogress.setMax(ai.getAssessmentContext().getMaxScore());
        qtiscoreprogress.setActual(ai.getAssessmentContext().getScore());
    }
    qtiquestionprogress.setMax(Integer.parseInt(qtistatus.getMaxQuestions()));
    updateQuestionProgressDisplay(ai);
    ready = true;
}
Also used : SectionContext(org.olat.ims.qti.container.SectionContext) OLATResourceable(org.olat.core.id.OLATResourceable) RepositoryEntry(org.olat.repository.RepositoryEntry) WindowControl(org.olat.core.gui.control.WindowControl) AssessmentInstance(org.olat.ims.qti.process.AssessmentInstance) ProgressBar(org.olat.core.gui.components.progressbar.ProgressBar) JSAndCSSComponent(org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent) AssertException(org.olat.core.logging.AssertException) Resolver(org.olat.ims.qti.process.Resolver) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) Navigator(org.olat.ims.qti.navigator.Navigator) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer) AssessmentContext(org.olat.ims.qti.container.AssessmentContext)

Example 5 with ImsRepositoryResolver

use of org.olat.ims.qti.process.ImsRepositoryResolver in project openolat by klemens.

the class IQDisplayController method init.

private void init(IQSecurityCallback secCallback, UserRequest ureq) {
    this.iqsec = secCallback;
    this.translator = Util.createPackageTranslator(IQDisplayController.class, ureq.getLocale());
    this.ready = false;
    retrieveListenerOres = new IQRetrievedEvent(ureq.getIdentity(), courseResId, courseNodeIdent);
    CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, ureq.getIdentity(), retrieveListenerOres);
    iqm = CoreSpringFactory.getImpl(IQManager.class);
    myContent = new VelocityContainer("olatmodiqrun", VELOCITY_ROOT + "/qti.html", translator, this);
    // Check if fibautocompl.js and fibautocompl.css exists for enhance FIB autocomplete feature
    Resolver autcompResolver = null;
    if (resolver == null) {
        RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftkey, true);
        autcompResolver = new ImsRepositoryResolver(re);
    } else {
        autcompResolver = this.resolver;
    }
    if (autcompResolver != null && autcompResolver.hasAutocompleteFiles()) {
        // Add Autocomplte JS and CSS file to header
        StringBuilder sb = new StringBuilder();
        // must be like <script type="text/javascript" src="/olat/secstatic/qti/74579818809617/_unzipped_/fibautocompl.js"></script>
        sb.append("<script type=\"text/javascript\" src=\"").append(autcompResolver.getStaticsBaseURI()).append("/").append(ImsRepositoryResolver.QTI_FIB_AUTOCOMPLETE_JS_FILE).append("\"></script>\n");
        // must be like <link rel="StyleSheet" href="/olat/secstatic/qti/74579818809617/_unzipped_/fibautocompl.css" type="text/css" media="screen, print">
        sb.append("<link rel=\"StyleSheet\" href=\"").append(autcompResolver.getStaticsBaseURI()).append("/").append(ImsRepositoryResolver.QTI_FIB_AUTOCOMPLETE_CSS_FILE).append("\" type=\"text/css\" media=\"screen\" >\n");
        JSAndCSSComponent autoCompleteJsCss = new JSAndCSSComponent("auto_complete_js_css", this.getClass(), true, sb.toString());
        myContent.put("autoCompleteJsCss", autoCompleteJsCss);
    }
    closeButton = LinkFactory.createButton("close", myContent, this);
    closeButton.setPrimary(true);
    qtiscoreprogress = new ProgressBar("qtiscoreprogress", 150, 0, 0, "");
    myContent.put("qtiscoreprogress", qtiscoreprogress);
    Boolean displayScoreProgress = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_SCOREPROGRESS);
    // migration,
    if (displayScoreProgress == null)
        displayScoreProgress = Boolean.TRUE;
    // menu
    if (!displayScoreProgress.booleanValue())
        qtiscoreprogress.setVisible(false);
    myContent.contextPut("displayScoreProgress", displayScoreProgress);
    qtiquestionprogress = new ProgressBar("qtiquestionprogress", 150, 0, 0, "");
    myContent.put("qtiquestionprogress", qtiquestionprogress);
    Boolean displayQuestionProgress = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_QUESTIONPROGRESS);
    // migration,
    if (displayQuestionProgress == null)
        displayQuestionProgress = Boolean.FALSE;
    if (!displayQuestionProgress.booleanValue())
        qtiquestionprogress.setVisible(false);
    myContent.contextPut("displayQuestionProgress", displayQuestionProgress);
    Boolean displayMenu = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_DISPLAYMENU);
    // migration
    if (displayMenu == null)
        displayMenu = Boolean.TRUE;
    myContent.contextPut("displayMenu", displayMenu);
    Boolean enableCancel = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLECANCEL);
    if (enableCancel == null) {
        if (// migration:
        modConfig.get(IQEditController.CONFIG_KEY_TYPE).equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS))
            // migration:
            enableCancel = Boolean.FALSE;
        else
            // disable
            // cancel
            // for
            // assessments
            // migration: enable otherwise
            enableCancel = Boolean.TRUE;
    }
    myContent.contextPut("enableCancel", enableCancel);
    Boolean enableSuspend = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLESUSPEND);
    // migration
    if (enableSuspend == null)
        enableSuspend = Boolean.FALSE;
    myContent.contextPut("enableSuspend", enableSuspend);
    qtistatus = new IQStatus(translator);
    qtistatus.setPreview(iqsec.isPreview());
    myContent.contextPut("qtistatus", qtistatus);
    setInitialComponent(myContent);
    // get the assessment
    AssessmentInstance ai = null;
    if (repositorySoftkey != null) {
        // instantiate from repository
        // build path information which will be used to store tempory qti file
        String resourcePathInfo = courseResId + File.separator + courseNodeIdent;
        ai = AssessmentFactory.createAssessmentInstance(ureq.getIdentity(), ureq.getHttpReq().getRemoteAddr(), modConfig, iqsec.isPreview(), courseResId, courseNodeIdent, resourcePathInfo, this);
    } else if (resolver != null) {
        // instantiate from given resolver
        ai = AssessmentFactory.createAssessmentInstance(ureq.getIdentity(), ureq.getHttpReq().getRemoteAddr(), courseResId, courseNodeIdent, resolver, persister, modConfig, this);
    }
    // check for null instance or instance with no items
    if (ai == null || ai.getAssessmentContext().getSectionContext(0).getItemContextCount() == 0)
        throw new AssertException("Assessment Instance was null or no sections/items found.");
    if (!iqsec.isAllowed(ai)) {
        // security check
        getWindowControl().setError(translator.translate("status.notallowed"));
        return;
    }
    if (iqsec.attemptsLeft(ai) < 1) {
        // security check
        // note: important: do not check on == 0 since the nr of attempts can be
        // republished for the same test with a smaller number as the latest time.
        getWindowControl().setInfo(translator.translate(ai.isSurvey() ? "status.survey.nomoreattempts" : "status.assess.nomoreattempts"));
        return;
    }
    if (ai.isResuming()) {
        getWindowControl().setInfo(translator.translate(ai.isSurvey() ? "status.survey.resumed" : "status.assess.resumed"));
    }
    ai.setPreview(iqsec.isPreview());
    /*
		 * menu render option: render only section titles or titles and questions.
		 */
    Object tmp = modConfig.get(IQEditController.CONFIG_KEY_RENDERMENUOPTION);
    Boolean renderSectionsOnly;
    if (tmp == null) {
        // migration
        modConfig.set(IQEditController.CONFIG_KEY_RENDERMENUOPTION, Boolean.FALSE);
        renderSectionsOnly = Boolean.FALSE;
    } else {
        renderSectionsOnly = (Boolean) tmp;
    }
    boolean enabledMenu = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_ENABLEMENU).booleanValue();
    boolean itemPageSequence = ((String) modConfig.get(IQEditController.CONFIG_KEY_SEQUENCE)).equals(AssessmentInstance.QMD_ENTRY_SEQUENCE_ITEM);
    IQMenuDisplayConf mdc = new IQMenuDisplayConf(renderSectionsOnly.booleanValue(), enabledMenu, itemPageSequence);
    Boolean tmpMemo = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_MEMO);
    boolean memo = tmpMemo == null ? false : tmpMemo.booleanValue();
    qticomp = new IQComponent("qticomponent", translator, ai, mdc, memo);
    qticomp.addListener(this);
    myContent.put("qticomp", qticomp);
    if (!ai.isResuming()) {
        Navigator navigator = ai.getNavigator();
        navigator.startAssessment();
    } else {
        // fxdiff BAKS-7 Resume function
        AssessmentContext act = ai.getAssessmentContext();
        if (act.getCurrentSectionContextPos() >= 0) {
            int sectionPos = act.getCurrentSectionContextPos();
            OLATResourceable sres = OresHelper.createOLATResourceableInstance("gse", new Long(sectionPos));
            WindowControl bwControl = addToHistory(ureq, sres, null, getWindowControl(), false);
            if (!ai.isSectionPage()) {
                SectionContext sct = act.getCurrentSectionContext();
                int itemPos = sct.getCurrentItemContextPos();
                if (itemPos >= 0) {
                    OLATResourceable ires = OresHelper.createOLATResourceableInstance("git", new Long(itemPos));
                    addToHistory(ureq, ires, null, bwControl, true);
                }
            }
        }
    }
    qtistatus.update(ai);
    if (!qtistatus.isSurvey()) {
        qtiscoreprogress.setMax(ai.getAssessmentContext().getMaxScore());
        qtiscoreprogress.setActual(ai.getAssessmentContext().getScore());
    }
    qtiquestionprogress.setMax(Integer.parseInt(qtistatus.getMaxQuestions()));
    updateQuestionProgressDisplay(ai);
    ready = true;
}
Also used : SectionContext(org.olat.ims.qti.container.SectionContext) OLATResourceable(org.olat.core.id.OLATResourceable) RepositoryEntry(org.olat.repository.RepositoryEntry) WindowControl(org.olat.core.gui.control.WindowControl) AssessmentInstance(org.olat.ims.qti.process.AssessmentInstance) ProgressBar(org.olat.core.gui.components.progressbar.ProgressBar) JSAndCSSComponent(org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent) AssertException(org.olat.core.logging.AssertException) Resolver(org.olat.ims.qti.process.Resolver) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) ImsRepositoryResolver(org.olat.ims.qti.process.ImsRepositoryResolver) Navigator(org.olat.ims.qti.navigator.Navigator) VelocityContainer(org.olat.core.gui.components.velocity.VelocityContainer) AssessmentContext(org.olat.ims.qti.container.AssessmentContext)

Aggregations

ImsRepositoryResolver (org.olat.ims.qti.process.ImsRepositoryResolver)6 Resolver (org.olat.ims.qti.process.Resolver)4 Date (java.util.Date)2 JSAndCSSComponent (org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent)2 ProgressBar (org.olat.core.gui.components.progressbar.ProgressBar)2 VelocityContainer (org.olat.core.gui.components.velocity.VelocityContainer)2 WindowControl (org.olat.core.gui.control.WindowControl)2 OLATResourceable (org.olat.core.id.OLATResourceable)2 Roles (org.olat.core.id.Roles)2 AssertException (org.olat.core.logging.AssertException)2 OLATRuntimeException (org.olat.core.logging.OLATRuntimeException)2 Formatter (org.olat.core.util.Formatter)2 QTIChangeLogMessage (org.olat.ims.qti.QTIChangeLogMessage)2 AssessmentContext (org.olat.ims.qti.container.AssessmentContext)2 SectionContext (org.olat.ims.qti.container.SectionContext)2 Navigator (org.olat.ims.qti.navigator.Navigator)2 AssessmentInstance (org.olat.ims.qti.process.AssessmentInstance)2 RepositoryEntry (org.olat.repository.RepositoryEntry)2