mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-959
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:
@@ -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"
|
@@ -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();
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user