Skip to content
Snippets Groups Projects
Commit 9b1f6367 authored by srosse's avatar srosse
Browse files

Merge OpenOLAT 10.3 to OpenOLAT default branch with fe3b9951a768bd64b1df9fe7e603e10022d0cc04

parents 2097cc92 706ff1dc
No related branches found
No related tags found
No related merge requests found
Showing
with 78 additions and 54 deletions
......@@ -618,9 +618,9 @@ public class GTAWorkflowEditController extends FormBasicController {
} else {
chooseGroupButton.setI18nKey("create.groups");
}
groupListEl.getRootForm().submit(ureq);
cmc.deactivate();
cleanUp();
groupListEl.getRootForm().submit(ureq);
} else if(event == Event.CANCELLED_EVENT) {
cmc.deactivate();
cleanUp();
......@@ -634,6 +634,8 @@ public class GTAWorkflowEditController extends FormBasicController {
} else {
chooseAreaButton.setI18nKey("create.areas");
}
cmc.deactivate();
cleanUp();
areaListEl.getRootForm().submit(ureq);
} else if (event == Event.CANCELLED_EVENT) {
cmc.deactivate();
......
......@@ -74,6 +74,7 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
.createCustomFormLayout("attempts.".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
......@@ -101,7 +102,7 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
nodeValues[i] = attemptableNode.getShortTitle() + " ( " + attemptableNode.getIdent() + " )";
}
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes", null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes.".concat(id), null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl.setDomReplacementWrapperRequired(false);
boolean nodeSelected = false;
if(currentCourseNode != null) {
......@@ -119,7 +120,7 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
courseNodeEl.setErrorKey("error.course.node.found", null);
}
operatorEl = uifactory.addDropdownSingleselect("operators", null, ruleCont, operatorKeys, operatorKeys, null);
operatorEl = uifactory.addDropdownSingleselect("operators.".concat(id), null, ruleCont, operatorKeys, operatorKeys, null);
operatorEl.setDomReplacementWrapperRequired(false);
boolean opSelected = false;
if(currentOperator != null) {
......@@ -134,7 +135,7 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
operatorEl.select(operatorKeys[2], true);
}
valueEl = uifactory.addTextElement("value", null, 128, currentValue, ruleCont);
valueEl = uifactory.addTextElement("value.".concat(id), null, 128, currentValue, ruleCont);
valueEl.setDomReplacementWrapperRequired(false);
valueEl.setDisplaySize(3);
......@@ -180,6 +181,9 @@ public class AttemptsRuleEditor extends RuleEditorFragment {
if(!StringHelper.containsNonWhitespace(valueEl.getValue())) {
valueEl.setErrorKey("form.mandatory.hover", null);
allOk &= false;
} else if(!StringHelper.isLong(valueEl.getValue())) {
valueEl.setErrorKey("error.int", null);
allOk &= false;
}
return allOk;
......
......@@ -78,6 +78,7 @@ public class InitialAttemptsRuleEditor extends RuleEditorFragment {
.createCustomFormLayout("attempts.".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
......@@ -105,7 +106,7 @@ public class InitialAttemptsRuleEditor extends RuleEditorFragment {
nodeValues[i] = attemptableNode.getShortTitle() + " ( " + attemptableNode.getIdent() + " )";
}
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes", null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes.".concat(id), null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl.setDomReplacementWrapperRequired(false);
boolean nodeSelected = false;
if(currentCourseNode != null) {
......@@ -123,7 +124,7 @@ public class InitialAttemptsRuleEditor extends RuleEditorFragment {
courseNodeEl.setErrorKey("error.course.node.found", null);
}
valueEl = uifactory.addTextElement("attemptvalue", null, 128, currentValue, ruleCont);
valueEl = uifactory.addTextElement("attemptvalue.".concat(id), null, 128, currentValue, ruleCont);
valueEl.setDomReplacementWrapperRequired(false);
valueEl.setDisplaySize(3);
......@@ -132,7 +133,7 @@ public class InitialAttemptsRuleEditor extends RuleEditorFragment {
trans.translate(LaunchUnit.month.name()), trans.translate(LaunchUnit.year.name())
};
unitEl = uifactory.addDropdownSingleselect("attemptunit", null, ruleCont, unitKeys, unitValues, null);
unitEl = uifactory.addDropdownSingleselect("attemptunit.".concat(id), null, ruleCont, unitKeys, unitValues, null);
unitEl.setDomReplacementWrapperRequired(false);
boolean selected = false;
if(currentUnit != null) {
......@@ -184,6 +185,9 @@ public class InitialAttemptsRuleEditor extends RuleEditorFragment {
if(!StringHelper.containsNonWhitespace(valueEl.getValue())) {
valueEl.setErrorKey("form.mandatory.hover", null);
allOk &= false;
} else if(!StringHelper.isLong(valueEl.getValue())) {
valueEl.setErrorKey("error.int", null);
allOk &= false;
}
return allOk;
......
......@@ -72,6 +72,7 @@ public class PassedRuleEditor extends RuleEditorFragment {
.createCustomFormLayout("attempts.".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
......@@ -95,7 +96,7 @@ public class PassedRuleEditor extends RuleEditorFragment {
nodeValues[i] = attemptableNode.getShortTitle() + " ( " + attemptableNode.getIdent() + " )";
}
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes", null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes.".concat(id), null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl.setDomReplacementWrapperRequired(false);
boolean nodeSelected = false;
if(currentCourseNode != null) {
......@@ -118,7 +119,7 @@ public class PassedRuleEditor extends RuleEditorFragment {
trans.translate("passed"), trans.translate("failed")
};
statusEl = uifactory.addDropdownSingleselect("status", null, ruleCont, statusKeys, statusValues, null);
statusEl = uifactory.addDropdownSingleselect("status.".concat(id), null, ruleCont, statusKeys, statusValues, null);
statusEl.setDomReplacementWrapperRequired(false);
boolean statusSelected = false;
if(currentStatus != null) {
......
......@@ -72,6 +72,7 @@ public class ScoreRuleEditor extends RuleEditorFragment {
.createCustomFormLayout("attempts.".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
ICourse course = CourseFactory.loadCourse(entry.getOlatResource());
......@@ -99,7 +100,7 @@ public class ScoreRuleEditor extends RuleEditorFragment {
nodeValues[i] = attemptableNode.getShortTitle() + " ( " + attemptableNode.getIdent() + " )";
}
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes", null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl = uifactory.addDropdownSingleselect("coursenodes.".concat(id), null, ruleCont, nodeKeys, nodeValues, null);
courseNodeEl.setDomReplacementWrapperRequired(false);
boolean nodeSelected = false;
if(currentCourseNode != null) {
......@@ -117,7 +118,7 @@ public class ScoreRuleEditor extends RuleEditorFragment {
courseNodeEl.setErrorKey("error.course.node.found", null);
}
operatorEl = uifactory.addDropdownSingleselect("operators", null, ruleCont, operatorKeys, operatorKeys, null);
operatorEl = uifactory.addDropdownSingleselect("operators.".concat(id), null, ruleCont, operatorKeys, operatorKeys, null);
operatorEl.setDomReplacementWrapperRequired(false);
boolean opSelected = false;
if(currentOperator != null) {
......@@ -132,7 +133,7 @@ public class ScoreRuleEditor extends RuleEditorFragment {
operatorEl.select(operatorKeys[2], true);
}
valueEl = uifactory.addTextElement("value", null, 128, currentValue, ruleCont);
valueEl = uifactory.addTextElement("value.".concat(id), null, 128, currentValue, ruleCont);
valueEl.setDomReplacementWrapperRequired(false);
valueEl.setDisplaySize(3);
......
<div class='form-inline'>
$r.render("coursenodes") $r.render("operators") $r.render("value")
#if($f.hasError("value"))
<br/>$r.render("value_ERROR")
$r.render("coursenodes.${id}") $r.render("operators.${id}") $r.render("value.${id}")
#if($f.hasError("value.${id}"))
<br/>$r.render("value.${id}_ERROR")
#end
#if($f.hasError("coursenodes"))
<br/>$r.render("coursenodes_ERROR")
#if($f.hasError("coursenodes.${id}"))
<br/>$r.render("coursenodes.${id}_ERROR")
#end
#if($f.hasError("operators"))
<br/>$r.render("operators_ERROR")
#if($f.hasError("operators.${id}"))
<br/>$r.render("operators.${id}_ERROR")
#end
</div>
\ No newline at end of file
<div class='form-inline'>
$r.render("coursenodes") $r.render("attemptvalue") $r.render("attemptunit") <span class="form-control-static">$r.translate("ago")</span>
#if($f.hasError("attemptvalue"))
<br/>$r.render("attemptvalue_ERROR")
$r.render("coursenodes.${id}") $r.render("attemptvalue.${id}") $r.render("attemptunit.${id}") <span class="form-control-static">$r.translate("ago")</span>
#if($f.hasError("attemptvalue.${id}"))
<br/>$r.render("attemptvalue.${id}_ERROR")
#end
#if($f.hasError("coursenodes"))
<br/>$r.render("coursenodes_ERROR")
#if($f.hasError("coursenodes.${id}"))
<br/>$r.render("coursenodes.${id}_ERROR")
#end
#if($f.hasError("attemptunit"))
<br/>$r.render("attemptunit_ERROR")
#if($f.hasError("attemptunit.${id}"))
<br/>$r.render("attemptunit.${id}_ERROR")
#end
</div>
\ No newline at end of file
<div class='form-inline'>
$r.render("coursenodes") $r.render("status")
#if($f.hasError("status"))
<br/>$r.render("status_ERROR")
$r.render("coursenodes.${id}") $r.render("status.${id}")
#if($f.hasError("status.${id}"))
<br/>$r.render("status.${id}_ERROR")
#end
#if($f.hasError("coursenodes"))
<br/>$r.render("coursenodes_ERROR")
#if($f.hasError("coursenodes.${id}"))
<br/>$r.render("coursenodes.${id}_ERROR")
#end
</div>
\ No newline at end of file
<div class='form-inline'>
$r.render("coursenodes") $r.render("operators") $r.render("value") <span class="form-control-static">$r.translate("points")</span>
#if($f.hasError("value"))
<br/>$r.render("value_ERROR")
$r.render("coursenodes.${id}") $r.render("operators.${id}") $r.render("value.${id}") <span class="form-control-static">$r.translate("points")</span>
#if($f.hasError("value.${id}"))
<br/>$r.render("value.${id}_ERROR")
#end
#if($f.hasError("coursenodes"))
<br/>$r.render("coursenodes_ERROR")
#if($f.hasError("coursenodes.${id}"))
<br/>$r.render("coursenodes.${id}_ERROR")
#end
#if($f.hasError("operators"))
<br/>$r.render("operators_ERROR")
#if($f.hasError("operators.${id}"))
<br/>$r.render("operators.${id}_ERROR")
#end
</div>
\ No newline at end of file
......@@ -14,6 +14,7 @@ duplicate=Duplizieren
edit.reminder=Erinnerung bearbeiten
email.content=E-Mail
error.course.node.found=Kurselement existiert nicht mehr
error.int=Ganzzahliger Wert erwartet
failed=Fehlgeschlagen
logs=Protokoll versendeter Erinnerungen
logs.intro=In der untenstehenden Liste sind alle versendeten Erinnerungen aufgeführt.
......
......@@ -14,6 +14,7 @@ duplicate=Duplicate
edit.reminder=Edit reminder
email.content=E-Mail
error.course.node.found=The course element doesn't exist
error.int=Value should be an integer
failed=Failed
logs=Sent reminder log
logs.intro=All sent reminders are listed in the log below.
......
......@@ -31,6 +31,7 @@ import java.util.List;
import java.util.UUID;
import org.apache.velocity.VelocityContext;
import org.olat.core.gui.translator.Translator;
import org.olat.core.helpers.Settings;
import org.olat.core.id.Identity;
import org.olat.core.id.User;
......@@ -39,6 +40,8 @@ import org.olat.core.logging.OLog;
import org.olat.core.logging.Tracing;
import org.olat.core.util.Formatter;
import org.olat.core.util.StringHelper;
import org.olat.core.util.Util;
import org.olat.core.util.i18n.I18nModule;
import org.olat.core.util.mail.ContactList;
import org.olat.core.util.mail.MailBundle;
import org.olat.core.util.mail.MailContext;
......@@ -58,6 +61,7 @@ import org.olat.modules.reminder.model.ReminderInfos;
import org.olat.modules.reminder.model.ReminderRuleImpl;
import org.olat.modules.reminder.model.ReminderRules;
import org.olat.modules.reminder.rule.DateRuleSPI;
import org.olat.modules.reminder.ui.ReminderAdminController;
import org.olat.repository.RepositoryEntry;
import org.olat.repository.RepositoryEntryRef;
import org.olat.user.UserManager;
......@@ -238,7 +242,8 @@ public class ReminderServiceImpl implements ReminderService {
contactList.addAllIdentites(identitiesToRemind);
MailContext context = new MailContextImpl("[RepositoryEntry:" + entry.getKey() + "]");
String subject = "Reminder";
Translator trans = Util.createPackageTranslator(ReminderAdminController.class, I18nModule.getDefaultLocale());
String subject = trans.translate("reminder.subject");
String body = reminder.getEmailBody();
String metaId = UUID.randomUUID().toString();
String url = Settings.getServerContextPathURI() + "/url/RepositoryEntry/" + entry.getKey();
......
......@@ -68,6 +68,7 @@ public class BusinessGroupRoleEditor extends RuleEditorFragment {
.createCustomFormLayout(".".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
String currentKey = null;
if(rule instanceof ReminderRuleImpl) {
......@@ -89,7 +90,7 @@ public class BusinessGroupRoleEditor extends RuleEditorFragment {
values[count++] = businessGroup.getName();
}
groupEl = uifactory.addDropdownSingleselect("ruleElement", null, ruleCont, keys, values, null);
groupEl = uifactory.addDropdownSingleselect("ruleElement.".concat(id), null, ruleCont, keys, values, null);
if(selectedKey != null) {
groupEl.select(selectedKey, true);
}
......
......@@ -67,6 +67,7 @@ public class CourseLaunchRuleEditor extends RuleEditorFragment {
.createCustomFormLayout("course.launch.".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
String currentValue = null;
String currentUnit = null;
......@@ -76,7 +77,7 @@ public class CourseLaunchRuleEditor extends RuleEditorFragment {
currentUnit = r.getRightUnit();
}
valueEl = uifactory.addTextElement("launchvalue", null, 128, currentValue, ruleCont);
valueEl = uifactory.addTextElement("launchvalue.".concat(id), null, 128, currentValue, ruleCont);
valueEl.setDomReplacementWrapperRequired(false);
valueEl.setDisplaySize(3);
......@@ -85,7 +86,7 @@ public class CourseLaunchRuleEditor extends RuleEditorFragment {
trans.translate(LaunchUnit.month.name()), trans.translate(LaunchUnit.year.name())
};
unitEl = uifactory.addDropdownSingleselect("launchunit", null, ruleCont, unitKeys, unitValues, null);
unitEl = uifactory.addDropdownSingleselect("launchunit.".concat(id), null, ruleCont, unitKeys, unitValues, null);
unitEl.setDomReplacementWrapperRequired(false);
boolean selected = false;
if(currentUnit != null) {
......
......@@ -61,6 +61,7 @@ public class DateRuleEditor extends RuleEditorFragment {
.createCustomFormLayout(".".concat(id), formLayout.getTranslator(), page);
ruleCont.setRootForm(formLayout.getRootForm());
formLayout.add(ruleCont);
ruleCont.getFormItemComponent().contextPut("id", id);
Date after = null;
if(rule instanceof ReminderRuleImpl) {
......@@ -72,7 +73,7 @@ public class DateRuleEditor extends RuleEditorFragment {
}
}
afterEl = uifactory.addDateChooser("ruleElement", null, after, ruleCont);
afterEl = uifactory.addDateChooser("ruleElement.".concat(id), null, after, ruleCont);
afterEl.setDateChooserTimeEnabled(true);
return ruleCont;
}
......
......@@ -70,6 +70,7 @@ public class UserPropertyEditor extends RuleEditorFragment {
.createCustomFormLayout("user.prop.".concat(id), formLayout.getTranslator(), page);
userPropCont.setRootForm(formLayout.getRootForm());
formLayout.add(userPropCont);
userPropCont.getFormItemComponent().contextPut("id", id);
Translator trans = Util.createPackageTranslator(UserPropertyHandler.class, ureq.getLocale(), formLayout.getTranslator());
......@@ -91,7 +92,7 @@ public class UserPropertyEditor extends RuleEditorFragment {
currentPropertyValue = r.getRightOperand();
}
propEl = uifactory.addDropdownSingleselect("user.prop", null, userPropCont, propKeys, propValues, null);
propEl = uifactory.addDropdownSingleselect("user.prop.".concat(id), null, userPropCont, propKeys, propValues, null);
propEl.setDomReplacementWrapperRequired(false);
if(currentPropertyName != null) {
for(String propKey:propKeys) {
......@@ -101,7 +102,7 @@ public class UserPropertyEditor extends RuleEditorFragment {
}
}
valueEl = uifactory.addTextElement("user.value", null, 128, currentPropertyValue, userPropCont);
valueEl = uifactory.addTextElement("user.value.".concat(id), null, 128, currentPropertyValue, userPropCont);
valueEl.setDomReplacementWrapperRequired(false);
return userPropCont;
......
<div class='form-inline'>
$r.render("launchvalue") $r.render("launchunit") <span class="form-control-static">$r.translate("ago")</span>
#if($f.hasError("launchvalue"))
<br/>$r.render("launchvalue_ERROR")
$r.render("launchvalue.${id}") $r.render("launchunit.${id}") <span class="form-control-static">$r.translate("ago")</span>
#if($f.hasError("launchvalue.${id}"))
<br/>$r.render("launchvalue.${id}_ERROR")
#end
</div>
\ No newline at end of file
$r.render("ruleElement")
#if($f.hasError("ruleElement"))
<br/>$r.render("ruleElement_ERROR")
$r.render("ruleElement.${id}")
#if($f.hasError("ruleElement.${id}"))
<br/>$r.render("ruleElement.${id}_ERROR")
#end
\ No newline at end of file
<div class='form-inline'>
$r.render("user.prop") $r.render("user.value")
#if($f.hasError("user.value"))
<br/>$r.render("user.value_ERROR")
$r.render("user.prop.${id}") $r.render("user.value.${id}")
#if($f.hasError("user.value.${id}"))
<br/>$r.render("user.value.${id}_ERROR")
#end
</div>
\ No newline at end of file
......@@ -16,6 +16,7 @@ interval.4=Alle vier Stunden
interval.2=Alle zwei Stunden
interval.1=Jede Stunde
reminder.admin.title=Kurserinnerungen
reminder.subject=Kurserinnerung
rule.after.date=Nach Datum
rule.course.enrollment.date=Einschreibedatum
rule.course.role=Kursrolle
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment