Index: api/src/java/org/sakaiproject/mailsender/model/ConfigEntry.java =================================================================== --- api/src/java/org/sakaiproject/mailsender/model/ConfigEntry.java (revision 313600) +++ api/src/java/org/sakaiproject/mailsender/model/ConfigEntry.java (working copy) @@ -22,7 +22,7 @@ public class ConfigEntry { public static final ConfigEntry DEFAULT_CONFIG = new ConfigEntry( - SubjectPrefixType.system.name(), false, false, + SubjectPrefixType.system.name(), false, false, false, ReplyTo.no_reply_to.name(), false, null, true); public enum ReplyTo @@ -37,18 +37,19 @@ public enum ConfigParams { - replyto, sendmecopy, emailarchive, subjectprefix, displayinvalidemailaddrs, displayemptygroups + replyto, sendmecopy, appendrecipientlist, emailarchive, subjectprefix, displayinvalidemailaddrs, displayemptygroups } private String replyTo; private boolean displayInvalidEmails; private boolean sendMeACopy; + private boolean appendRecipientList; private boolean addToArchive; private String subjectPrefixType; private String subjectPrefix; private boolean displayEmptyGroups = true; - public ConfigEntry(String subjectPrefixType, boolean sendMeACopy, + public ConfigEntry(String subjectPrefixType, boolean sendMeACopy, boolean appendRecipientList, boolean addToArchive, String replyTo, boolean displayInvalidEmails, String subjectPrefix, boolean displayEmptyGroups) { @@ -55,6 +56,7 @@ setSubjectPrefixType(subjectPrefixType); setSubjectPrefix(subjectPrefix); setSendMeACopy(sendMeACopy); + setAppendRecipientList(appendRecipientList); setAddToArchive(addToArchive); setReplyTo(replyTo); setDisplayInvalidEmails(displayInvalidEmails); @@ -102,6 +104,16 @@ this.sendMeACopy = sendMeACopy; } + public boolean isAppendRecipientList() + { + return appendRecipientList; + } + + public void setAppendRecipientList(boolean appendRecipientList) + { + this.appendRecipientList = appendRecipientList; + } + public boolean isAddToArchive() { return addToArchive; Index: api/src/test/org/sakaiproject/mailsender/model/ConfigEntryTest.java =================================================================== --- api/src/test/org/sakaiproject/mailsender/model/ConfigEntryTest.java (revision 313600) +++ api/src/test/org/sakaiproject/mailsender/model/ConfigEntryTest.java (working copy) @@ -35,6 +35,7 @@ String subjectPrefixType = SubjectPrefixType.system.toString(); boolean sendMeACopy = false; + boolean appendRecipientList = false; boolean addToArchive = false; String replyTo = ReplyTo.no_reply_to.toString(); boolean displayInvalidEmails = false; @@ -43,7 +44,7 @@ @Before public void setUp() { - entry = new ConfigEntry(subjectPrefixType, sendMeACopy, addToArchive, + entry = new ConfigEntry(subjectPrefixType, sendMeACopy, appendRecipientList, addToArchive, replyTo, displayInvalidEmails, subjectPrefix, displayEmptyGroups); } @@ -51,6 +52,7 @@ public void getDefaults() { assertEquals(subjectPrefixType, entry.getSubjectPrefixType()); assertEquals(sendMeACopy, entry.isSendMeACopy()); + assertEquals(appendRecipientList, entry.isAppendRecipientList()); assertEquals(addToArchive, entry.isAddToArchive()); assertEquals(replyTo, entry.getReplyTo()); assertEquals(displayInvalidEmails, entry.isDisplayInvalidEmails()); Index: impl/src/java/org/sakaiproject/mailsender/logic/impl/ConfigLogicImpl.java =================================================================== --- impl/src/java/org/sakaiproject/mailsender/logic/impl/ConfigLogicImpl.java (revision 313600) +++ impl/src/java/org/sakaiproject/mailsender/logic/impl/ConfigLogicImpl.java (working copy) @@ -67,6 +67,9 @@ // send me a copy boolean sendMeACopy = isSendMeACopy(props); + //append recipient list + boolean appendRecipientList = isAppendRecipientList(props); + // add to email archive boolean addToArchive = isAddToArchive(props); @@ -79,7 +82,7 @@ // display empty groups; boolean displayEmptyGroups = isDisplayEmptyGroups(props); - ConfigEntry config = new ConfigEntry(prefixType, sendMeACopy, addToArchive, replyTo, + ConfigEntry config = new ConfigEntry(prefixType, sendMeACopy, appendRecipientList, addToArchive, replyTo, displayInvalidEmails, subjectPrefix, displayEmptyGroups); return config; } @@ -111,6 +114,9 @@ String sendMeACopy = Boolean.toString(ce.isSendMeACopy()); props.setProperty(ConfigParams.sendmecopy.name(), sendMeACopy); + String appendRecipientList = Boolean.toString(ce.isAppendRecipientList()); + props.setProperty(ConfigParams.appendrecipientlist.name(), appendRecipientList); + if (allowSubjectPrefixChange()) { String prefix = ""; @@ -302,6 +308,20 @@ } /** + * Retrieve the append recipient list option from the tool configuration + * + * @param props + * The tool config properties + * @return + */ + private boolean isAppendRecipientList(Properties props) + { + String appendrecipientlist = props.getProperty(ConfigParams.appendrecipientlist.name()); + boolean appendRecipientList = parseConfigBoolean(appendrecipientlist); + return appendRecipientList; + } + + /** * Retrieve the add to email archive option from the tool configuration * * @param props Index: tool/src/java/org/sakaiproject/mailsender/tool/beans/EmailBean.java =================================================================== --- tool/src/java/org/sakaiproject/mailsender/tool/beans/EmailBean.java (revision 313600) +++ tool/src/java/org/sakaiproject/mailsender/tool/beans/EmailBean.java (working copy) @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -150,7 +151,7 @@ return EMAIL_FAILED; } - String content = emailEntry.getContent(); + HashMap emailusers = new HashMap(); @@ -186,6 +187,12 @@ } } + String content = emailEntry.getContent(); + + if (emailEntry.getConfig().isAppendRecipientList()) { + content = content + compileRecipientList(emailusers); + } + String subjectContent = emailEntry.getSubject(); if (subjectContent == null || subjectContent.trim().length() == 0) { @@ -425,4 +432,29 @@ emailusers.put(user.getEmail(), user.getDisplayName()); } } + + private String compileRecipientList(Map recipients) + { + StringBuilder recipientList = new StringBuilder(); + recipientList.append("
"); + recipientList.append(messageLocator.getMessage("message.sent.to") + " "); + Iterator iter = recipients.entrySet().iterator(); + while (iter.hasNext()) + { + Map.Entry entry = (Map.Entry)iter.next(); + String email = entry.getKey(); + String name = entry.getValue(); + if (name != null) + { + recipientList.append(name); + } + else + { + recipientList.append(email); + } + if (iter.hasNext()) recipientList.append(", "); + } + + return recipientList.toString(); + } } Index: tool/src/java/org/sakaiproject/mailsender/tool/producers/ComposeProducer.java =================================================================== --- tool/src/java/org/sakaiproject/mailsender/tool/producers/ComposeProducer.java (revision 313600) +++ tool/src/java/org/sakaiproject/mailsender/tool/producers/ComposeProducer.java (working copy) @@ -166,6 +166,7 @@ // create 'send me a copy' checkbox UIBoundBoolean.make(mainForm, "sendMeCopy", emailBean + ".config.sendMeACopy"); + UIBoundBoolean.make(mainForm, "appendRecipientList", emailBean + ".config.appendRecipientList"); if (externalLogic.isEmailArchiveAddedToSite()) { Index: tool/src/java/org/sakaiproject/mailsender/tool/producers/OptionsProducer.java =================================================================== --- tool/src/java/org/sakaiproject/mailsender/tool/producers/OptionsProducer.java (revision 313600) +++ tool/src/java/org/sakaiproject/mailsender/tool/producers/OptionsProducer.java (working copy) @@ -93,6 +93,9 @@ // Send Me A Copy UIBoundBoolean.make(optionsForm, "sendMeACopy", "configBean.config.sendMeACopy"); + // Append recipient list + UIBoundBoolean.make(optionsForm, "appendRecipientList", "configBean.config.appendRecipientList"); + // Add to email archive if (externalLogic.isEmailArchiveAddedToSite()) { Index: tool/src/webapp/content/templates/compose.html =================================================================== --- tool/src/webapp/content/templates/compose.html (revision 313600) +++ tool/src/webapp/content/templates/compose.html (working copy) @@ -105,6 +105,10 @@ Add to Email Archive, visible to all site participants +
+ + +
Index: tool/src/webapp/content/templates/options.html =================================================================== --- tool/src/webapp/content/templates/options.html (revision 313600) +++ tool/src/webapp/content/templates/options.html (working copy) @@ -38,6 +38,17 @@
+ Show Recipients: +
+
+
+ + +
+
+
+
+
Reply-to:
Index: tool/src/webapp/tools/sakai.mailsender.xml =================================================================== --- tool/src/webapp/tools/sakai.mailsender.xml (revision 313600) +++ tool/src/webapp/tools/sakai.mailsender.xml (working copy) @@ -24,6 +24,7 @@ Index: tool/src/webapp/WEB-INF/bundle/Messages.properties =================================================================== --- tool/src/webapp/WEB-INF/bundle/Messages.properties (revision 313600) +++ tool/src/webapp/WEB-INF/bundle/Messages.properties (working copy) @@ -10,6 +10,7 @@ attachlink=Attach a file attachmorelink=Attach another file sendmeacopy=Send me a copy +appendrecipientlist=Append list of recipients to message addtoemailarchive=Add to Email Archive, visible to all site participants send_mail_button=Send Mail cancel_mail_button=Cancel @@ -39,6 +40,7 @@ options_displayemptygroups_no=No options_update_button=Update Defaults options_cancel_button=Cancel +options_show_recipients=Show recipients: options_users=Users options_tree=Users By Role