From e6153ad1c80c5096aa799be0b27af6bd4966ddc1 Mon Sep 17 00:00:00 2001 From: gnaegi <none@none> Date: Thu, 27 Jul 2017 11:43:34 +0200 Subject: [PATCH] OO-2802 implement mail subject for reminder mail --- .../ui/CourseReminderEditController.java | 20 ++++++++++++++++++- .../ui/_i18n/LocalStrings_de.properties | 3 ++- .../ui/_i18n/LocalStrings_en.properties | 3 ++- .../org/olat/modules/reminder/Reminder.java | 6 +++++- .../modules/reminder/manager/ReminderDAO.java | 1 + .../reminder/manager/ReminderServiceImpl.java | 8 +++++++- .../reminder/model/ImportExportReminder.java | 10 ++++++++++ .../modules/reminder/model/ReminderImpl.java | 12 +++++++++++ .../ui/_i18n/LocalStrings_de.properties | 2 +- .../ui/_i18n/LocalStrings_en.properties | 2 +- .../ui/_i18n/LocalStrings_fr.properties | 1 - .../ui/_i18n/LocalStrings_it.properties | 1 - .../ui/_i18n/LocalStrings_pt_BR.properties | 1 - .../repository/handlers/CourseHandler.java | 1 + .../database/mysql/alter_11_5_x_to_12_0_0.sql | 3 +++ .../database/mysql/setupDatabase.sql | 1 + .../oracle/alter_11_5_x_to_12_0_0.sql | 3 +++ .../database/oracle/setupDatabase.sql | 1 + .../postgresql/alter_11_5_x_to_12_0_0.sql | 2 ++ .../database/postgresql/setupDatabase.sql | 1 + .../reminder/manager/ReminderDAOTest.java | 9 +++++++++ .../java/org/olat/selenium/CourseTest.java | 1 + .../selenium/page/course/RemindersPage.java | 6 ++++++ 23 files changed, 88 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/olat/course/reminder/ui/CourseReminderEditController.java b/src/main/java/org/olat/course/reminder/ui/CourseReminderEditController.java index e213a724c16..ce7d48fc017 100644 --- a/src/main/java/org/olat/course/reminder/ui/CourseReminderEditController.java +++ b/src/main/java/org/olat/course/reminder/ui/CourseReminderEditController.java @@ -66,6 +66,7 @@ public class CourseReminderEditController extends FormBasicController { private final String[] typeKeys; private final String[] typeValues; + private TextElement subjectEl; private RichTextElement emailEl; private TextElement descriptionEl; private FormLayoutContainer rulesCont; @@ -113,6 +114,7 @@ public class CourseReminderEditController extends FormBasicController { String desc = reminder.getDescription(); descriptionEl = uifactory.addTextElement("reminder.description", "reminder.description", 128, desc, generalCont); + descriptionEl.setMandatory(true); descriptionEl.setElementCssClass("o_sel_course_reminder_desc"); String sendTime = getSendTimeDescription(); @@ -147,12 +149,19 @@ public class CourseReminderEditController extends FormBasicController { FormLayoutContainer contentCont = FormLayoutContainer.createVerticalFormLayout("contents", getTranslator()); contentCont.setRootForm(mainForm); formLayout.add(contentCont); + + //email subject + String subject = reminder.getEmailSubject(); + subjectEl = uifactory.addTextElement("reminder.subject", "reminder.subject", 128, subject, contentCont); + subjectEl.setMandatory(true); + subjectEl.setElementCssClass("o_sel_course_reminder_subject"); String emailContent = reminder == null ? null : reminder.getEmailBody(); if(!StringHelper.containsNonWhitespace(emailContent)) { emailContent = translate("reminder.def.body"); } emailEl = uifactory.addRichTextElementForStringDataMinimalistic("email.content", "email.content", emailContent, 10, 60, contentCont, getWindowControl()); + emailEl.setMandatory(true); String buttonPage = velocity_root + "/edit_rules_buttons.html"; FormLayoutContainer buttonLayout = FormLayoutContainer.createCustomFormLayout("buttons", getTranslator(), buttonPage); @@ -230,6 +239,12 @@ public class CourseReminderEditController extends FormBasicController { descriptionEl.setErrorKey("form.mandatory.hover", null); allOk &= false; } + + subjectEl.clearError(); + if(!StringHelper.containsNonWhitespace(subjectEl.getValue())) { + subjectEl.setErrorKey("form.mandatory.hover", null); + allOk &= false; + } emailEl.clearError(); if(!StringHelper.containsNonWhitespace(emailEl.getValue())) { @@ -328,7 +343,10 @@ public class CourseReminderEditController extends FormBasicController { String configuration = reminderManager.toXML(rules); reminder.setConfiguration(configuration); - + + String emailSubject = subjectEl.getValue(); + reminder.setEmailSubject(emailSubject); + String emailBody = emailEl.getValue(); reminder.setEmailBody(emailBody); diff --git a/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_de.properties index 710f47e1e25..59893882d09 100644 --- a/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_de.properties @@ -23,7 +23,8 @@ new.reminder=Neue Erinnerung passed=Bestanden points=Punkte reminder.def.body=<p>Liebe(r) $firstname $lastname</p><p>Sie haben sich in den Kurs "$coursename" eingetragen. Jetzt w\u00E4re ein guter Zeitpunkt diesen zu besuchen\!</p><p>$courseurl</p><p>Viele Gr\u00FCsse</p> -reminder.description=Beschreibung +reminder.description=Beschreibung (nur für Autor) +reminder.subject=E-Mail-Betreff reminder.id=ID reminder.resend=Erinnerung wurde erfolgreich geschickt. reminders=Erinnerungen diff --git a/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_en.properties index 288c4494183..1f11ae1a987 100644 --- a/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/reminder/ui/_i18n/LocalStrings_en.properties @@ -23,7 +23,8 @@ new.reminder=New reminder passed=Passed points=Points reminder.def.body=<p>Dear $firstname $lastname</p><p>You are registered in the course "$coursename". Now would be a good time to view it!</p><p>$courseurl</p><p>Best regards</p> -reminder.description=Description +reminder.description=Description (only for author) +reminder.subject=E-mail subject reminder.id=ID reminder.resend=Reminder was successfully sent. reminders=Reminders diff --git a/src/main/java/org/olat/modules/reminder/Reminder.java b/src/main/java/org/olat/modules/reminder/Reminder.java index aeaa21b2d6e..6adb4979cc1 100644 --- a/src/main/java/org/olat/modules/reminder/Reminder.java +++ b/src/main/java/org/olat/modules/reminder/Reminder.java @@ -42,7 +42,11 @@ public interface Reminder extends CreateInfo, ModifiedInfo { public String getConfiguration(); public void setConfiguration(String configuration); - + + public String getEmailSubject(); + + public void setEmailSubject(String emailSubject); + public String getEmailBody(); public void setEmailBody(String emailBody); diff --git a/src/main/java/org/olat/modules/reminder/manager/ReminderDAO.java b/src/main/java/org/olat/modules/reminder/manager/ReminderDAO.java index d25dcc173c9..3437eb5b894 100644 --- a/src/main/java/org/olat/modules/reminder/manager/ReminderDAO.java +++ b/src/main/java/org/olat/modules/reminder/manager/ReminderDAO.java @@ -100,6 +100,7 @@ public class ReminderDAO { reminder.setCreator(creator); reminder.setDescription(toCopy.getDescription() + " (Copy)"); reminder.setConfiguration(toCopy.getConfiguration()); + reminder.setEmailSubject(toCopy.getEmailSubject()); reminder.setEmailBody(toCopy.getEmailBody()); dbInstance.getCurrentEntityManager().persist(reminder); return reminder; diff --git a/src/main/java/org/olat/modules/reminder/manager/ReminderServiceImpl.java b/src/main/java/org/olat/modules/reminder/manager/ReminderServiceImpl.java index e60bbf8398e..36f1ac4e71c 100644 --- a/src/main/java/org/olat/modules/reminder/manager/ReminderServiceImpl.java +++ b/src/main/java/org/olat/modules/reminder/manager/ReminderServiceImpl.java @@ -210,6 +210,7 @@ public class ReminderServiceImpl implements ReminderService { Reminder reminder = reminderDao.createReminder(newEntry, creator); reminder.setDescription(importReminder.getDescription()); reminder.setEmailBody(importReminder.getEmailBody()); + reminder.setEmailSubject(importReminder.getEmailSubject() == null ? importReminder.getDescription() : importReminder.getEmailSubject()); reminder.setConfiguration(importReminder.getConfiguration()); reminders.add(reminder); } @@ -243,8 +244,13 @@ public class ReminderServiceImpl implements ReminderService { MailContext context = new MailContextImpl("[RepositoryEntry:" + entry.getKey() + "]"); Translator trans = Util.createPackageTranslator(ReminderAdminController.class, I18nModule.getDefaultLocale()); - String subject = trans.translate("reminder.subject"); + String subject = reminder.getEmailSubject(); String body = reminder.getEmailBody(); + if (body.contains("$courseurl")) { + body = body.replace("$courseurl", "<a href=\"$courseurl\">$courseurl</a>"); + } else { + body = body + "<p>---<br />" + trans.translate("reminder.from.course", new String[] {"<a href=\"$courseurl\">$coursename</a>"}) + "</p>"; + } String metaId = UUID.randomUUID().toString(); String url = Settings.getServerContextPathURI() + "/url/RepositoryEntry/" + entry.getKey(); diff --git a/src/main/java/org/olat/modules/reminder/model/ImportExportReminder.java b/src/main/java/org/olat/modules/reminder/model/ImportExportReminder.java index 48b21dc3937..c1eeba7c127 100644 --- a/src/main/java/org/olat/modules/reminder/model/ImportExportReminder.java +++ b/src/main/java/org/olat/modules/reminder/model/ImportExportReminder.java @@ -35,6 +35,7 @@ public class ImportExportReminder implements Serializable { private String description; private String configuration; + private String emailSubject; // added in OO 12.0 private String emailBody; public ImportExportReminder() { @@ -44,6 +45,7 @@ public class ImportExportReminder implements Serializable { public ImportExportReminder(Reminder reminder) { description = reminder.getDescription(); configuration = reminder.getConfiguration(); + emailSubject = reminder.getEmailSubject(); emailBody = reminder.getEmailBody(); } @@ -63,6 +65,14 @@ public class ImportExportReminder implements Serializable { this.configuration = configuration; } + public String getEmailSubject() { + return emailSubject; + } + + public void setEmailSubject(String emailSubject) { + this.emailSubject = emailSubject; + } + public String getEmailBody() { return emailBody; } diff --git a/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java b/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java index 2dbc078efcd..1090aaf6026 100644 --- a/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java +++ b/src/main/java/org/olat/modules/reminder/model/ReminderImpl.java @@ -93,6 +93,8 @@ public class ReminderImpl implements Reminder, Persistable { private Date startDate; @Column(name="r_configuration", nullable=true, insertable=true, updatable=true) private String configuration; + @Column(name="r_email_Subject", nullable=true, insertable=true, updatable=true) + private String emailSubject; @Column(name="r_email_body", nullable=true, insertable=true, updatable=true) private String emailBody; @@ -172,6 +174,16 @@ public class ReminderImpl implements Reminder, Persistable { this.configuration = configuration; } + @Override + public String getEmailSubject() { + return emailSubject; + } + + @Override + public void setEmailSubject(String emailSubject) { + this.emailSubject = emailSubject; + } + @Override public String getEmailBody() { return emailBody; diff --git a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_de.properties index 9d79a70eae1..8daac4313e4 100644 --- a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_de.properties @@ -17,7 +17,7 @@ interval.4=Alle vier Stunden interval.2=Alle zwei Stunden interval.1=Jede Stunde reminder.admin.title=Kurserinnerungen -reminder.subject=Kurserinnerung +reminder.from.course=Erinnerung aus Kurs {0} rule.after.date=Nach Datum rule.course.enrollment.date=Einschreibedatum rule.course.role=Kursrolle diff --git a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_en.properties index 2a185d8f5a6..92b22ac4fed 100644 --- a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_en.properties @@ -17,7 +17,7 @@ interval.4=Every 4 hours interval.2=Every 2 hours interval.1=Every hour reminder.admin.title=Course reminders -reminder.subject=Course reminder +reminder.from.course=Reminder from course {0} rule.after.date=After date rule.course.enrollment.date=Enrollment date rule.course.role=Course role diff --git a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_fr.properties index e417adb7147..832f1e8291f 100644 --- a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_fr.properties @@ -17,7 +17,6 @@ interval.4=Toutes les quatre heures interval.6=Quatre fois par jour interval.8=Trois fois par jour reminder.admin.title=Rappels des cours -reminder.subject=Rappel rule.after.date=Fonction de la date rule.course.enrollment.date=Date d'inscription rule.course.role=R\u00F4le au sein du cours diff --git a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_it.properties index 8b371626678..264f346d3e3 100644 --- a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_it.properties @@ -17,7 +17,6 @@ interval.4=Ogni 4 ore interval.6=Quattro volte al giorno interval.8=Tre volte al giorno reminder.admin.title=Promemoria dei corsi -reminder.subject=Promemoria di corso rule.after.date=Dopo la data rule.course.enrollment.date=Data di iscrizione rule.course.role=Ruolo nel corso diff --git a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_pt_BR.properties index b4bd61fc615..a513cd99d4e 100644 --- a/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/modules/reminder/ui/_i18n/LocalStrings_pt_BR.properties @@ -17,7 +17,6 @@ interval.4=A cada 4 horas interval.6=4 vezes ao dia interval.8=3 vezes ao dia reminder.admin.title=Lembretes de Curso -reminder.subject=Lembrete rule.after.date=Ap\u00F3s data rule.course.enrollment.date=Data de inscri\u00E7\u00E3o rule.course.role=Fun\u00E7\u00E3o curso diff --git a/src/main/java/org/olat/repository/handlers/CourseHandler.java b/src/main/java/org/olat/repository/handlers/CourseHandler.java index 3661f0ecc39..ae064d36726 100644 --- a/src/main/java/org/olat/repository/handlers/CourseHandler.java +++ b/src/main/java/org/olat/repository/handlers/CourseHandler.java @@ -458,6 +458,7 @@ public class CourseHandler implements RepositoryHandler { Reminder clonedReminder = reminderService.createReminder(target, author); clonedReminder.setDescription(reminder.getDescription()); + clonedReminder.setEmailSubject(reminder.getEmailSubject()); clonedReminder.setEmailBody(reminder.getEmailBody()); clonedReminder.setConfiguration(reminderService.toXML(clonedRules)); reminderService.save(clonedReminder); diff --git a/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql index 3f265f7f1d4..51d5f4f7220 100644 --- a/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql +++ b/src/main/resources/database/mysql/alter_11_5_x_to_12_0_0.sql @@ -208,3 +208,6 @@ alter table o_lecture_block_audit_log ENGINE = InnoDB; create index idx_lec_audit_entry_idx on o_lecture_block_audit_log(fk_entry); create index idx_lec_audit_ident_idx on o_lecture_block_audit_log(fk_identity); + +alter table o_rem_reminder add column r_email_subject varchar(255); +update o_rem_reminder set r_email_subject=r_description; diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 3422335c294..aec3cbaa603 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1869,6 +1869,7 @@ create table o_rem_reminder ( r_start datetime, r_sendtime varchar(16), r_configuration mediumtext, + r_email_subject varchar(255), r_email_body mediumtext, fk_creator bigint not null, fk_entry bigint not null, diff --git a/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql index 16a29f4d8e8..a90f38a26d0 100644 --- a/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql +++ b/src/main/resources/database/oracle/alter_11_5_x_to_12_0_0.sql @@ -210,4 +210,7 @@ create index idx_lec_audit_entry_idx on o_lecture_block_audit_log(fk_entry); create index idx_lec_audit_ident_idx on o_lecture_block_audit_log(fk_identity); +alter table o_rem_reminder add column r_email_subject varchar(255); +update o_rem_reminder set r_email_subject=r_description; + diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index b036d242083..09ccdc7221a 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -1892,6 +1892,7 @@ create table o_rem_reminder ( r_start date, r_sendtime varchar(16), r_configuration clob, + r_email_subject varchar(255), r_email_body clob, fk_creator number(20) not null, fk_entry number(20) not null, diff --git a/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql b/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql index 794b117acc6..3aa4cbe0cce 100644 --- a/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql +++ b/src/main/resources/database/postgresql/alter_11_5_x_to_12_0_0.sql @@ -210,5 +210,7 @@ create index idx_lec_audit_entry_idx on o_lecture_block_audit_log(fk_entry); create index idx_lec_audit_ident_idx on o_lecture_block_audit_log(fk_identity); +alter table o_rem_reminder add column r_email_subject varchar(255); +update o_rem_reminder set r_email_subject=r_description; diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 47b69ea0e74..f966649bad9 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1866,6 +1866,7 @@ create table o_rem_reminder ( r_start timestamp, r_sendtime varchar(16), r_configuration text, + r_email_subject varchar(255), r_email_body text, fk_creator int8 not null, fk_entry int8 not null, diff --git a/src/test/java/org/olat/modules/reminder/manager/ReminderDAOTest.java b/src/test/java/org/olat/modules/reminder/manager/ReminderDAOTest.java index 38e9d318919..6357129341f 100644 --- a/src/test/java/org/olat/modules/reminder/manager/ReminderDAOTest.java +++ b/src/test/java/org/olat/modules/reminder/manager/ReminderDAOTest.java @@ -66,6 +66,7 @@ public class ReminderDAOTest extends OlatTestCase { Assert.assertNotNull(reminder); reminder.setConfiguration("<rules></rules>"); reminder.setDescription("Reminder - 1"); + reminder.setEmailSubject("This is a subject"); reminder.setEmailBody("Hello world"); //save and check @@ -79,6 +80,7 @@ public class ReminderDAOTest extends OlatTestCase { Assert.assertEquals(entry, savedReminder.getEntry()); Assert.assertEquals("Reminder - 1", savedReminder.getDescription()); Assert.assertEquals("<rules></rules>", savedReminder.getConfiguration()); + Assert.assertEquals("This is a subject", savedReminder.getEmailSubject()); Assert.assertEquals("Hello world", savedReminder.getEmailBody()); //reload and double check @@ -92,6 +94,7 @@ public class ReminderDAOTest extends OlatTestCase { Assert.assertEquals(savedReminder, reloadedReminder); Assert.assertEquals("Reminder - 1", reloadedReminder.getDescription()); Assert.assertEquals("<rules></rules>", reloadedReminder.getConfiguration()); + Assert.assertEquals("This is a subject", reloadedReminder.getEmailSubject()); Assert.assertEquals("Hello world", reloadedReminder.getEmailBody()); } @@ -104,6 +107,7 @@ public class ReminderDAOTest extends OlatTestCase { Reminder reminder = reminderDao.createReminder(entry, creator); reminder.setConfiguration("<rules></rules>"); reminder.setDescription("Reminder - 2"); + reminder.setEmailSubject("This is a subject"); reminder.setEmailBody("Hello world"); Reminder savedReminder = reminderDao.save(reminder); Assert.assertNotNull(savedReminder); @@ -152,6 +156,7 @@ public class ReminderDAOTest extends OlatTestCase { Reminder reminder = reminderDao.createReminder(entry, creator); reminder.setConfiguration("<rules></rules>"); reminder.setDescription("Reminder - 12"); + reminder.setEmailSubject("This is a deleted subject"); reminder.setEmailBody("Hello, I'm deleted"); Reminder savedReminder = reminderDao.save(reminder); Assert.assertNotNull(savedReminder); @@ -180,6 +185,7 @@ public class ReminderDAOTest extends OlatTestCase { Reminder reminder = reminderDao.createReminder(entry, creator); reminder.setConfiguration("<rules></rules>"); reminder.setDescription("Reminder - 4"); + reminder.setEmailSubject("This is a subject"); reminder.setEmailBody("Hello world"); Reminder savedReminder = reminderDao.save(reminder); Assert.assertNotNull(savedReminder); @@ -194,6 +200,7 @@ public class ReminderDAOTest extends OlatTestCase { Assert.assertEquals(savedReminder, loadedReminder); Assert.assertEquals(entry, loadedReminder.getEntry()); Assert.assertEquals("Reminder - 4", loadedReminder.getDescription()); + Assert.assertEquals("This is a subject", loadedReminder.getEmailSubject()); Assert.assertEquals("Hello world", loadedReminder.getEmailBody()); } @@ -344,6 +351,7 @@ public class ReminderDAOTest extends OlatTestCase { Assert.assertEquals(creator, reloadedDuplicate.getCreator()); Assert.assertEquals(entry, reloadedDuplicate.getEntry()); Assert.assertEquals(reminderToCopy.getEmailBody(), reloadedDuplicate.getEmailBody()); + Assert.assertEquals(reminderToCopy.getEmailSubject(), reloadedDuplicate.getEmailSubject()); Assert.assertTrue(reloadedDuplicate.getDescription().startsWith(reminderToCopy.getDescription())); Assert.assertEquals(reminderToCopy.getConfiguration(), reloadedDuplicate.getConfiguration()); } @@ -435,6 +443,7 @@ public class ReminderDAOTest extends OlatTestCase { Reminder reminder = reminderDao.createReminder(entry, creator); reminder.setConfiguration("<rules></rules>"); reminder.setDescription("Reminder - " + num); + reminder.setEmailSubject("This is a subject - " + num); reminder.setEmailBody("Hello world - " + num); return reminderDao.save(reminder); } diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 4d82260b739..40d46a5a16c 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -1940,6 +1940,7 @@ public class CourseTest { reminders .addReminder() .setDescription(reminderTitle) + .setSubject(reminderTitle) .setTimeBasedRule(1, "RepositoryEntryLifecycleAfterValidFromRuleSPI", 5, "day") .addRule(1) .setRoleBasedRule(2, "RepositoryEntryRoleRuleSPI", "participant") diff --git a/src/test/java/org/olat/selenium/page/course/RemindersPage.java b/src/test/java/org/olat/selenium/page/course/RemindersPage.java index 7d643ff547c..1bcdd1edb27 100644 --- a/src/test/java/org/olat/selenium/page/course/RemindersPage.java +++ b/src/test/java/org/olat/selenium/page/course/RemindersPage.java @@ -163,6 +163,12 @@ public class RemindersPage { browser.findElement(descBy).sendKeys(text); return this; } + + public RemindersPage setSubject(String text) { + By subjectBy = By.cssSelector(".o_sel_course_reminder_subject input[type='text']"); + browser.findElement(subjectBy).sendKeys(text); + return this; + } public RemindersPage setTimeBasedRule(int pos, String type, int time, String unit) { //select type -- GitLab