Search in sources :

Example 46 with Event

use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.

the class AssessmentItemEditorController method event.

@Override
protected void event(UserRequest ureq, Controller source, Event event) {
    if (event instanceof AssessmentItemEvent) {
        AssessmentItemEvent aie = (AssessmentItemEvent) event;
        if (AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED.equals(aie.getCommand())) {
            doBuildAndSaveAssessmentItem();
            doBuildAndCommitMetadata();
            fireEvent(ureq, new AssessmentItemEvent(aie.getCommand(), aie.getAssessmentItem(), itemRef, aie.getQuestionType()));
        } else if (AssessmentItemEvent.ASSESSMENT_ITEM_NEED_RELOAD.equals(aie.getCommand())) {
            fireEvent(ureq, event);
        }
    } else if (poolEditor == source) {
        if (event instanceof DetachFromPoolEvent) {
            fireEvent(ureq, event);
        }
    }
    super.event(ureq, source, event);
}
Also used : DetachFromPoolEvent(org.olat.ims.qti21.ui.editor.events.DetachFromPoolEvent) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 47 with Event

use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.

the class AssessmentTreeComponentRenderer method renderAssessmentItemLink.

/**
 * @param sb
 * @param component
 * @param itemNode
 * @return The event used or null
 */
private Event renderAssessmentItemLink(StringOutput sb, AssessmentTreeComponent component, TestPlanNode itemNode, Translator translator) {
    String key = itemNode.getKey().toString();
    Form form = component.getQtiItem().getRootForm();
    String dispatchId = component.getQtiItem().getFormDispatchId();
    TestSessionController testSessionController = component.getTestSessionController();
    TestSessionState testSessionState = testSessionController.getTestSessionState();
    TestPart testPart = testSessionController.getCurrentTestPart();
    TestPlanNodeKey currentTestPartKey = testSessionState.getCurrentTestPartKey();
    TestPartSessionState currentTestPartSessionState = testSessionState.getTestPartSessionStates().get(currentTestPartKey);
    Event event;
    if (testPart == null || testPart.getNavigationMode() == NavigationMode.NONLINEAR) {
        if (testSessionState.isEnded() || currentTestPartSessionState.isEnded()) {
            if (itemNode.getEffectiveItemSessionControl().isAllowReview() || itemNode.getEffectiveItemSessionControl().isShowFeedback()) {
                event = Event.reviewItem;
            } else {
                event = null;
            }
        } else {
            event = Event.selectItem;
        }
    } else {
        event = null;
    }
    if (event == null) {
        sb.append("<span class='o_assessmentitem_nav_disabled'>");
    } else {
        sb.append("<a href='javascript:;' onclick=\"").append(FormJSHelper.getXHRFnCallFor(form, dispatchId, 1, true, true, new NameValuePair("cid", event.name()), new NameValuePair("item", key))).append(";\" class='o_sel_assessmentitem'>");
    }
    String title;
    if (component.isShowTitles()) {
        title = StringHelper.escapeHtml(itemNode.getSectionPartTitle());
    } else {
        int num = component.getCandidateSessionContext().getNumber(itemNode);
        title = translator.translate("question.title", new String[] { Integer.toString(num) });
    }
    sb.append("<span class='questionTitle'>").append(title).append("</span>");
    if (event == null) {
        sb.append("</span>");
    } else {
        sb.append("</a>");
    }
    return event;
}
Also used : NameValuePair(org.olat.core.gui.components.form.flexible.impl.NameValuePair) TestSessionState(uk.ac.ed.ph.jqtiplus.state.TestSessionState) Form(org.olat.core.gui.components.form.flexible.impl.Form) TestPart(uk.ac.ed.ph.jqtiplus.node.test.TestPart) TestSessionController(uk.ac.ed.ph.jqtiplus.running.TestSessionController) Event(org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event) CandidateEvent(org.olat.ims.qti21.model.audit.CandidateEvent) TestPartSessionState(uk.ac.ed.ph.jqtiplus.state.TestPartSessionState) TestPlanNodeKey(uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey)

Example 48 with Event

use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project openolat by klemens.

the class QTI21AssessmentRunController method event.

