The invitation email 'subject' can now be set as a localizable property in invitation-services.properties: 

invitation.invitesender.email.subject 

The various roles can also be substitued with properties which are set in the same file. The property key format is: 
invitation.invitesender.email.role.<RoleName> 
where <RoleName> is replaced by the specific role to be localized. E.g: 
invitation.invitesender.email.role.SiteManager 
invitation.invitesender.email.role.SiteConsumer 
Etc. 



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@20074 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
N Smith
2010-05-04 17:26:11 +00:00
parent 30084dde24
commit 59b038daeb
4 changed files with 50 additions and 10 deletions

View File

@@ -14,3 +14,7 @@ invitation.invite.authentication_chain "Authentication chain does not allow crea
# InviteSender messages # InviteSender messages
invitation.invitesender.email.subject "Invitation to join '{0}' site" 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"

View File

@@ -30,6 +30,7 @@ import java.util.Set;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.action.executer.MailActionExecuter; import org.alfresco.repo.action.executer.MailActionExecuter;
import org.alfresco.repo.i18n.MessageService;
import org.alfresco.repo.model.Repository; import org.alfresco.repo.model.Repository;
import org.alfresco.repo.search.SearcherException; import org.alfresco.repo.search.SearcherException;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
@@ -80,8 +81,9 @@ public class InviteSender
private final SiteService siteService; private final SiteService siteService;
private final TemplateService templateService; private final TemplateService templateService;
private final Repository repository; private final Repository repository;
private final MessageService messageService;
public InviteSender(ServiceRegistry services, Repository repository) public InviteSender(ServiceRegistry services, Repository repository, MessageService messageService)
{ {
this.actionService = services.getActionService(); this.actionService = services.getActionService();
this.nodeService = services.getNodeService(); this.nodeService = services.getNodeService();
@@ -90,6 +92,7 @@ public class InviteSender
this.siteService = services.getSiteService(); this.siteService = services.getSiteService();
this.templateService = services.getTemplateService(); this.templateService = services.getTemplateService();
this.repository = repository; this.repository = repository;
this.messageService = messageService;
} }
/** /**
@@ -130,7 +133,7 @@ public class InviteSender
private String buildSubject(Map<String, String> properties) private String buildSubject(Map<String, String> properties)
{ {
return "Invitation to join '" + getSiteName(properties) + "' site"; return messageService.getMessage("invitation.invitesender.email.subject", getSiteName(properties));
} }
private String buildMailText(Map<String, String> properties, NodeRef inviter, NodeRef invitee) private String buildMailText(Map<String, String> properties, NodeRef inviter, NodeRef invitee)
@@ -159,7 +162,7 @@ public class InviteSender
args.put("inviteePersonRef", invitee.toString()); args.put("inviteePersonRef", invitee.toString());
args.put("inviterPersonRef", inviter.toString()); args.put("inviterPersonRef", inviter.toString());
args.put("siteName", getSiteName(properties)); args.put("siteName", getSiteName(properties));
args.put("inviteeSiteRole", properties.get(wfVarRole)); args.put("inviteeSiteRole", getRoleName(properties));
args.put("inviteeUserName", properties.get(wfVarInviteeUserName)); args.put("inviteeUserName", properties.get(wfVarInviteeUserName));
args.put("inviteeGenPassword", properties.get(wfVarInviteeGenPassword)); args.put("inviteeGenPassword", properties.get(wfVarInviteeGenPassword));
args.put("acceptLink", acceptLink); args.put("acceptLink", acceptLink);
@@ -167,6 +170,16 @@ public class InviteSender
return args; return args;
} }
private String getRoleName(Map<String, String> properties) {
String roleName = properties.get(wfVarRole);
String role = messageService.getMessage("invitation.invitesender.email.role."+roleName);
if(role == null)
{
role = roleName;
}
return role;
}
private Map<String, Object> makeDefaultModel() private Map<String, Object> makeDefaultModel()
{ {
NodeRef person = repository.getPerson(); NodeRef person = repository.getPerson();

View File

@@ -33,6 +33,7 @@ import junit.framework.TestCase;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.repo.action.executer.MailActionExecuter; import org.alfresco.repo.action.executer.MailActionExecuter;
import org.alfresco.repo.i18n.MessageService;
import org.alfresco.repo.model.Repository; import org.alfresco.repo.model.Repository;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.action.Action; 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 packageId = testStore + "/Package";
private static final String instanceId = "InstanceId"; private static final String instanceId = "InstanceId";
private final MessageService messageService = mock(MessageService.class);
private Action mailAction = mock(Action.class); private Action mailAction = mock(Action.class);
private SiteInfo siteInfo = mock(SiteInfo.class); private SiteInfo siteInfo = mock(SiteInfo.class);
private TemplateService templateService; private TemplateService templateService;
@@ -86,12 +88,22 @@ public class InviteSenderTest extends TestCase
public void testSendMailWorkingPath() throws Exception 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<String, String> properties = buildDefaultProperties(); Map<String, String> properties = buildDefaultProperties();
sender.sendMail(properties); 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_FROM), eq(inviter.email));
verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_TO), eq(invitee.email)); verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_TO), eq(invitee.email));
verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_SUBJECT), verify(mailAction).setParameterValue(eq(MailActionExecuter.PARAM_SUBJECT),
eq("Invitation to join '" + siteShortName + "' site")); eq(subjectMsg));
Map<String, String> argsMap = getArgsMap(); Map<String, String> argsMap = getArgsMap();
assertNotNull(argsMap); assertNotNull(argsMap);
@@ -99,7 +111,6 @@ public class InviteSenderTest extends TestCase
assertEquals(invitee.node.toString(), argsMap.get("inviteePersonRef")); assertEquals(invitee.node.toString(), argsMap.get("inviteePersonRef"));
assertEquals(inviter.node.toString(), argsMap.get("inviterPersonRef")); assertEquals(inviter.node.toString(), argsMap.get("inviterPersonRef"));
assertEquals(siteShortName, argsMap.get("siteName")); assertEquals(siteShortName, argsMap.get("siteName"));
assertEquals(role, argsMap.get("inviteeSiteRole"));
assertEquals(invitee.name, argsMap.get("inviteeUserName")); assertEquals(invitee.name, argsMap.get("inviteeUserName"));
assertEquals(password, argsMap.get("inviteeGenPassword")); assertEquals(password, argsMap.get("inviteeGenPassword"));
assertEquals( assertEquals(
@@ -108,6 +119,16 @@ public class InviteSenderTest extends TestCase
assertEquals( assertEquals(
"test://test/path/reject?inviteId=InstanceId&inviteeUserName=invitee&siteShortName=Full Site Name&inviteTicket=Ticket", "test://test/path/reject?inviteId=InstanceId&inviteeUserName=invitee&siteShortName=Full Site Name&inviteTicket=Ticket",
argsMap.get("rejectLink")); 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 public void testSendMailWithWhitespaceUserName() throws Exception
@@ -175,7 +196,7 @@ public class InviteSenderTest extends TestCase
super.setUp(); super.setUp();
ServiceRegistry services = mockServices(); ServiceRegistry services = mockServices();
Repository repository = mockRepository(); Repository repository = mockRepository();
sender = new InviteSender(services, repository); sender = new InviteSender(services, repository, messageService);
} }
/** /**

View File

@@ -26,6 +26,7 @@ import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.alfresco.repo.i18n.MessageService;
import org.alfresco.repo.jscript.ScriptNode; import org.alfresco.repo.jscript.ScriptNode;
import org.alfresco.repo.model.Repository; import org.alfresco.repo.model.Repository;
import org.alfresco.repo.workflow.WorkflowModel; import org.alfresco.repo.workflow.WorkflowModel;
@@ -48,7 +49,8 @@ public class SendInviteAction extends JBPMSpringActionHandler
{ {
Repository repository = (Repository) factory.getBean("repositoryHelper"); Repository repository = (Repository) factory.getBean("repositoryHelper");
ServiceRegistry services = (ServiceRegistry) factory.getBean(ServiceRegistry.SERVICE_REGISTRY); 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(); namespaceService = services.getNamespaceService();
} }