diff --git a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java index 744c53c390497d5c7de2416a4f026f4f1bd2581a..31e66ffda92db7f4e864fa56c7fcca961a19c867 100644 --- a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java +++ b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java @@ -696,9 +696,9 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements Boolean passed = null; if(cutValue != null) { boolean aboveCutValue = score >= cutValue.floatValue(); - passed = new Boolean(aboveCutValue); + passed = Boolean.valueOf(aboveCutValue); } - ScoreEvaluation sceval = new ScoreEvaluation(new Float(score), passed); + ScoreEvaluation sceval = new ScoreEvaluation(Float.valueOf(score), passed); AssessmentManager am = assessedUserCourseEnv.getCourseEnvironment().getAssessmentManager(); am.saveScoreEvaluation(this, identity, assessedIdentity, sceval, assessedUserCourseEnv, false, by); diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java index 951a2bfd56a3bfa1d7c72358405ff7be33f4aaac..4f685c12f1617d72e90310cd6e0fd2cccf157f4f 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java +++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java @@ -38,6 +38,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.ControllerEventListener; +import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.OLATResourceable; @@ -138,7 +139,7 @@ public class CheckListRunController extends FormBasicController implements Contr boolean readOnly = isReadOnly(); if(formLayout instanceof FormLayoutContainer) { FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; - layoutCont.contextPut("readOnly", new Boolean(readOnly)); + layoutCont.contextPut("readOnly", Boolean.valueOf(readOnly)); if(dueDate != null) { layoutCont.contextPut("dueDate", dueDate); layoutCont.contextPut("in-due-date", isPanelOpen(ureq, "due-date", true)); @@ -290,7 +291,9 @@ public class CheckListRunController extends FormBasicController implements Contr CheckboxWrapper wrapper = (CheckboxWrapper)boxEl.getUserObject(); if(wrapper != null) { boolean checked = boxEl.isAtLeastSelected(1); - doCheck(ureq, wrapper, checked); + if(doCheck(ureq, wrapper, checked)) { + fireEvent(ureq, Event.CHANGED_EVENT); + } } } else if("ONCLICK".equals(event.getCommand())) { String cmd = ureq.getParameter("fcid"); @@ -302,7 +305,7 @@ public class CheckListRunController extends FormBasicController implements Contr super.formInnerEvent(ureq, source, event); } - private void doCheck(UserRequest ureq, CheckboxWrapper wrapper, boolean checked) { + private boolean doCheck(UserRequest ureq, CheckboxWrapper wrapper, boolean checked) { DBCheckbox theOne; if(wrapper.getDbCheckbox() == null) { String uuid = wrapper.getCheckbox().getCheckboxId(); @@ -311,6 +314,7 @@ public class CheckListRunController extends FormBasicController implements Contr theOne = wrapper.getDbCheckbox(); } + boolean grantPoints = false; if(theOne == null) { //only warning because this happen in course preview logWarn("A checkbox is missing: " + courseOres + " / " + courseNode.getIdent(), null); @@ -321,17 +325,23 @@ public class CheckListRunController extends FormBasicController implements Contr } else { score = 0f; } - checkboxManager.check(theOne, getIdentity(), score, new Boolean(checked)); + if(wrapper.getCheckbox().getPoints() != null) { + grantPoints = true; + } + + checkboxManager.check(theOne, getIdentity(), score, Boolean.valueOf(checked)); //make sure all results is on the database before calculating some scores - //manager commit already DBFactory.getInstance().commit(); + //manager commit already courseNode.updateScoreEvaluation(getIdentity(), userCourseEnv, getIdentity(), Role.user); Checkbox checkbox = wrapper.getCheckbox(); logUpdateCheck(checkbox.getCheckboxId(), checkbox.getTitle()); + } exposeUserDataToVC(ureq, flc); + return grantPoints; } private void logUpdateCheck(String checkboxId, String boxTitle) { @@ -353,9 +363,9 @@ public class CheckListRunController extends FormBasicController implements Contr private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); if (guiPrefs != null) { - guiPrefs.putAndSave(CheckListRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + guiPrefs.putAndSave(CheckListRunController.class, getOpenPanelId(panelId), Boolean.valueOf(newValue)); } - flc.getFormItemComponent().contextPut("in-" + panelId, new Boolean(newValue)); + flc.getFormItemComponent().contextPut("in-" + panelId, Boolean.valueOf(newValue)); } private String getOpenPanelId(String panelId) { diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunForCoachController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunForCoachController.java index 7c2fad6e7fe23e43ec3cc11fe719022143784ed2..da5aa23e4e46e6105a977928ad5b698b944ebfc3 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunForCoachController.java +++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunForCoachController.java @@ -27,6 +27,7 @@ import org.olat.core.gui.components.segmentedview.SegmentViewComponent; import org.olat.core.gui.components.segmentedview.SegmentViewEvent; import org.olat.core.gui.components.segmentedview.SegmentViewFactory; import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; @@ -96,6 +97,16 @@ public class CheckListRunForCoachController extends BasicController { } } + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(runController == source) { + if(event == Event.CHANGED_EVENT) { + fireEvent(ureq, event); + } + } + super.event(ureq, source, event); + } + private void doOpenRun(UserRequest ureq) { if(runController == null) { runController = new CheckListRunController(ureq, getWindowControl(), userCourseEnv, courseOres, courseNode);