Search in sources :

Example 16 with AssessmentItemEvent

use of org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent in project openolat by klemens.

the class HotspotEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (readOnly)
        return;
    itemBuilder.setTitle(titleEl.getValue());
    // set the question with the text entries
    String questionText = textEl.getRawValue();
    itemBuilder.setQuestion(questionText);
    itemBuilder.setResponsive(responsiveEl.isAtLeastSelected(1));
    File objectImg = null;
    if (backgroundImage != null) {
        objectImg = backgroundImage;
    } else if (initialBackgroundImage != null) {
        objectImg = initialBackgroundImage;
    }
    if (cardinalityEl.isOneSelected()) {
        String selectedCardinality = cardinalityEl.getSelectedKey();
        itemBuilder.setCardinality(Cardinality.valueOf(selectedCardinality));
    }
    boolean updateHotspot = true;
    if (objectImg != null) {
        String filename = objectImg.getName();
        String mimeType = WebappHelper.getMimeType(filename);
        Size currentSize = imageService.getSize(new LocalFileImpl(objectImg), null);
        Size size = currentSize;
        if (resizeEl.isVisible() && !resizeEl.isSelected(0)) {
            int maxSize = Integer.parseInt(resizeEl.getSelectedKey());
            if (maxSize < currentSize.getHeight() || maxSize < currentSize.getWidth()) {
                String extension = FileUtils.getFileSuffix(filename);
                size = imageService.scaleImage(objectImg, extension, objectImg, maxSize, maxSize, false);
                setBackgroundSize(size);
                scaleHotspot(currentSize, size);
                optimizeResizeEl(size, false);
                updateHotspot = false;
            }
        }
        int height = -1;
        int width = -1;
        if (size != null) {
            height = size.getHeight();
            width = size.getWidth();
        }
        String relPath = itemFile.getParentFile().toPath().relativize(objectImg.toPath()).toString();
        itemBuilder.setBackground(relPath, mimeType, height, width);
    }
    if (updateHotspot) {
        updateHotspots(ureq);
    }
    if (layoutEl.isOneSelected()) {
        String selectedLayout = layoutEl.getSelectedKey();
        for (HotspotLayouts layout : HotspotLayouts.values()) {
            itemBuilder.removeHotspotInteractionClass(layout.cssClass());
        }
        itemBuilder.addHotspotInteractionClass(selectedLayout);
    }
    if (shadowEl.isAtLeastSelected(1)) {
        itemBuilder.removeHotspotInteractionClass(QTI21Constants.CSS_HOTSPOT_DISABLE_SHADOW);
    } else {
        itemBuilder.addHotspotInteractionClass(QTI21Constants.CSS_HOTSPOT_DISABLE_SHADOW);
    }
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.hotspot));
}
Also used : HotspotLayouts(org.olat.ims.qti21.QTI21Constants.HotspotLayouts) Size(org.olat.core.commons.services.image.Size) LocalFileImpl(org.olat.core.util.vfs.LocalFileImpl) File(java.io.File) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 17 with AssessmentItemEvent

use of org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent in project openolat by klemens.

the class KPrimEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (readOnly)
        return;
    // title
    itemBuilder.setTitle(titleEl.getValue());
    // question
    String questionText = textEl.getRawValue();
    itemBuilder.setQuestion(questionText);
    // shuffle
    if (!restrictedEdit) {
        itemBuilder.setShuffle(shuffleEl.isOneSelected() && shuffleEl.isSelected(0));
        // alignment
        if (alignmentEl.isOneSelected() && alignmentEl.isSelected(1)) {
            itemBuilder.addClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        } else {
            itemBuilder.removeClass(QTI21Constants.CHOICE_ALIGN_RIGHT);
        }
    }
    // update kprims
    for (KprimWrapper choiceWrapper : choiceWrappers) {
        SimpleAssociableChoice choice = choiceWrapper.getSimpleChoice();
        String answer = choiceWrapper.getAnswer().getRawValue();
        itemBuilder.getHtmlHelper().appendHtml(choice, answer);
    }
    // set associations
    if (!restrictedEdit) {
        List<SimpleAssociableChoice> choices = new ArrayList<>();
        for (KprimWrapper choiceWrapper : choiceWrappers) {
            SimpleAssociableChoice choice = choiceWrapper.getSimpleChoice();
            Identifier choiceIdentifier = choice.getIdentifier();
            String association = ureq.getHttpReq().getParameter(choiceIdentifier.toString());
            if ("correct".equals(association)) {
                itemBuilder.setAssociation(choiceIdentifier, QTI21Constants.CORRECT_IDENTIFIER);
            } else if ("wrong".equals(association)) {
                itemBuilder.setAssociation(choiceIdentifier, QTI21Constants.WRONG_IDENTIFIER);
            }
            choices.add(choice);
        }
        itemBuilder.setKprimChoices(choices);
    }
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.kprim));
}
Also used : SimpleAssociableChoice(uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice) Identifier(uk.ac.ed.ph.jqtiplus.types.Identifier) ArrayList(java.util.ArrayList) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 18 with AssessmentItemEvent