@Override
protected void event(UserRequest ureq, Controller source, Event event) {
    if (source == displayCtrl) {
        if (event == Event.CANCELLED_EVENT) {
            doCancelAssessment(ureq);
            initAssessment(ureq);
            showInfo("assessment.test.cancelled");
        } else if ("suspend".equals(event.getCommand())) {
            doExitAssessment(ureq, event, false);
            initAssessment(ureq);
            showInfo("assessment.test.suspended");
        } else if (event instanceof QTI21Event) {
            QTI21Event qe = (QTI21Event) event;
            if (QTI21Event.EXIT.equals(qe.getCommand())) {
                if (!displayCtrl.isResultsVisible()) {
                    doExitAssessment(ureq, event, true);
                    initAssessment(ureq);
                }
            } else if (QTI21Event.CLOSE_RESULTS.equals(qe.getCommand())) {
                doExitAssessment(ureq, event, true);
                initAssessment(ureq);
            }
        }
    }
    super.event(ureq, source, event);
}
Also used : QTI21Event(org.olat.ims.qti21.ui.QTI21Event)

Example 49 with Event

use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project OpenOLAT by OpenOLAT.

the class QTI21AssessmentRunController method event.

@Override
protected void event(UserRequest ureq, Controller source, Event event) {
    if (source == displayCtrl) {
        if (event == Event.CANCELLED_EVENT) {
            doCancelAssessment(ureq);
            initAssessment(ureq);
            showInfo("assessment.test.cancelled");
        } else if ("suspend".equals(event.getCommand())) {
            doExitAssessment(ureq, event, false);
            initAssessment(ureq);
            showInfo("assessment.test.suspended");
        } else if (event instanceof QTI21Event) {
            QTI21Event qe = (QTI21Event) event;
            if (QTI21Event.EXIT.equals(qe.getCommand())) {
                if (!displayCtrl.isResultsVisible()) {
                    doExitAssessment(ureq, event, true);
                    initAssessment(ureq);
                }
            } else if (QTI21Event.CLOSE_RESULTS.equals(qe.getCommand())) {
                doExitAssessment(ureq, event, true);
                initAssessment(ureq);
            }
        }
    }
    super.event(ureq, source, event);
}
Also used : QTI21Event(org.olat.ims.qti21.ui.QTI21Event)

Example 50 with Event

use of org.olat.ims.qti21.ui.QTIWorksAssessmentTestEvent.Event in project OpenOLAT by OpenOLAT.

the class QTI21ServiceImpl method recordCandidateItemEvent.

@Override
public CandidateEvent recordCandidateItemEvent(AssessmentTestSession candidateSession, RepositoryEntryRef testEntry, RepositoryEntryRef entry, CandidateItemEventType itemEventType, ItemSessionState itemSessionState, NotificationRecorder notificationRecorder) {
    CandidateEvent event = new CandidateEvent(candidateSession, testEntry, entry);
    event.setItemEventType(itemEventType);
    return event;
}
Also used : CandidateEvent(org.olat.ims.qti21.model.audit.CandidateEvent)

Aggregations

CandidateEvent (org.olat.ims.qti21.model.audit.CandidateEvent)46 Date (java.util.Date)36 NotificationRecorder (uk.ac.ed.ph.jqtiplus.notification.NotificationRecorder)32 TestSessionState (uk.ac.ed.ph.jqtiplus.state.TestSessionState)32 ItemSessionState (uk.ac.ed.ph.jqtiplus.state.ItemSessionState)22 AssessmentResult (uk.ac.ed.ph.jqtiplus.node.result.AssessmentResult)20 QtiCandidateStateException (uk.ac.ed.ph.jqtiplus.exception.QtiCandidateStateException)19 OLATRuntimeException (org.olat.core.logging.OLATRuntimeException)18 TestPlanNodeKey (uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey)16 TestPlanNode (uk.ac.ed.ph.jqtiplus.state.TestPlanNode)14 HashMap (java.util.HashMap)12 List (java.util.List)10 RetrieveAssessmentTestSessionEvent (org.olat.ims.qti21.ui.event.RetrieveAssessmentTestSessionEvent)10 OLATResourceable (org.olat.core.id.OLATResourceable)8 AssessmentResponse (org.olat.ims.qti21.AssessmentResponse)8 AssessmentTestSession (org.olat.ims.qti21.AssessmentTestSession)8 StringInput (org.olat.ims.qti21.ui.ResponseInput.StringInput)8 FileResponseData (uk.ac.ed.ph.jqtiplus.types.FileResponseData)8 Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)8 ResponseData (uk.ac.ed.ph.jqtiplus.types.ResponseData)8