diff --git a/config/alfresco/messages/invitation-service.properties b/config/alfresco/messages/invitation-service.properties index 188d7ef9fe..8d22496449 100644 --- a/config/alfresco/messages/invitation-service.properties +++ b/config/alfresco/messages/invitation-service.properties @@ -13,4 +13,8 @@ invitation.invite.already_finished "Invitation, {0} has already been accepted, c invitation.invite.authentication_chain "Authentication chain does not allow creation of new accounts" # InviteSender messages -invitation.invitesender.email.subject "Invitation to join '{0}' site" \ No newline at end of file +invitation.invitesender.email.subject "Invitation to join '{0}' site" +invitation.invitesender.email.role.SiteManager "Site Manager" +invitation.invitesender.email.role.SiteCollaborator "Site Collaborator" +invitation.invitesender.email.role.SiteContributor "Site Contributor" +invitation.invitesender.email.role.SiteConsumer "Site Consumer" \ No newline at end of file diff --git a/source/java/org/alfresco/repo/invitation/site/InviteSender.java b/source/java/org/alfresco/repo/invitation/site/InviteSender.java index e62e5c4812..8037160f26 100644 --- a/source/java/org/alfresco/repo/invitation/site/InviteSender.java +++ b/source/java/org/alfresco/repo/invitation/site/InviteSender.java @@ -30,6 +30,7 @@ import java.util.Set; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.MailActionExecuter; +import org.alfresco.repo.i18n.MessageService; import org.alfresco.repo.model.Repository; import org.alfresco.repo.search.SearcherException; import org.alfresco.service.ServiceRegistry; @@ -80,8 +81,9 @@ public class InviteSender private final SiteService siteService; private final TemplateService templateService; private final Repository repository; - - public InviteSender(ServiceRegistry services, Repository repository) + private final MessageService messageService; + + public InviteSender(ServiceRegistry services, Repository repository, MessageService messageService) { this.actionService = services.getActionService(); this.nodeService = services.getNodeService(); @@ -90,6 +92,7 @@ public class InviteSender this.siteService = services.getSiteService(); this.templateService = services.getTemplateService(); this.repository = repository; + this.messageService = messageService; } /** @@ -130,7 +133,7 @@ public class InviteSender private String buildSubject(Map properties) { - return "Invitation to join '" + getSiteName(properties) + "' site"; + return messageService.getMessage("invitation.invitesender.email.subject", getSiteName(properties)); } private String buildMailText(Map properties, NodeRef inviter, NodeRef invitee) @@ -159,7 +162,7 @@ public class InviteSender args.put("inviteePersonRef", invitee.toString()); args.put("inviterPersonRef", inviter.toString()); args.put("siteName", getSiteName(properties)); - args.put("inviteeSiteRole", properties.get(wfVarRole)); + args.put("inviteeSiteRole", getRoleName(properties)); args.put("inviteeUserName", properties.get(wfVarInviteeUserName)); args.put("inviteeGenPassword", properties.get(wfVarInviteeGenPassword)); args.put("acceptLink", acceptLink); @@ -167,7 +170,17 @@ public class InviteSender return args; } - private Map makeDefaultModel() + private String getRoleName(Map properties) { + String roleName = properties.get(wfVarRole); + String role = messageService.getMessage("invitation.invitesender.email.role."+roleName); + if(role == null) + { + role = roleName; + } + return role; + } + + private Map makeDefaultModel() { NodeRef person = repository.getPerson(); NodeRef companyHome = repository.getCompanyHome(); diff --git a/source/java/org/alfresco/repo/invitation/site/InviteSenderTest.java b/source/java/org/alfresco/repo/invitation/site/InviteSenderTest.java index e46182ba57..3fc1a01d63 100644 --- a/source/java/org/alfresco/repo/invitation/site/InviteSenderTest.java +++ b/source/java/org/alfresco/repo/invitation/site/InviteSenderTest.java @@ -33,6 +33,7 @@ import junit.framework.TestCase; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.MailActionExecuter; +import org.alfresco.repo.i18n.MessageService; import org.alfresco.repo.model.Repository; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.action.Action; @@ -79,6 +80,7 @@ public class InviteSenderTest extends TestCase private static final String packageId = testStore + "/Package"; private static final String instanceId = "InstanceId"; + private final MessageService messageService = mock(MessageService.class); private Action mailAction = mock(Action.class); private SiteInfo siteInfo = mock(SiteInfo.class); private TemplateService templateService; @@ -86,12 +88,22 @@ public class InviteSenderTest extends TestCase public void testSendMailWorkingPath() throws Exception { + String rolePropertyName = "invitation.invitesender.email.role.Role"; + String subjectPropertyName = "invitation.invitesender.email.subject"; + + String subjectMsg = "Subject message"; + when(messageService.getMessage(eq(subjectPropertyName), any())).thenReturn(subjectMsg); + Map properties = buildDefaultProperties(); sender.sendMail(properties); + + verify(messageService).getMessage(eq(subjectPropertyName), any()); + verify(messageService).getMessage(eq(rolePropertyName)); + verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_FROM), eq(inviter.email)); verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_TO), eq(invitee.email)); verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_SUBJECT), - eq("Invitation to join '" + siteShortName + "' site")); + eq(subjectMsg)); Map argsMap = getArgsMap(); assertNotNull(argsMap); @@ -99,7 +111,6 @@ public class InviteSenderTest extends TestCase assertEquals(invitee.node.toString(), argsMap.get("inviteePersonRef")); assertEquals(inviter.node.toString(), argsMap.get("inviterPersonRef")); assertEquals(siteShortName, argsMap.get("siteName")); - assertEquals(role, argsMap.get("inviteeSiteRole")); assertEquals(invitee.name, argsMap.get("inviteeUserName")); assertEquals(password, argsMap.get("inviteeGenPassword")); assertEquals( @@ -108,6 +119,16 @@ public class InviteSenderTest extends TestCase assertEquals( "test://test/path/reject?inviteId=InstanceId&inviteeUserName=invitee&siteShortName=Full Site Name&inviteTicket=Ticket", argsMap.get("rejectLink")); + + // When no role message is found then the role name is used. + assertEquals(role, argsMap.get("inviteeSiteRole")); + + reset(templateService, messageService); + String roleMsg = "role message"; + when(messageService.getMessage(rolePropertyName)).thenReturn(roleMsg); + sender.sendMail(properties); + // Check that when the role message is set then that role message is used. + assertEquals(roleMsg, getArgsMap().get("inviteeSiteRole")); } public void testSendMailWithWhitespaceUserName() throws Exception @@ -175,7 +196,7 @@ public class InviteSenderTest extends TestCase super.setUp(); ServiceRegistry services = mockServices(); Repository repository = mockRepository(); - sender = new InviteSender(services, repository); + sender = new InviteSender(services, repository, messageService); } /** diff --git a/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java b/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java index 1e50292938..82ef9bbda1 100644 --- a/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java +++ b/source/java/org/alfresco/repo/invitation/site/SendInviteAction.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Map; +import org.alfresco.repo.i18n.MessageService; import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.repo.model.Repository; import org.alfresco.repo.workflow.WorkflowModel; @@ -48,7 +49,8 @@ public class SendInviteAction extends JBPMSpringActionHandler { Repository repository = (Repository) factory.getBean("repositoryHelper"); ServiceRegistry services = (ServiceRegistry) factory.getBean(ServiceRegistry.SERVICE_REGISTRY); - inviteSender = new InviteSender(services, repository); + MessageService messageService= (MessageService) factory.getBean("MessageService"); + inviteSender = new InviteSender(services, repository, messageService); namespaceService = services.getNamespaceService(); }