diff --git a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java index c5ea6a8cb49e5adfe0d1175caff0fa939f8968c7..4a91e7eb42f810ee719eadd118d2ef35bf5a0baa 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java +++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java @@ -319,7 +319,7 @@ public class DENManageParticipantsController extends BasicController { cmsg.addEmailTo(contactList); removeAsListenerAndDispose(contactCtr); - contactCtr = new ContactFormController(ureq, getWindowControl(), false, false, false, cmsg, null); + contactCtr = new ContactFormController(ureq, getWindowControl(), false, false, false, cmsg); listenTo(contactCtr); sendMessageVC.contextPut("title", translate("participants.message")); diff --git a/src/main/java/de/bps/course/nodes/den/DENManager.java b/src/main/java/de/bps/course/nodes/den/DENManager.java index 20c7c7e040cd8d656f62220f1756e2144f758cc5..2e893c97b908be4fe986b7e12fc8cca4955e30f3 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManager.java +++ b/src/main/java/de/bps/course/nodes/den/DENManager.java @@ -764,7 +764,7 @@ public class DENManager { } contactList.addAllIdentites(participants); cmsg.addEmailTo(contactList); - ContactFormController contactCtr = new ContactFormController(ureq, wControl, false, false, false, cmsg, null); + ContactFormController contactCtr = new ContactFormController(ureq, wControl, false, false, false, cmsg); contactCtr.addControllerListener(listener); sendMessageVC.contextPut("title", trans.translate("participants.message")); sendMessageVC.put("contactForm", contactCtr.getInitialComponent()); diff --git a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java index 1c8e615d7babd256f4734541a4a181f928c0ab4e..44a328014955a5a781ccf8a90d4924794e0a3113 100644 --- a/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java +++ b/src/main/java/org/olat/admin/sysinfo/LargeFilesController.java @@ -531,7 +531,7 @@ public class LargeFilesController extends FormBasicController implements Extende .append("<li>") .append("Path: " + row.getPath()) .append("</li>"); - if (row.getContext() != VFSContextInfoUnknownPathResolver.UNKNOWN_TYPE ) { + if (!row.getContext().equals(VFSContextInfoUnknownPathResolver.UNKNOWN_TYPE)) { bodyFiles.append("<li>") .append("<span>URL: " + "<a href='" + vfsRepositoryService.getContextInfoFor(row.getPath(), getLocale()).getContextUrl() + "'>" + vfsRepositoryService.getContextInfoFor(row.getPath(), getLocale()).getContextUrl() + "</a></span>") .append("</li>"); @@ -543,7 +543,7 @@ public class LargeFilesController extends FormBasicController implements Extende bodyFiles.append("</ul>"); cmsg.setBodyText(bodyStart + bodyFiles.toString() + bodyEnd); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), "close", contactCtrl.getInitialComponent()); cmc.activate(); diff --git a/src/main/java/org/olat/collaboration/CollaborationTools.java b/src/main/java/org/olat/collaboration/CollaborationTools.java index 2d9cb12e0962d188be89300c893e04c06b00294e..7bebf36f6c8a94cf1a3665910c348cad89288774 100644 --- a/src/main/java/org/olat/collaboration/CollaborationTools.java +++ b/src/main/java/org/olat/collaboration/CollaborationTools.java @@ -480,7 +480,7 @@ public class CollaborationTools implements Serializable { * @return a contact form controller */ public ContactFormController createContactFormController(UserRequest ureq, WindowControl wControl, ContactMessage cmsg) { - return new ContactFormController(ureq, wControl, true, false, false, cmsg, null); + return new ContactFormController(ureq, wControl, true, false, false, cmsg); } diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java index 7e4c8e98a98933fbdf904f6d6379ad9d68e798f0..b57185d55e2df8b1163c1d6a96b55a4ebcf3d5e5 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersAvatarDisplayRunController.java @@ -504,7 +504,7 @@ public class MembersAvatarDisplayRunController extends FormBasicController { cmsg.addEmailTo(contactList); // preset body template from i18n cmsg.setBodyText(createBodyTemplate()); - emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(emailController); String title = translate("members.email.title"); diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersTableController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersTableController.java index c67cf7dcc31e30bc7e0b5efcdffd535deee965b3..f2f7e36b23cf901a0fd3fdb69d3e34f3c346e061 100644 --- a/src/main/java/org/olat/commons/memberlist/ui/MembersTableController.java +++ b/src/main/java/org/olat/commons/memberlist/ui/MembersTableController.java @@ -318,7 +318,7 @@ public class MembersTableController extends FormBasicController { } private void doSendEmailToMember(ContactList contactList, UserRequest ureq) { - if (contactList.getEmailsAsStrings().size() > 0) { + if (!contactList.getEmailsAsStrings().isEmpty()) { removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(emailController); @@ -326,7 +326,7 @@ public class MembersTableController extends FormBasicController { cmsg.addEmailTo(contactList); // preset body template from i18n cmsg.setBodyText(createBodyTemplate()); - emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(emailController); String title = translate("members.email.title"); diff --git a/src/main/java/org/olat/core/commons/controllers/impressum/ContactController.java b/src/main/java/org/olat/core/commons/controllers/impressum/ContactController.java index 65e25a8c4590864c0f6824d264a364ae00a910f6..d5641f9bf1d634ba2093ea1c841688b85cf0a3d4 100644 --- a/src/main/java/org/olat/core/commons/controllers/impressum/ContactController.java +++ b/src/main/java/org/olat/core/commons/controllers/impressum/ContactController.java @@ -90,7 +90,7 @@ public class ContactController extends BasicController implements GenericEventLi contactMessage.addEmailTo(contactList); // Show GUI - contactForm = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage, null); + contactForm = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage); listenTo(contactForm); content.put("contactForm", contactForm.getInitialComponent()); putInitialPanel(content); diff --git a/src/main/java/org/olat/core/util/mail/MailTemplate.java b/src/main/java/org/olat/core/util/mail/MailTemplate.java index a81b2757cfb3e8fc49d8d21cec8bc28d0a717602..e818259e0bda4df190d4dcf9c45aa3c001d1db07 100644 --- a/src/main/java/org/olat/core/util/mail/MailTemplate.java +++ b/src/main/java/org/olat/core/util/mail/MailTemplate.java @@ -45,6 +45,7 @@ import org.olat.core.id.Identity; * http://www.frentix.com */ public abstract class MailTemplate { + private String templateName; private String subjectTemplate; private String bodyTemplate; private File[] attachments; @@ -64,6 +65,24 @@ public abstract class MailTemplate { this.context = new VelocityContext(); this.cpfrom = true; } + + /** + * @return A name for UI + */ + public String getTemplateName() { + return templateName; + } + + /** + * Only used for UI + * + * @param templateName The name of the template + */ + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + /** * @return diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index 3b5b30d8dff59d645d59d4978f5346435dbdc897..5e3db3ee1b0faa5a2ea7f1c5c42660c9d55af521 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -894,7 +894,7 @@ public class IdentityListCourseNodeController extends FormBasicController contactMessage.addEmailTo(contactList); removeAsListenerAndDispose(contactCtrl); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementController.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementController.java index 7d77feb4d7a5d8aa6a5285270fac83f33c1e30e1..863a9f4bc57c33d8a329c89899dc44f6b201372f 100644 --- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementController.java +++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementController.java @@ -371,7 +371,7 @@ public class CertificateAndEfficiencyStatementController extends BasicController ContactList contactList = new ContactList("to"); contactList.add(statementOwner); cmsg.addEmailTo(contactList); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), contactCtrl.getInitialComponent()); cmc.activate(); diff --git a/src/main/java/org/olat/course/nodes/co/COToolController.java b/src/main/java/org/olat/course/nodes/co/COToolController.java index e8d64e7be9e914e3ce1b616e90ea5228fc90b9c2..cf9d5505167e90dcd112f2766aee96674a2496df 100644 --- a/src/main/java/org/olat/course/nodes/co/COToolController.java +++ b/src/main/java/org/olat/course/nodes/co/COToolController.java @@ -81,7 +81,7 @@ public class COToolController extends BasicController { ContactList dummyList = new ContactList("dummy"); dummyList.add(getIdentity()); cmsg.addEmailTo(dummyList); - emailCtrl = new ContactFormController(ureq, getWindowControl(), false, false, false, cmsg, null); + emailCtrl = new ContactFormController(ureq, getWindowControl(), false, false, false, cmsg); emailCtrl.setContactFormTitle(null); Set<Recipients> recipients = recipientCtrl.getSelectedRecipients(); doSetReciepients(recipients); diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java index 23109d337619a42b5eba7989b04300c5e36d3b82..376fd35d92a29e96f2d27070a704625a5104c48f 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java +++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachController.java @@ -818,7 +818,7 @@ public class GTACoachController extends GTAAbstractController implements Assessm ContactMessage cmsg = new ContactMessage(ureq.getIdentity()); cmsg.addEmailTo(contactList); - emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + emailController = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(emailController); removeAsListenerAndDispose(cmc); diff --git a/src/main/java/org/olat/group/ui/homepage/GroupContactController.java b/src/main/java/org/olat/group/ui/homepage/GroupContactController.java index ba1d873b0f003fee1a34a21e937b616c440722be..3afd9908606fcfe39d6180472e8271a528fef21e 100644 --- a/src/main/java/org/olat/group/ui/homepage/GroupContactController.java +++ b/src/main/java/org/olat/group/ui/homepage/GroupContactController.java @@ -57,7 +57,7 @@ public class GroupContactController extends BasicController { // per default contact the group owners. if (businessGroupService.countMembers(businessGroup, GroupRoles.coach.name()) != 0) { ContactMessage contactMessage = createContactMessage(ureq.getIdentity(), "form.to.owners", businessGroup); - contactForm = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage, null); + contactForm = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage); listenTo(contactForm); content.put("contactForm", contactForm.getInitialComponent()); } else { diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index cb5f7fdccea243e072c083de9b450ddab75189da..f92a90cbdd67c9b3c812b3a404ec6b20ee3d52f9 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -602,7 +602,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr msg.setBodyText(translate("request.leaving.body", args)); msg.addEmailTo(contacts); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, true, msg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, true, msg); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), "close", contactCtrl.getInitialComponent(), true, translate("dialog.modal.bg.asktoleave.title")); diff --git a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java index 2d2c903a0f90c48d06fb52baab6689e0482788cd..cf64ce59499d12b17a2b577327d3c9e7d4b7eef6 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java @@ -679,7 +679,7 @@ public abstract class AbstractMemberListController extends FormBasicController i contactList.addAllIdentites(identities); contactMessage.addEmailTo(contactList); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), contactCtrl.getInitialComponent(), @@ -764,7 +764,7 @@ public abstract class AbstractMemberListController extends FormBasicController i OLATResourceable ores = OresHelper.createOLATResourceableType("Contact"); WindowControl bwControl = addToHistory(ureq, ores, null); - contactCtrl = new ContactFormController(ureq, bwControl, true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, bwControl, true, false, false, cmsg); listenTo(contactCtrl); toolbarPanel.pushController(fullname, contactCtrl); diff --git a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java index a40d0bf2ad9e5d0725ae865e59629d38a047dae7..9fbc84dc823fe68c3a3ff2753eba110fcdcdba9b 100644 --- a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java +++ b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java @@ -816,7 +816,7 @@ public class QTIEditorMainController extends MainLayoutBasicController implement changeEmail.setBodyText("<p>" + userMsg + "</p>\n<pre>" + changeLog + "</pre>"); }// else nothing was added! changeEmail.setSubject("Change log for " + startedWithTitle); - cfc = new ContactFormController(ureq, getWindowControl(), true, false, false, changeEmail, null); + cfc = new ContactFormController(ureq, getWindowControl(), true, false, false, changeEmail); listenTo(cfc); exitPanel.setContent(cfc.getInitialComponent()); return; diff --git a/src/main/java/org/olat/modules/co/ContactForm.java b/src/main/java/org/olat/modules/co/ContactForm.java index 4a4fd4c3b87c40db23d86bf4ba9e1c92ff891f22..929c2775c1429b623a154dd4e39170b21163cd37 100644 --- a/src/main/java/org/olat/modules/co/ContactForm.java +++ b/src/main/java/org/olat/modules/co/ContactForm.java @@ -28,7 +28,6 @@ package org.olat.modules.co; import java.io.File; import java.util.ArrayList; import java.util.HashMap; -import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -41,12 +40,14 @@ import org.olat.core.gui.components.form.flexible.elements.FileElement; import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.RichTextElement; import org.olat.core.gui.components.form.flexible.elements.SelectionElement; +import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.Form; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; 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.components.link.Link; +import org.olat.core.gui.components.util.KeyValues; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -60,6 +61,7 @@ import org.olat.core.util.filter.FilterFactory; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.EmailAddressValidator; import org.olat.core.util.mail.MailModule; +import org.olat.core.util.mail.MailTemplate; import org.olat.user.UserManager; /** @@ -107,12 +109,15 @@ public class ContactForm extends FormBasicController { private boolean hasMsgSave=true; private static final String NLS_CONTACT_SEND_CP_FROM = "contact.cp.from"; private SelectionElement tcpfrom; + private static final String NLS_CONTACT_TEMPLATES = "contact.templates"; + private SingleSelection templateEl; private Identity emailFrom; private File attachementTempDir; private long attachmentSize = 0l; + private List<MailTemplate> mailTemplates; private Map<String,String> attachmentCss = new HashMap<>(); private Map<String,String> attachmentNames = new HashMap<>(); - private Map<String,ContactList> contactLists = new Hashtable<>(); + private Map<String,ContactList> contactLists = new HashMap<>(); private final UserManager userManager; @@ -137,8 +142,7 @@ public class ContactForm extends FormBasicController { this.contactAttachmentMaxSizeInMb = CoreSpringFactory.getImpl(MailModule.class).getMaxSizeForAttachement(); userManager = CoreSpringFactory.getImpl(UserManager.class); initForm(ureq); - } - + } public void setSubject(final String defaultSubject) { tsubject.setValue(defaultSubject); @@ -154,6 +158,29 @@ public class ContactForm extends FormBasicController { addEmailTo(contactList); } } + + public void setTemplates(List<MailTemplate> templates) { + this.mailTemplates = templates; + if(templates == null || templates.isEmpty()) { + templateEl.setVisible(false); + } else { + templateEl.setVisible(templates.size() > 1); + templateEl.setAllowNoSelection(templates.size() == 1); + + KeyValues templatesKeyValues = new KeyValues(); + for(int i=0; i<templates.size(); i++) { + String templateName = templates.get(i).getTemplateName(); + if(!StringHelper.containsNonWhitespace(templateName)) { + templateName = Integer.toString(i); + } + templatesKeyValues.add(KeyValues.entry(Integer.toString(i), templateName)); + } + String[] templateKeys = templatesKeyValues.keys(); + templateEl.setKeysAndValues(templatesKeyValues.keys(), templatesKeyValues.values(), null); + templateEl.select(templateKeys[0], true); + selectTemplate(0); + } + } /** * add a ContactList as EmailTo: @@ -268,6 +295,22 @@ public class ContactForm extends FormBasicController { return tbody.getValue(FilterFactory.getSmileysCssToDataUriFilter()); } + public MailTemplate getTemplate() { + if(mailTemplates == null || mailTemplates.isEmpty()) { + return null; + } + if(mailTemplates.size() == 1) { + return mailTemplates.get(0); + } + if(templateEl.isVisible() && templateEl.isOneSelected()) { + int selected = templateEl.getSelected(); + if(selected >= 0 && selected < mailTemplates.size()) { + return mailTemplates.get(selected); + } + } + return null; + } + public File[] getAttachments() { List<File> attachments = new ArrayList<>(); for(FormLink removeLink : attachmentLinks) { @@ -363,15 +406,33 @@ public class ContactForm extends FormBasicController { uploadCont.setLabel(null, null); attachmentEl.setLabel(NLS_CONTACT_ATTACHMENT, null); } + } else if(templateEl == source) { + if(templateEl.isOneSelected() && StringHelper.isLong(templateEl.getSelectedKey())) { + selectTemplate(Integer.parseInt(templateEl.getSelectedKey())); + } } super.formInnerEvent(ureq, source, event); } + + private void selectTemplate(int index) { + if(index >= 0 && index < mailTemplates.size()) { + MailTemplate template = mailTemplates.get(index); + setSubject(template.getSubjectTemplate()); + setBody(template.getBodyTemplate()); + } + } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { formLayout.setElementCssClass("o_sel_contact_form"); setFormTitle("header.newcntctmsg"); + + templateEl = uifactory.addDropdownSingleselect("ttemplates", NLS_CONTACT_TEMPLATES, formLayout, new String[0], new String[0]); + templateEl.setVisible(false); + templateEl.setAllowNoSelection(true); + templateEl.addActionListener(FormEvent.ONCHANGE); + String fullName = userManager.getUserDisplayName(emailFrom); if(StringHelper.containsNonWhitespace(fullName)) { fullName = "[" + fullName + "]"; @@ -408,19 +469,18 @@ public class ContactForm extends FormBasicController { attachmentEl.addActionListener(FormEvent.ONCHANGE); attachmentEl.setExampleKey(NLS_CONTACT_ATTACHMENT_EXPL, new String[]{Integer.toString(contactAttachmentMaxSizeInMb)}); - tcpfrom = uifactory.addCheckboxesVertical("tcpfrom", "", formLayout, new String[]{"xx"}, new String[]{translate(NLS_CONTACT_SEND_CP_FROM)}, 1); FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator()); buttonGroupLayout.setElementCssClass("o_sel_contact_buttons"); formLayout.add(buttonGroupLayout); - if(hasMsgSave) { - uifactory.addFormSubmitButton("msg.save", buttonGroupLayout); - } if (hasMsgCancel) { uifactory.addFormCancelButton("msg.cancel", buttonGroupLayout, ureq, getWindowControl()); } + if(hasMsgSave) { + uifactory.addFormSubmitButton("msg.save", buttonGroupLayout); + } } @Override diff --git a/src/main/java/org/olat/modules/co/ContactFormController.java b/src/main/java/org/olat/modules/co/ContactFormController.java index 4561b8ad0d702a42c3a8e00d41c416d0c9033047..f5ffad09892dfbbd83b732c4bf0ff70768ba6a4e 100644 --- a/src/main/java/org/olat/modules/co/ContactFormController.java +++ b/src/main/java/org/olat/modules/co/ContactFormController.java @@ -26,6 +26,7 @@ package org.olat.modules.co; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.olat.core.gui.UserRequest; @@ -91,16 +92,20 @@ import org.springframework.beans.factory.annotation.Autowired; */ public class ContactFormController extends BasicController { - private ContactForm cntctForm; + private final ContactForm cntctForm; private DialogBoxController noUsersErrorCtr; private Object userObject; private Identity emailFrom; - private MailTemplate template; + private List<MailTemplate> templates; @Autowired private MailManager mailService; + public ContactFormController(UserRequest ureq, WindowControl windowControl, boolean isCanceable, boolean isReadonly, boolean hasRecipientsEditable, ContactMessage cmsg) { + this(ureq, windowControl, isCanceable, isReadonly, hasRecipientsEditable, cmsg, Collections.emptyList()); + } + /** * * @param ureq The user request @@ -113,17 +118,28 @@ public class ContactFormController extends BasicController { */ public ContactFormController(UserRequest ureq, WindowControl windowControl, boolean isCanceable, boolean isReadonly, boolean hasRecipientsEditable, ContactMessage cmsg, MailTemplate template) { + this(ureq, windowControl, isCanceable, isReadonly, hasRecipientsEditable, cmsg, + template == null ? null : Collections.singletonList(template)); + } + + public ContactFormController(UserRequest ureq, WindowControl windowControl, boolean isCanceable, boolean isReadonly, boolean hasRecipientsEditable, + ContactMessage cmsg, List<MailTemplate> templates) { super(ureq, windowControl); - this.template = template; + this.templates = templates; //init email form emailFrom = cmsg.getFrom(); - cntctForm = new ContactForm(ureq, windowControl, emailFrom, isReadonly,isCanceable,hasRecipientsEditable); + cntctForm = new ContactForm(ureq, windowControl, emailFrom, isReadonly, isCanceable, hasRecipientsEditable); listenTo(cntctForm); List<ContactList> recipList = cmsg.getEmailToContactLists(); boolean hasAtLeastOneAddress = hasAtLeastOneAddress(recipList); + + if(templates != null && !templates.isEmpty()) { + cntctForm.setTemplates(templates); + } + MailTemplate template = templates != null && templates.size() == 1 ? templates.get(0) : null; if(StringHelper.containsNonWhitespace(cmsg.getBodyText())) { cntctForm.setBody(cmsg.getBodyText()); } else if(template != null && StringHelper.containsNonWhitespace(template.getBodyTemplate())) { @@ -148,26 +164,26 @@ public class ContactFormController extends BasicController { this.userObject = userObject; } + public String getAndRemoveTitle() { + return cntctForm.getAndRemoveFormTitle(); + } + public void setContactFormTitle(String translatedTitle) { - if(cntctForm != null) { - cntctForm.setFormTranslatedTitle(translatedTitle); - } + cntctForm.setFormTranslatedTitle(translatedTitle); } public void setContactFormDescription(String translatedDescription) { - if(cntctForm != null) { - cntctForm.setFormTranslatedDescription(translatedDescription); - } + cntctForm.setFormTranslatedDescription(translatedDescription); } private boolean hasAtLeastOneAddress(List<ContactList> recipList) { boolean hasAtLeastOneAddress = false; - if (recipList != null && recipList.size() > 0 ) { + if (recipList != null && !recipList.isEmpty()) { for (ContactList cl: recipList) { if (!hasAtLeastOneAddress && cl != null && cl.hasAddresses()) { hasAtLeastOneAddress = true; } - if (cl.hasAddresses()) { + if (cl != null && cl.hasAddresses()) { cntctForm.addEmailTo(cl); } } @@ -176,23 +192,15 @@ public class ContactFormController extends BasicController { } public String getSubject() { - if(cntctForm != null) { - return cntctForm.getSubject(); - } - return null; + return cntctForm.getSubject(); } public String getBody() { - if(cntctForm != null) { - return cntctForm.getBody(); - } - return null; + return cntctForm.getBody(); } public void setRecipientsLists(List<ContactList> recipientsLists) { - if (cntctForm != null) { - cntctForm.setRecipientsLists(recipientsLists); - } + cntctForm.setRecipientsLists(recipientsLists); } private void init(UserRequest ureq, boolean hasAtLeastOneAddress, List<Identity> disabledIdentities) { @@ -246,10 +254,16 @@ public class ContactFormController extends BasicController { private MailBundle createBundle(MailerResult result) { MailContext context = new MailContextImpl(getWindowControl().getBusinessControl().getAsString()); MailBundle bundle; - if(template == null) { + if(templates == null || templates.isEmpty()) { bundle = new MailBundle(context); bundle.setContent(cntctForm.getSubject(), cntctForm.getBody(), cntctForm.getAttachments()); } else { + MailTemplate template; + if(templates.size() == 1) { + template = templates.get(0); + } else { + template = cntctForm.getTemplate(); + } template.setSubjectTemplate(cntctForm.getSubject()); template.setBodyTemplate(cntctForm.getBody()); template.setAttachments(cntctForm.getAttachments()); diff --git a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties index 2e24e74f2f09e9c8d821349894d503544b907857..57d0472afdbaabc84034ab9143357b24eb44cd8a 100644 --- a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_de.properties @@ -4,6 +4,7 @@ contact.cp.from = Kopie an Absender contact.list.sender = Absender contact.from=Von contact.subject=Betreff +contact.templates=Vorlage contact.to=An contact.to.groupname.undisclosedrecipients=Vordefinierte Empf\u00E4nger contact.attachment=Anhang diff --git a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties index daceed472a78e382dd6d4c1692a2bcf4f3f01e99..e606d351bf224cfabde1261de2814794c35fdd3b 100644 --- a/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/co/_i18n/LocalStrings_en.properties @@ -6,6 +6,7 @@ contact.cp.from=Copy sent to addresser contact.from=From contact.list.sender=Addresser contact.subject=Subject +contact.templates=Templates contact.to=To contact.to.groupname.undisclosedrecipients=Predefined recipients error.field.not.empty=This field is mandatory. diff --git a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java index 5be69a779f1a8c543bfce1ed8c2f53f2485bfc74..ed4b88a7f835ca6dad9171a5327061f50e78cd72 100644 --- a/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java +++ b/src/main/java/org/olat/modules/coach/ui/StudentCoursesController.java @@ -399,7 +399,7 @@ public class StudentCoursesController extends FormBasicController implements Act ContactList contactList = new ContactList(fullName); contactList.add(student); cmsg.addEmailTo(contactList); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(contactCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), contactCtrl.getInitialComponent()); cmc.activate(); diff --git a/src/main/java/org/olat/modules/grading/manager/GradingAssignmentDAO.java b/src/main/java/org/olat/modules/grading/manager/GradingAssignmentDAO.java index 0a00670472d7d588db22838408a6d626dad64545..64c5b95e20e409d2d40c204dcce2dc7797688837 100644 --- a/src/main/java/org/olat/modules/grading/manager/GradingAssignmentDAO.java +++ b/src/main/java/org/olat/modules/grading/manager/GradingAssignmentDAO.java @@ -117,6 +117,10 @@ public class GradingAssignmentDAO { .getResultList(); } + /** + * @param key The assignment primary key + * @return The assignment with the grader's identity fetched + */ public GradingAssignment loadByKey(Long key) { QueryBuilder sb = new QueryBuilder(); sb.append("select assignment from gradingassignment as assignment") @@ -132,6 +136,32 @@ public class GradingAssignmentDAO { return assignments == null || assignments.isEmpty() ? null : assignments.get(0); } + /** + * @param key The assignment primary key + * @return The assignment with the grader's identity fetched, reference entry, + * assessment entry, repository entry in assessment entry + */ + public GradingAssignment loadFullByKey(Long key) { + QueryBuilder sb = new QueryBuilder(); + sb.append("select assignment from gradingassignment as assignment") + .append(" left join fetch assignment.grader as grader") + .append(" left join fetch grader.identity as graderIdent") + .append(" left join fetch graderIdent.user as graderUser") + .append(" left join fetch assignment.referenceEntry as refEntry") + .append(" left join fetch refEntry.olatResource as refEntryResource") + .append(" left join fetch assignment.assessmentEntry as assessmentEntry") + .append(" left join fetch assessmentEntry.repositoryEntry as assessmentRe") + .append(" left join fetch assessmentRe.olatResource as assessmentReResource") + .append(" where assignment.key=:assignmentKey"); + + List<GradingAssignment> assignments = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), GradingAssignment.class) + .setParameter("assignmentKey", key) + .getResultList(); + return assignments == null || assignments.isEmpty() ? null : assignments.get(0); + } + + public List<RepositoryEntry> getEntries(RepositoryEntryRef referenceEntry) { QueryBuilder sb = new QueryBuilder(); sb.append("select distinct assessmentRe from gradingassignment as assignment") diff --git a/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java b/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java index 0e5b9fd8ee0f7e7a83e4697c33acbfa31eb055c1..8536fa2357757012f14112349b55b5927f31a7a1 100644 --- a/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java +++ b/src/main/java/org/olat/modules/grading/manager/GradingServiceImpl.java @@ -360,7 +360,7 @@ public class GradingServiceImpl implements GradingService, UserDataDeletable, In @Override public GradingAssignment getGradingAssignment(GradingAssignmentRef ref) { - return gradingAssignmentDao.loadByKey(ref.getKey()); + return gradingAssignmentDao.loadFullByKey(ref.getKey()); } @Override @@ -507,7 +507,7 @@ public class GradingServiceImpl implements GradingService, UserDataDeletable, In private GradingAssignment decorateGraderMailTemplate(GradingAssignment assignment, GraderMailTemplate template) { if(template == null) return assignment; - assignment = gradingAssignmentDao.loadByKey(assignment.getKey()); + assignment = gradingAssignmentDao.loadFullByKey(assignment.getKey()); template.setAssessmentDate(assignment.getAssessmentDate()); RepositoryEntry entry = assignment.getAssessmentEntry().getRepositoryEntry(); diff --git a/src/main/java/org/olat/modules/grading/ui/AssignedReferenceEntryListController.java b/src/main/java/org/olat/modules/grading/ui/AssignedReferenceEntryListController.java index 579e237769c70498e50922be822b78f8aea6188a..e12a7619c9b9013ad184948ee3600b0d8241e048 100644 --- a/src/main/java/org/olat/modules/grading/ui/AssignedReferenceEntryListController.java +++ b/src/main/java/org/olat/modules/grading/ui/AssignedReferenceEntryListController.java @@ -228,7 +228,7 @@ public class AssignedReferenceEntryListController extends FormBasicController { msg.addEmailTo(contact); RepositoryEntry referenceEntry = row.getReferenceEntry(); - MailTemplate template = new GraderMailTemplate(null, null, referenceEntry); + MailTemplate template = new GraderMailTemplate(null, null, null, referenceEntry); contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, template); listenTo(contactGraderCtrl); diff --git a/src/main/java/org/olat/modules/grading/ui/GradersListController.java b/src/main/java/org/olat/modules/grading/ui/GradersListController.java index 8506404f78519c74c6c0323821d345c5f3cf1f2b..50f40d0f971c26937ff1b761b6b906f93a25c4ac 100644 --- a/src/main/java/org/olat/modules/grading/ui/GradersListController.java +++ b/src/main/java/org/olat/modules/grading/ui/GradersListController.java @@ -387,6 +387,7 @@ public class GradersListController extends FormBasicController { MailTemplate template = new GraderMailTemplate(null, null, null); contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, template); + contactGraderCtrl.getAndRemoveTitle(); listenTo(contactGraderCtrl); String graderName = userManager.getUserDisplayName(row.getGrader()); diff --git a/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java b/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java index 00f581e15e01559af29c104538dc5f42878957fd..11800f1b861559ba9c39c245924ce0c146f992c5 100644 --- a/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java +++ b/src/main/java/org/olat/modules/grading/ui/GradingAssignmentsListController.java @@ -718,8 +718,9 @@ public class GradingAssignmentsListController extends FormBasicController implem RepositoryEntry entry = entries.size() == 1 ? entries.iterator().next() : null; RepositoryEntry referenceEntry = referenceEntries.size() == 1 ? referenceEntries.iterator().next() : null; - MailTemplate template = new GraderMailTemplate(entry, null, referenceEntry); - contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, template); + List<MailTemplate> templates = getTemplates(entry, referenceEntry); + contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, templates); + contactGraderCtrl.getAndRemoveTitle(); listenTo(contactGraderCtrl); String graderName = getGradersNames(assignmentRows); @@ -741,8 +742,9 @@ public class GradingAssignmentsListController extends FormBasicController implem AssessmentEntry assessmentEntry = assignment.getAssessmentEntry(); RepositoryEntry entry = assessmentEntry.getRepositoryEntry(); - MailTemplate template = new GraderMailTemplate(entry, null, referenceEntry); - contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, template); + List<MailTemplate> templates = getTemplates(entry, referenceEntry); + contactGraderCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, msg, templates); + contactGraderCtrl.getAndRemoveTitle(); listenTo(contactGraderCtrl); String graderName = userManager.getUserDisplayName(row.getGrader()); @@ -752,6 +754,18 @@ public class GradingAssignmentsListController extends FormBasicController implem cmc.activate(); } + private List<MailTemplate> getTemplates(RepositoryEntry entry, RepositoryEntry referenceEntry) { + List<MailTemplate> templates = new ArrayList<>(); + templates.add(new GraderMailTemplate(translate("template.empty"), entry, null, referenceEntry)); + templates.add(new GraderMailTemplate(translate("template.notification"), + translate("mail.notification.subject"), translate("mail.notification.subject"), entry, null, referenceEntry)); + templates.add(new GraderMailTemplate(translate("template.reminder1"), + translate("mail.reminder1.subject"), translate("mail.reminder1.body"), entry, null, referenceEntry)); + templates.add(new GraderMailTemplate(translate("template.reminder2"), + translate("mail.reminder2.subject"), translate("mail.reminder2.body"), entry, null, referenceEntry)); + return templates; + } + private void doBatchUnassignGrader(UserRequest ureq) { List<GradingAssignmentRow> rows = getSelectedGradingAssignmentRows(); if(rows.isEmpty()) { diff --git a/src/main/java/org/olat/modules/grading/ui/GradingInformationsController.java b/src/main/java/org/olat/modules/grading/ui/GradingInformationsController.java index bd1f688640d4877dc3cc300057ad4e9a7612ddaf..91c4b33a4a046bf1040ff4c8ebee04762ae49b80 100644 --- a/src/main/java/org/olat/modules/grading/ui/GradingInformationsController.java +++ b/src/main/java/org/olat/modules/grading/ui/GradingInformationsController.java @@ -261,7 +261,8 @@ public class GradingInformationsController extends FormBasicController { ownersList.addAllIdentites(owners); cmsg.addEmailTo(ownersList); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); + contactCtrl.getAndRemoveTitle(); listenTo(contactCtrl); String title = translate("contact.owners.title"); diff --git a/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_de.properties index 8f69d55c663115853b3f9a4e7e2ee604177953ba..e6bd31185a05c3971cb7a579a426f78bacb13bb3 100644 --- a/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_de.properties @@ -142,6 +142,10 @@ table.header.status=Status table.header.taxonomy=Taxonomie table.header.tools=Action table.header.username=Benutzername +template.empty=Leer +template.notification=Zuweisung Benachrichtigung +template.reminder1=Erste Erinnerung +template.reminder2=Zweite Erinnerung tool.absence=Abwesenheit einstellen lassen tool.activate=Aktivieren tool.assign.grader=Korrektor w\u00E4hlen diff --git a/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_en.properties index 4058c29a160f58a8b55010939c19ef4b5486e3c8..b7fa46cea5ef94f2451cd4a6497909a4ad5d2b9b 100644 --- a/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/grading/ui/_i18n/LocalStrings_en.properties @@ -140,6 +140,10 @@ table.header.status=Status table.header.taxonomy=Taxonomie table.header.tools=Action table.header.username=Username +template.empty=Empty +template.notification=Assignment notification +template.reminder1=First reminder +template.reminder2=Second reminder tool.absence=Set absence leave tool.activate=Activate tool.assign.grader=Assign grader diff --git a/src/main/java/org/olat/modules/grading/ui/component/GraderMailTemplate.java b/src/main/java/org/olat/modules/grading/ui/component/GraderMailTemplate.java index dc68a5119eba164b0dcb6aaf82b4e1908f73a3d1..bc1dcf5b4e988f196b2f7013d34b06232ef98ebf 100644 --- a/src/main/java/org/olat/modules/grading/ui/component/GraderMailTemplate.java +++ b/src/main/java/org/olat/modules/grading/ui/component/GraderMailTemplate.java @@ -61,8 +61,17 @@ public class GraderMailTemplate extends MailTemplate { this.referenceEntry = referenceEntry; } - public GraderMailTemplate(String subject, String body, RepositoryEntry entry, CourseNode courseNode, RepositoryEntry referenceEntry) { + public GraderMailTemplate(String name, RepositoryEntry entry, CourseNode courseNode, RepositoryEntry referenceEntry) { + super(null, null, null); + setTemplateName(name); + this.entry = entry; + this.courseNode = courseNode; + this.referenceEntry = referenceEntry; + } + + public GraderMailTemplate(String templateName, String subject, String body, RepositoryEntry entry, CourseNode courseNode, RepositoryEntry referenceEntry) { super(subject, body, null); + setTemplateName(templateName); this.entry = entry; this.courseNode = courseNode; this.referenceEntry = referenceEntry; diff --git a/src/main/java/org/olat/modules/grading/ui/confirmation/ConfirmDeactivationGraderController.java b/src/main/java/org/olat/modules/grading/ui/confirmation/ConfirmDeactivationGraderController.java index 0a031f738d7592c0591c1468e19b7722a970f5a7..e303b47b38e0f3517d2f635a17a58e90c97b7f1e 100644 --- a/src/main/java/org/olat/modules/grading/ui/confirmation/ConfirmDeactivationGraderController.java +++ b/src/main/java/org/olat/modules/grading/ui/confirmation/ConfirmDeactivationGraderController.java @@ -160,7 +160,7 @@ public class ConfirmDeactivationGraderController extends FormBasicController { MailerResult result = new MailerResult(); GraderMailTemplate reassignmentTemplate = null; if(replacement != null) { - reassignmentTemplate = new GraderMailTemplate("", "", null, null, referenceEntry); + reassignmentTemplate = new GraderMailTemplate(null, null, referenceEntry); } if(remove) { diff --git a/src/main/java/org/olat/modules/grading/ui/wizard/ImportGraderMailController.java b/src/main/java/org/olat/modules/grading/ui/wizard/ImportGraderMailController.java index 7284068cf78bc2cbf79e5b20ec74fc333da707eb..162e28e6fd55d34f22aff7a50e9869a2a2cc793c 100644 --- a/src/main/java/org/olat/modules/grading/ui/wizard/ImportGraderMailController.java +++ b/src/main/java/org/olat/modules/grading/ui/wizard/ImportGraderMailController.java @@ -48,6 +48,7 @@ public class ImportGraderMailController extends StepFormBasicController { super(ureq, wControl, rootForm, runContext, LAYOUT_CUSTOM, "mail_template"); this.mailTemplate = mailTemplate; mailCtrl = new ContactForm(ureq, getWindowControl(), rootForm, getIdentity(), false, false, false, false); + mailCtrl.getAndRemoveFormTitle(); mailCtrl.setSubject(mailTemplate.getSubjectTemplate()); mailCtrl.setBody(mailTemplate.getBodyTemplate()); mailCtrl.setRecipientsLists(Collections.singletonList(contactList)); diff --git a/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java b/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java index ce63612412af8880b6af5e8ce1b7415dc683b7e3..e24ad16035946316fbd7fe2a060384636a379132 100644 --- a/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java +++ b/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java @@ -384,7 +384,7 @@ public class ParticipantLectureBlocksController extends FormBasicController { cmsg.addEmailTo(contactList); cmsg.setSubject(translate("appeal.subject", args)); cmsg.setBodyText(body.toString()); - appealCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + appealCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); appealCtrl.setUserObject(row); appealCtrl.setContactFormTitle(translate("new.appeal.title")); listenTo(appealCtrl); diff --git a/src/main/java/org/olat/modules/quality/ui/SuggestionController.java b/src/main/java/org/olat/modules/quality/ui/SuggestionController.java index f39222d9ef027372d05d767c9588df4a2cf6fc58..3587b4bf352ada96c238b89924175b4dbcdeb92a 100644 --- a/src/main/java/org/olat/modules/quality/ui/SuggestionController.java +++ b/src/main/java/org/olat/modules/quality/ui/SuggestionController.java @@ -63,7 +63,7 @@ public class SuggestionController extends BasicController { String emailBody = qualityModule.getSuggestionEmailBody(); contactMessage.setBodyText(emailBody); - contactFormCtrl = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage, null); + contactFormCtrl = new ContactFormController(ureq, getWindowControl(), false, false, false, contactMessage); contactFormCtrl.setContactFormTitle(translate("suggestion.title")); contactFormCtrl.setContactFormDescription(translate("suggestion.description")); listenTo(contactFormCtrl); diff --git a/src/main/java/org/olat/registration/DisclaimerController.java b/src/main/java/org/olat/registration/DisclaimerController.java index 3fef4dc6e3af5f61fa84cb556101ce6351307c44..826425fbb2d9640302f455ba87a4bd9dfd6b26e3 100644 --- a/src/main/java/org/olat/registration/DisclaimerController.java +++ b/src/main/java/org/olat/registration/DisclaimerController.java @@ -263,7 +263,7 @@ public class DisclaimerController extends BasicController { contact.add(mailAddress); contactMessage.addEmailTo(contact); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage); listenTo(contactCtrl); String title = translate("request.delete.account"); diff --git a/src/main/java/org/olat/registration/RequestAccountDeletionController.java b/src/main/java/org/olat/registration/RequestAccountDeletionController.java index 4fdcc77f6b8c11bb5bc2cbe72555f90a2d35a7c7..da3dbc0a82df5a5d8edd508b70c04d7cf360e027 100644 --- a/src/main/java/org/olat/registration/RequestAccountDeletionController.java +++ b/src/main/java/org/olat/registration/RequestAccountDeletionController.java @@ -146,7 +146,7 @@ public class RequestAccountDeletionController extends FormBasicController { contact.add(mailAddress); contactMessage.addEmailTo(contact); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, contactMessage); listenTo(contactCtrl); String title = translate("request.delete.account"); diff --git a/src/main/java/org/olat/repository/ui/catalog/CatalogNodeManagerController.java b/src/main/java/org/olat/repository/ui/catalog/CatalogNodeManagerController.java index dcbcae9eae69657a0ba2dd54db67c69549dbcf86..532145dfc70b7ca9fa22c062c7c385db84dd3de6 100644 --- a/src/main/java/org/olat/repository/ui/catalog/CatalogNodeManagerController.java +++ b/src/main/java/org/olat/repository/ui/catalog/CatalogNodeManagerController.java @@ -853,7 +853,7 @@ public class CatalogNodeManagerController extends FormBasicController implements //create e-mail Message ContactMessage cmsg = new ContactMessage(ureq.getIdentity()); cmsg.addEmailTo(caretaker); - contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtrl = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(contactCtrl); // open form in dialog diff --git a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java index 057f3504cdebfe7289cb2c5b5a808c30b418e6cc..a31b457b6da802957ef93b5c54e8752418ece075 100644 --- a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java +++ b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java @@ -419,7 +419,7 @@ public class UserSearchTableController extends FormBasicController implements Ac cmsg.addEmailTo(contacts); // create contact form controller with ContactMessage - contactCtr = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg, null); + contactCtr = new ContactFormController(ureq, getWindowControl(), true, false, false, cmsg); listenTo(contactCtr); cmc = new CloseableModalController(getWindowControl(), "close", contactCtr.getInitialComponent(), diff --git a/src/main/java/org/olat/user/ui/identity/AbstractUserInfoMainController.java b/src/main/java/org/olat/user/ui/identity/AbstractUserInfoMainController.java index a78fd886a84551fb74b45a378c5d65d027094319..30c8a9393b876f02c988525773816cc1c45b6db1 100644 --- a/src/main/java/org/olat/user/ui/identity/AbstractUserInfoMainController.java +++ b/src/main/java/org/olat/user/ui/identity/AbstractUserInfoMainController.java @@ -166,7 +166,7 @@ public abstract class AbstractUserInfoMainController extends BasicController { OLATResourceable ores = OresHelper.createOLATResourceableType(CMD_CONTACT); WindowControl bwControl = addToHistory(ureq, ores, null); - contactFormController = new ContactFormController(ureq, bwControl, true, false, false, cmsg, null); + contactFormController = new ContactFormController(ureq, bwControl, true, false, false, cmsg); listenTo(contactFormController); return contactFormController; } diff --git a/src/test/java/org/olat/modules/grading/manager/GradingAssignmentDAOTest.java b/src/test/java/org/olat/modules/grading/manager/GradingAssignmentDAOTest.java index 572e9feeef7bcce1d33c1642ad96ca13a12bb793..4ba95762351ed4261c8b26110815c80666caa6d2 100644 --- a/src/test/java/org/olat/modules/grading/manager/GradingAssignmentDAOTest.java +++ b/src/test/java/org/olat/modules/grading/manager/GradingAssignmentDAOTest.java @@ -122,6 +122,41 @@ public class GradingAssignmentDAOTest extends OlatTestCase { Assert.assertNotNull(reloadedAssignment.getGrader().getIdentity().getUser()); } + @Test + public void loadFullByKey() { + Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("assignment-author1"); + Identity grader = JunitTestHelper.createAndPersistIdentityAsRndUser("assignment-grader-2"); + Identity student = JunitTestHelper.createAndPersistIdentityAsRndUser("assignment-student-3"); + RepositoryEntry entry = JunitTestHelper.createRandomRepositoryEntry(author); + GraderToIdentity relation = gradedToIdentityDao.createRelation(entry, grader); + dbInstance.commitAndCloseSession(); + + AssessmentEntry assessment = assessmentEntryDao + .createAssessmentEntry(student, null, entry, null, false, entry); + Assert.assertNotNull(assessment); + dbInstance.commitAndCloseSession(); + + GradingAssignment assignment = gradingAssignmentDao.createGradingAssignment(relation, entry, assessment, new Date(), new Date()); + dbInstance.commit(); + + GradingAssignment reloadedAssignment = gradingAssignmentDao.loadFullByKey(assignment.getKey()); + dbInstance.commitAndCloseSession(); + + // grader and identity of grader are fetched + Assert.assertNotNull(reloadedAssignment); + Assert.assertEquals(assignment, reloadedAssignment); + Assert.assertEquals(relation, reloadedAssignment.getGrader()); + Assert.assertEquals(grader, reloadedAssignment.getGrader().getIdentity()); + Assert.assertNotNull(reloadedAssignment.getGrader().getIdentity().getUser()); + // reference entry is fetch + Assert.assertNotNull(reloadedAssignment.getReferenceEntry()); + Assert.assertNotNull(reloadedAssignment.getReferenceEntry().getDisplayname()); + // assessment entry repository entry is fetch + Assert.assertNotNull(reloadedAssignment.getAssessmentEntry()); + Assert.assertNotNull(reloadedAssignment.getAssessmentEntry().getRepositoryEntry()); + Assert.assertNotNull(reloadedAssignment.getAssessmentEntry().getRepositoryEntry().getDisplayname()); + } + @Test public void getEntries_repositoryEntries() { Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("assignment-author1");