diff --git a/src/main/java/de/bps/olat/modules/cl/ChecklistEditCheckpointsController.java b/src/main/java/de/bps/olat/modules/cl/ChecklistEditCheckpointsController.java index 5a062889b4caf732ac1aae5dc38a4b852e806a6b..9ebb83f7d43044ca334409c4ee798c381133145a 100644 --- a/src/main/java/de/bps/olat/modules/cl/ChecklistEditCheckpointsController.java +++ b/src/main/java/de/bps/olat/modules/cl/ChecklistEditCheckpointsController.java @@ -21,6 +21,7 @@ package de.bps.olat.modules.cl; import java.util.ArrayList; import java.util.Date; +import java.util.List; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; @@ -53,10 +54,10 @@ public class ChecklistEditCheckpointsController extends FormBasicController { // GUI private FormLayoutContainer titleContainer, buttonContainer; private DialogBoxController yesNoController; - private ArrayList<TextElement> titleInputList; - private ArrayList<TextElement> descriptionInputList; - private ArrayList<SingleSelection> modeInputList; - private ArrayList<FormLink> delButtonList; + private List<TextElement> titleInputList; + private List<TextElement> descriptionInputList; + private List<SingleSelection> modeInputList; + private List<FormLink> delButtonList; private String submitKey; private FormLink addButton; private CheckpointComparator checkpointComparator = ChecklistUIFactory.comparatorTitleAsc; @@ -64,6 +65,7 @@ public class ChecklistEditCheckpointsController extends FormBasicController { // data private long counter = 0; private Checklist checklist; + private List<Checkpoint> checkpointsInVc; // helpers private boolean deletedOK = true; @@ -82,10 +84,11 @@ public class ChecklistEditCheckpointsController extends FormBasicController { } int size = checklist.getCheckpoints().size(); - titleInputList = new ArrayList<TextElement>(size); - descriptionInputList = new ArrayList<TextElement>(size); - modeInputList = new ArrayList<SingleSelection>(size); - delButtonList = new ArrayList<FormLink>(size); + checkpointsInVc = new ArrayList<>(size); + titleInputList = new ArrayList<>(size); + descriptionInputList = new ArrayList<>(size); + modeInputList = new ArrayList<>(size); + delButtonList = new ArrayList<>(size); initForm(ureq); } @@ -124,6 +127,9 @@ public class ChecklistEditCheckpointsController extends FormBasicController { } checklist = checklistManager.updateChecklist(checklist); DBFactory.getInstance().commit(); + checkpointsInVc.clear(); + checkpointsInVc.addAll(checklist.getCheckpointsSorted(checkpointComparator)); + titleContainer.contextPut("checkpoints", checkpointsInVc); // Inform all listeners about the changes fireEvent(ureq, Event.CHANGED_EVENT); } @@ -173,6 +179,7 @@ public class ChecklistEditCheckpointsController extends FormBasicController { protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (source.getComponent() instanceof Link) { if (addButton.equals(source)) { + int index = checklist.getCheckpoints().size(); // add a new form link Checkpoint newCheckpoint = new Checkpoint(); newCheckpoint.setChecklist(checklist); @@ -180,9 +187,10 @@ public class ChecklistEditCheckpointsController extends FormBasicController { newCheckpoint.setTitle(""); newCheckpoint.setDescription(""); newCheckpoint.setMode(CheckpointMode.MODE_EDITABLE); - int index = checklist.getCheckpoints().size(); checklist.addCheckpoint(index, newCheckpoint); addNewFormCheckpoint(index, newCheckpoint); + checkpointsInVc.add(newCheckpoint); + flc.setDirty(true); } else if (delButtonList.contains(source)) { // special case: only one line existent if (checklist.getCheckpoints().size() == 1) { @@ -215,9 +223,10 @@ public class ChecklistEditCheckpointsController extends FormBasicController { titleContainer = FormLayoutContainer.createCustomFormLayout("titleLayout", getTranslator(), velocity_root + "/edit.html"); fic.add(titleContainer); // create gui elements for all checkpoints - if(checklist.getCheckpoints().size() == 0) { + int numOfCheckpoints = checklist.getCheckpoints().size(); + if(numOfCheckpoints == 0) { Checkpoint newCheckpoint = new Checkpoint(); - newCheckpoint.setChecklist(this.checklist); + newCheckpoint.setChecklist(checklist); newCheckpoint.setLastModified(new Date()); newCheckpoint.setTitle(""); newCheckpoint.setDescription(""); @@ -225,7 +234,7 @@ public class ChecklistEditCheckpointsController extends FormBasicController { checklist.addCheckpoint(0, newCheckpoint); addNewFormCheckpoint(0, newCheckpoint); } else { - for (int i = 0; i < checklist.getCheckpoints().size(); i++) { + for (int i = 0; i<numOfCheckpoints; i++) { Checkpoint checkpoint = checklist.getCheckpointsSorted(checkpointComparator).get(i); addNewFormCheckpoint(i, checkpoint); } @@ -233,8 +242,9 @@ public class ChecklistEditCheckpointsController extends FormBasicController { addButton = new FormLinkImpl("add" + counter, "add" + counter, "cl.table.add", Link.BUTTON_SMALL); addButton.setUserObject(checklist.getCheckpointsSorted(checkpointComparator).get(checklist.getCheckpoints().size() - 1)); titleContainer.add(addButton); - - titleContainer.contextPut("checkpoints", checklist.getCheckpointsSorted(checkpointComparator)); + + checkpointsInVc.addAll(checklist.getCheckpointsSorted(checkpointComparator)); + titleContainer.contextPut("checkpoints", checkpointsInVc); titleContainer.contextPut("titleInputList", titleInputList); titleContainer.contextPut("descriptionInputList", descriptionInputList); titleContainer.contextPut("modeInputList", modeInputList); diff --git a/src/main/java/org/olat/course/nodes/iq/IQEditController.java b/src/main/java/org/olat/course/nodes/iq/IQEditController.java index ae4dffddb913c88780e36b3f92c128a088756fde..6e364031f83fb9cb8fe1871642e9601972c07216 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQEditController.java +++ b/src/main/java/org/olat/course/nodes/iq/IQEditController.java @@ -641,6 +641,7 @@ public class IQEditController extends ActivateableTabbableDefaultController impl private void checkEssay(RepositoryEntry re) { if(OnyxModule.isOnyxTest(re.getOlatResource())) return; + if(courseNode instanceof IQSURVCourseNode || courseNode instanceof IQSELFCourseNode) return; TestFileResource fr = new TestFileResource(); fr.overrideResourceableId(re.getOlatResource().getResourceableId()); diff --git a/src/main/java/org/olat/ims/qti/editor/EssayItemController.java b/src/main/java/org/olat/ims/qti/editor/EssayItemController.java index a4dd74647f11f2a6ede1f84353dc1a2da164bc61..34ec7d258961970dd15f606a78f778100944c441 100644 --- a/src/main/java/org/olat/ims/qti/editor/EssayItemController.java +++ b/src/main/java/org/olat/ims/qti/editor/EssayItemController.java @@ -121,13 +121,15 @@ public class EssayItemController extends DefaultController implements Controller try { String score = ureq.getParameter("single_score"); float sc = Float.parseFloat(score); - if(sc <= 0.0001f) { + if(sc <= 0.0001f && !qtiPackage.getQTIDocument().isSurvey()) { getWindowControl().setWarning(trnsltr.translate("editor.info.mc.zero.points")); } essayQuestion.setMinValue(0.0f); essayQuestion.setMaxValue(sc); } catch(Exception e) { - getWindowControl().setWarning(trnsltr.translate("editor.info.mc.zero.points")); + if(!qtiPackage.getQTIDocument().isSurvey()) { + getWindowControl().setWarning(trnsltr.translate("editor.info.mc.zero.points")); + } } if (restrictedEdit) {