From 4a9f4c607b056fa4f7267396fd913c0341150238 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 4 Jun 2015 11:08:36 +0200
Subject: [PATCH] OO-1494: apply attempts rule to survey course element too,
 wording

---
 src/main/java/org/olat/admin/user/imp/_content/step1.html | 5 ++++-
 .../olat/admin/user/imp/_i18n/LocalStrings_de.properties  | 1 +
 .../olat/admin/user/imp/_i18n/LocalStrings_en.properties  | 1 +
 src/main/java/org/olat/course/nodes/IQSELFCourseNode.java | 5 +++++
 src/main/java/org/olat/course/nodes/QTICourseNode.java    | 8 ++++++++
 .../org/olat/course/reminder/rule/AttemptsRuleSPI.java    | 7 +++----
 .../org/olat/course/reminder/ui/AttemptsRuleEditor.java   | 6 ++++++
 7 files changed, 28 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/olat/admin/user/imp/_content/step1.html b/src/main/java/org/olat/admin/user/imp/_content/step1.html
index 7054233a149..5ce3a98512e 100644
--- a/src/main/java/org/olat/admin/user/imp/_content/step1.html
+++ b/src/main/java/org/olat/admin/user/imp/_content/step1.html
@@ -4,9 +4,12 @@
 #else 
 	$r.translate("step1.nonewusers")
 #end
+#if($r.visible("update.password"))
+	<br/><br/>$r.translate("step1.passwordEmails")
+#end
 
 #if($r.visible("update.user"))
-		<br/><br/>$r.render("update.user")
+	<br/><br/>$r.render("update.user")
 #end
 #if($r.visible("update.password"))
 	#if(!$r.visible("update.user"))
diff --git a/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_de.properties
index 90b46a6566d..1ec4ecb6106 100644
--- a/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_de.properties
@@ -36,6 +36,7 @@ step0.description=Datenbeispiele und Daten einf\u00FCgen
 step0.short.descr=User importieren.
 step1.description=Vorschau der Benutzerdaten
 step1.nonewusers=Die Tabelle enth\u00E4lt keine neuen Benutzer. Sie k\u00F6nnen keine Benutzer importieren.
+step1.passwordEmails=Achtung: bei Passwort\u00E4nderungen f\u00FCr existierende Benutzer wird un abh\u00E4ngig von ihren Einstellungen eine E-Mail-Benachrichtigung verschickt.
 step1.short.descr=Vorschau
 step2.description=Gruppe(n) auswählen
 step3.description=E-Mail-Benachrichtigung
diff --git a/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_en.properties
index c53eca5f144..a3f2f926895 100644
--- a/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/admin/user/imp/_i18n/LocalStrings_en.properties
@@ -36,6 +36,7 @@ step0.description=View examples and insert data
 step0.short.descr=Import user
 step1.description=Preview of user data
 step1.nonewusers=There are no new users in this table. You will not be able to import new users.
+step1.passwordEmails=When updating passwords of already existing users, an e-mail notification will be send regardless of your e-mail preferences.
 step1.short.descr=Preview
 step2.description=Choose group(s)
 step3.description=E-Mail notification
diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
index 43d0921d474..3095ee1d26e 100644
--- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java
@@ -191,6 +191,11 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se
 	public boolean needsReferenceToARepositoryEntry() {
 		return true;
 	}
+	
+	@Override
+	public boolean hasAttemptsConfigured() {
+		return false;
+	}
 
 	/**
 	 * @see org.olat.course.nodes.CourseNode#informOnDelete(org.olat.core.gui.UserRequest,
diff --git a/src/main/java/org/olat/course/nodes/QTICourseNode.java b/src/main/java/org/olat/course/nodes/QTICourseNode.java
index 5cab88d2332..993aad34e01 100644
--- a/src/main/java/org/olat/course/nodes/QTICourseNode.java
+++ b/src/main/java/org/olat/course/nodes/QTICourseNode.java
@@ -19,6 +19,14 @@
  */
 package org.olat.course.nodes;
 
+/**
+ * 
+ * Initial date: 04.06.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
 public interface QTICourseNode extends CourseNode {
+	
+	public boolean hasAttemptsConfigured();
 
 }
diff --git a/src/main/java/org/olat/course/reminder/rule/AttemptsRuleSPI.java b/src/main/java/org/olat/course/reminder/rule/AttemptsRuleSPI.java
index bc7d744c91d..d204cc5d8fd 100644
--- a/src/main/java/org/olat/course/reminder/rule/AttemptsRuleSPI.java
+++ b/src/main/java/org/olat/course/reminder/rule/AttemptsRuleSPI.java
@@ -88,10 +88,9 @@ public class AttemptsRuleSPI implements FilterRuleSPI {
 				Identity identity = identityIt.next();
 				Integer attempt = attempts.get(identity.getKey());
 				if(attempt == null) {
-					if(!operator.equals("!=")) {//always different
-						identityIt.remove();
-					}
-				} else if(!evaluateAttempt(attempt.intValue(), operator, value)) {
+					attempt = 0;
+				}
+				if(!evaluateAttempt(attempt.intValue(), operator, value)) {
 					identityIt.remove();
 				}
 			}
diff --git a/src/main/java/org/olat/course/reminder/ui/AttemptsRuleEditor.java b/src/main/java/org/olat/course/reminder/ui/AttemptsRuleEditor.java
index afcbbdc33a4..d21c51e6513 100644
--- a/src/main/java/org/olat/course/reminder/ui/AttemptsRuleEditor.java
+++ b/src/main/java/org/olat/course/reminder/ui/AttemptsRuleEditor.java
@@ -36,6 +36,7 @@ import org.olat.course.CourseFactory;
 import org.olat.course.ICourse;
 import org.olat.course.nodes.AssessableCourseNode;
 import org.olat.course.nodes.CourseNode;
+import org.olat.course.nodes.QTICourseNode;
 import org.olat.course.reminder.rule.AttemptsRuleSPI;
 import org.olat.modules.reminder.ReminderRule;
 import org.olat.modules.reminder.RuleEditorFragment;
@@ -146,6 +147,11 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
 			if (assessableCourseNode.hasAttemptsConfigured()) {
 				nodes.add(courseNode);
 			}
+		} else if (courseNode instanceof QTICourseNode) {
+			QTICourseNode assessableCourseNode = (QTICourseNode) courseNode;
+			if (assessableCourseNode.hasAttemptsConfigured()) {
+				nodes.add(courseNode);
+			}
 		}
 		
 		for(int i=0; i<courseNode.getChildCount(); i++) {
-- 
GitLab