use of org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent in project openolat by klemens.

the class FeedbacksEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (restrictedEdit || readOnly)
        return;
    hintForm.commit();
    hintForm.setVisible(!hintForm.isEmpty());
    correctSolutionForm.commit();
    correctSolutionForm.setVisible(!correctSolutionForm.isEmpty());
    correctForm.commit();
    correctForm.setVisible(!correctForm.isEmpty());
    incorrectForm.commit();
    incorrectForm.setVisible(!incorrectForm.isEmpty());
    answeredForm.commit();
    answeredForm.setVisible(!answeredForm.isEmpty());
    emptyForm.commit();
    emptyForm.setVisible(!emptyForm.isEmpty());
    List<RuledFeedbackForm> validAdditionalForms = new ArrayList<>();
    List<ModalFeedbackBuilder> additionalBuilders = new ArrayList<>();
    for (RuledFeedbackForm additionalForm : additionalForms) {
        ModalFeedbackBuilder additionalBuilder = additionalForm.commit();
        if (additionalBuilder != null) {
            additionalBuilders.add(additionalBuilder);
            validAdditionalForms.add(additionalForm);
        }
    }
    itemBuilder.setAdditionalFeedbackBuilders(additionalBuilders);
    additionalForms.clear();
    additionalForms.addAll(validAdditionalForms);
    updateAddButtons();
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem()));
}
Also used : ModalFeedbackBuilder(org.olat.ims.qti21.model.xml.ModalFeedbackBuilder) ArrayList(java.util.ArrayList) AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 19 with AssessmentItemEvent

use of org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent in project openolat by klemens.

the class UnkownItemEditorController method doConvertItem.

private void doConvertItem(UserRequest ureq, QTI21QuestionType alternativeType) {
    item.setToolName(QTI21Constants.TOOLNAME);
    item.setToolVersion(Settings.getVersion());
    if (alternativeType == QTI21QuestionType.matchdraganddrop) {
        addClassToInteraction(QTI21Constants.CSS_MATCH_DRAG_AND_DROP);
    }
    qtiService.updateAssesmentObject(itemFileRef, resolvedAssessmentItem);
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_NEED_RELOAD, item));
}
Also used : AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Example 20 with AssessmentItemEvent

use of org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent in project OpenOLAT by OpenOLAT.

the class EssayEditorController method formOK.

@Override
protected void formOK(UserRequest ureq) {
    if (readOnly)
        return;
    // title
    itemBuilder.setTitle(titleEl.getValue());
    // question
    String questionText = textEl.getRawValue();
    itemBuilder.setQuestion(questionText);
    itemBuilder.setPlaceholder(placeholderEl.getValue());
    if (!restrictedEdit) {
        itemBuilder.setExpectedLength(getValue(lengthEl));
        itemBuilder.setExpectedLines(getValue(heightEl));
        // min. max. words
        itemBuilder.setMinStrings(getValue(minWordsEl));
        itemBuilder.setMaxStrings(getValue(maxWordsEl));
    }
    fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.essay));
}
Also used : AssessmentItemEvent(org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)

Aggregations

AssessmentItemEvent (org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent)42 ArrayList (java.util.ArrayList)9 SimpleAssociableChoice (uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleAssociableChoice)6 Identifier (uk.ac.ed.ph.jqtiplus.types.Identifier)6 File (java.io.File)4 Size (org.olat.core.commons.services.image.Size)4 LocalFileImpl (org.olat.core.util.vfs.LocalFileImpl)4 AssessmentItemFactory.createSimpleAssociableChoice (org.olat.ims.qti21.model.xml.AssessmentItemFactory.createSimpleAssociableChoice)4 DetachFromPoolEvent (org.olat.ims.qti21.ui.editor.events.DetachFromPoolEvent)4 SimpleChoice (uk.ac.ed.ph.jqtiplus.node.item.interaction.choice.SimpleChoice)4 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 GenericTreeNode (org.olat.core.gui.components.tree.GenericTreeNode)2 TreeNode (org.olat.core.gui.components.tree.TreeNode)2 HotspotLayouts (org.olat.ims.qti21.QTI21Constants.HotspotLayouts)2 ModalFeedbackBuilder (org.olat.ims.qti21.model.xml.ModalFeedbackBuilder)2 AssessmentItemsPackage (org.olat.ims.qti21.questionimport.AssessmentItemsPackage)2 AssessmentSectionEvent (org.olat.ims.qti21.ui.editor.events.AssessmentSectionEvent)2 AssessmentTestEvent (org.olat.ims.qti21.ui.editor.events.AssessmentTestEvent)2