From 9ab76eb04a97a4539d703321059ed5f099516af0 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Fri, 24 Jan 2020 08:01:20 +0100
Subject: [PATCH] OO-4206: RS when save configuration without duration

---
 .../model/ModuleLearningPathConfigs.java       | 18 +++++++++++++++---
 .../ui/LearningPathNodeConfigController.java   |  4 +++-
 .../ui/_i18n/LocalStrings_de.properties        |  2 +-
 .../nodes/gta/GTALearningPathConfigs.java      |  6 ++++++
 4 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java b/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java
index eb99b566189..60ea0bad9a2 100644
--- a/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java
+++ b/src/main/java/org/olat/course/learningpath/model/ModuleLearningPathConfigs.java
@@ -65,7 +65,11 @@ public class ModuleLearningPathConfigs implements LearningPathConfigs {
 
 	@Override
 	public void setDuration(Integer duration) {
-		moduleConfiguration.setStringValue(CONFIG_KEY_DURATION, duration.toString());
+		if (duration != null) {
+			moduleConfiguration.setStringValue(CONFIG_KEY_DURATION, duration.toString());
+		} else {
+			moduleConfiguration.remove(CONFIG_KEY_DURATION);
+		}
 	}
 
 	private Integer integerOrNull(String value) {
@@ -89,7 +93,11 @@ public class ModuleLearningPathConfigs implements LearningPathConfigs {
 
 	@Override
 	public void setObligation(AssessmentObligation obligation) {
-		moduleConfiguration.setStringValue(CONFIG_KEY_OBLIGATION, obligation.name());
+		if (obligation != null) {
+			moduleConfiguration.setStringValue(CONFIG_KEY_OBLIGATION, obligation.name());
+		} else {
+			moduleConfiguration.remove(CONFIG_KEY_OBLIGATION);
+		}
 	}
 
 	@Override
@@ -114,7 +122,11 @@ public class ModuleLearningPathConfigs implements LearningPathConfigs {
 
 	@Override
 	public void setFullyAssessedTrigger(FullyAssessedTrigger trigger) {
-		moduleConfiguration.setStringValue(CONFIG_KEY_TRIGGER, trigger.name());
+		if (trigger != null) {
+			moduleConfiguration.setStringValue(CONFIG_KEY_TRIGGER, trigger.name());
+		} else {
+			moduleConfiguration.remove(CONFIG_KEY_TRIGGER);
+		}
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/learningpath/ui/LearningPathNodeConfigController.java b/src/main/java/org/olat/course/learningpath/ui/LearningPathNodeConfigController.java
index d67057f2847..fb6a387644c 100644
--- a/src/main/java/org/olat/course/learningpath/ui/LearningPathNodeConfigController.java
+++ b/src/main/java/org/olat/course/learningpath/ui/LearningPathNodeConfigController.java
@@ -220,7 +220,9 @@ public class LearningPathNodeConfigController extends FormBasicController {
 
 	@Override
 	protected void formOK(UserRequest ureq) {
-		Integer duration = Integer.valueOf(durationEl.getValue());
+		Integer duration = StringHelper.containsNonWhitespace(durationEl.getValue())
+				? Integer.valueOf(durationEl.getValue())
+				: null;
 		learningPathConfigs.setDuration(duration);
 		
 		AssessmentObligation obligation = obligationEl.isOneSelected()
diff --git a/src/main/java/org/olat/course/learningpath/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/learningpath/ui/_i18n/LocalStrings_de.properties
index 020801316e6..b76d6091352 100644
--- a/src/main/java/org/olat/course/learningpath/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/learningpath/ui/_i18n/LocalStrings_de.properties
@@ -29,7 +29,7 @@ identity.list.course=im Kurs {0}
 identity.list.title=Lernpfad
 my.list.course=im Kurs {0}
 my.list.title=Mein Lernpfad
-no.configurations=In diesen Kursbaustein stehen keine Konfigurationen zum Lernpfad zu Verf\u00FCgung.
+no.configurations=In diesem Kursbaustein stehen keine Konfigurationen zum Lernpfad zur Verf\u00FCgung.
 pane.tab.learning.path=Lernpfad
 passed.false=$org.olat.course.assessment\:passed.false
 passed.true=$org.olat.course.assessment\:passed.true
diff --git a/src/main/java/org/olat/course/nodes/gta/GTALearningPathConfigs.java b/src/main/java/org/olat/course/nodes/gta/GTALearningPathConfigs.java
index b0df820696f..6237a1b980d 100644
--- a/src/main/java/org/olat/course/nodes/gta/GTALearningPathConfigs.java
+++ b/src/main/java/org/olat/course/nodes/gta/GTALearningPathConfigs.java
@@ -43,4 +43,10 @@ public class GTALearningPathConfigs extends ModuleLearningPathConfigs {
 				: AssessmentObligation.mandatory;
 	}
 
+	@Override
+	public void setObligation(AssessmentObligation obligation) {
+		boolean valuea = obligation != null && AssessmentObligation.optional.equals(obligation);
+		moduleConfiguration.setBooleanEntry(MSCourseNode.CONFIG_KEY_OPTIONAL, valuea );
+	}
+
 }
-- 
GitLab