diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
index 337668a427..caaa8b304d 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-model-context.xml
@@ -2,110 +2,121 @@
-
-
-
-
-
- alfresco/module/org_alfresco_module_rm/model/recordsModel.xml
-
-
-
-
- alfresco/module/org_alfresco_module_rm/messages/records-model
-
-
-
-
-
- /app:company_home/app:dictionary/cm:records_management
-
-
- path
-
-
-
-
+
+
+
+
-
+ alfresco/module/org_alfresco_module_rm/model/recordsModel.xml
+
+
+
+
+ alfresco/module/org_alfresco_module_rm/messages/records-model
-
+
+
+ /app:company_home/app:dictionary/cm:records_management
+
+
+ path
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
index 21520bf36d..4d26a5a365 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml
@@ -5,25 +5,25 @@
-
-
+
+
+ class="org.alfresco.module.org_alfresco_module_rm.disposition.DispositionSelectionStrategy" >
-
+
-
+
+ depends-on="org_alfresco_module_rm_dictionaryBootstrap" init-method="init">
-
+
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService
@@ -88,26 +88,26 @@
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.createRecordCategory=RM.Write.0
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.isRecordFolderDeclared=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.isRecordFolderClosed=RM.Read.0
- org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.createRecordFolder=RM.Write.0
- org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.getRecords=RM.Read.0,AFTER_RM.FilterNode
- org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.getRecordFolders=RM.Read.0,AFTER_RM.FilterNode
+ org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.createRecordFolder=RM.Write.0
+ org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.getRecords=RM.Read.0,AFTER_RM.FilterNode
+ org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.getRecordFolders=RM.Read.0,AFTER_RM.FilterNode
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.getRecordMetaDataAspects=RM_ALLOW
- org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.isRecordDeclared=RM.Read.0
+ org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.isRecordDeclared=RM.Read.0
org.alfresco.module.org_alfresco_module_rm.RecordsManagementService.*=RM_DENY
]]>
-
+
-
-
+
+
-
+
org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService
@@ -147,25 +147,25 @@
-
-
+
-
-
+
+
-
+
-
+
org.alfresco.module.org_alfresco_module_rm.disposition.DispositionService
@@ -207,32 +207,32 @@
-
+
-
-
+
+
-
+
org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService
@@ -278,12 +278,12 @@
-
+
-
-
+
+
-
+
@@ -298,7 +298,7 @@
{
"records" : true,
"vitalrecords" : true
- }
+ }
},
{
"name" : "Undeclared Records",
@@ -306,7 +306,7 @@
"search" : "ISNODE:T AND NOT ASPECT:\"rma:declaredRecord\"",
"searchparams" :
{
- "records" : true,
+ "records" : true,
"recordfolders" : false,
"undeclaredrecords" : true
}
@@ -358,9 +358,9 @@
]
]]>
-
+
-
+
org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService
@@ -405,29 +405,29 @@
org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.getSavedSearches=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.getSavedSearch=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.saveSearch=RM_ALLOW
- org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.deleteSavedSearch=RM_ALLOW
- org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.addReports=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.deleteSavedSearch=RM_ALLOW
+ org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.addReports=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService.*=RM_DENY
]]>
-
+
-
-
+
+
-
+
-
+
org.alfresco.module.org_alfresco_module_rm.security.RecordsManagementSecurityService
@@ -467,11 +467,11 @@
-
-
+
-
-
-
+
+
+
-
+
org.alfresco.module.org_alfresco_module_rm.security.ExtendedSecurityService
@@ -538,21 +538,21 @@
-
-
-
+
+
-
-
+
+
-
+
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService
@@ -580,7 +580,7 @@
-
+
@@ -593,7 +593,7 @@
-
-
+
-
+
-
+
org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService
@@ -644,7 +644,7 @@
-
+
@@ -657,7 +657,7 @@
-
-
+
-
+
@@ -687,11 +687,11 @@
rma:recordCategory
rma:recordFolder
rma:record
- rma:nonElectronicDocument
+ rma:nonElectronicDocument
-
+
org.alfresco.module.org_alfresco_module_rm.RecordsManagementAdminService
@@ -719,7 +719,7 @@
-
+
@@ -732,7 +732,7 @@
-
-
+
-
+
-
+
org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService
@@ -794,7 +794,7 @@
-
+
@@ -805,7 +805,7 @@
-
+
@@ -836,9 +836,9 @@
-
+
-
+
@@ -850,7 +850,7 @@
-
+
org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService
@@ -877,7 +877,7 @@
-
+
@@ -890,7 +890,7 @@
-
-
+
-
+
@@ -916,7 +916,7 @@
-
+
org.alfresco.module.org_alfresco_module_rm.record.RecordService
@@ -943,7 +943,7 @@
-
+
@@ -969,21 +969,21 @@
-
-
-
+
-
-
-
-
+
+
+
+
@@ -994,7 +994,7 @@
-
+
@@ -1007,7 +1007,7 @@
-
-
+
@@ -1035,10 +1035,75 @@
-
+
+
+
+
+
+
+ Thread-Index
+ messageFrom
+ messageTo
+ messageCc
+ messageSubject
+ messageSent
+
+
+
+
+
+
+
+
+
+
+ ${server.transaction.mode.default}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.alfresco.module.org_alfresco_module_rm.email.EmailMappingKeyService
+
+
+
+ emailMappingKeyService
+
+
+
+
+
+
+
+
+
+
-
-
+
+
@@ -1049,17 +1114,17 @@
-
-
+
+
-
+
-
+
@@ -1068,12 +1133,12 @@
-
+
-
+
-
+
@@ -1081,7 +1146,7 @@
-
+
@@ -1089,11 +1154,11 @@
-
+
-
+
@@ -1106,8 +1171,8 @@
-
-
+
@@ -1138,7 +1203,7 @@
-
+
@@ -1156,7 +1221,7 @@
-
+
@@ -1169,7 +1234,7 @@
-
+
@@ -1236,11 +1301,11 @@
-
+
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
index 0453a26594..c7a0086372 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml
@@ -496,4 +496,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.desc.xml b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.desc.xml
new file mode 100644
index 0000000000..888c5f5fb7
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.desc.xml
@@ -0,0 +1,9 @@
+
+ RM Email Mapping Keys
+ Gets the list of email mapping keys
+ /api/rma/admin/emailmapkeys
+ argument
+ user
+ required
+ internal
+
\ No newline at end of file
diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.json.ftl
new file mode 100644
index 0000000000..48e293d18d
--- /dev/null
+++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/rma/admin/emailmapkeys.get.json.ftl
@@ -0,0 +1,13 @@
+<#escape x as jsonUtils.encodeJSONString(x)>
+{
+ "data" :
+ {
+ "emailmapkeys":
+ [
+ <#list emailmapkeys as emailmapkey>
+ '${emailmapkey}'<#if emailmapkey_has_next>,#if>
+ #list>
+ ]
+ }
+}
+#escape>
\ No newline at end of file
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomisableEmailMappingKeyBootstrap.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomisableEmailMappingKeyBootstrap.java
new file mode 100644
index 0000000000..a543c70674
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/CustomisableEmailMappingKeyBootstrap.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.module.org_alfresco_module_rm.email;
+
+import java.util.List;
+
+/**
+ * Bootstrap bean that indicates that the specified mappings are customisable
+ *
+ * @author Tuna Aksoy
+ * @since 2.1
+ */
+public class CustomisableEmailMappingKeyBootstrap
+{
+ /** List of mappings to register as customisable */
+ private List customisable;
+
+ /** Email mapping key service */
+ private EmailMappingKeyService emailMappingKeyService;
+
+ /**
+ * @param customizable list of mappings to register as customisable
+ */
+ public void setCustomisable(List customisable)
+ {
+ this.customisable = customisable;
+ }
+
+ /**
+ * Email mapping key service
+ *
+ * @param emailMappingKeyService the email mapping key service
+ */
+ public void setEmailMappingKeyService(EmailMappingKeyService emailMappingKeyService)
+ {
+ this.emailMappingKeyService = emailMappingKeyService;
+ }
+
+ /**
+ * Bean initialisation method
+ */
+ public void init()
+ {
+ for (String customEmailMappingKey : customisable)
+ {
+ emailMappingKeyService.makeCustomisable(customEmailMappingKey);
+ }
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyService.java
new file mode 100644
index 0000000000..0a63ddfcfe
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyService.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.module.org_alfresco_module_rm.email;
+
+import java.util.List;
+
+/**
+ * EMail Mapping Key Service
+ *
+ * @author Tuna Aksoy
+ * @since @2.1
+ */
+public interface EmailMappingKeyService
+{
+ /**
+ * Gets the list of email mapping keys
+ *
+ * @return Email mapping keys
+ */
+ public List getEmailMappingKeys();
+
+ /**
+ * Makes a email mapping key customisable.
+ *
+ * @param emailMappingKey emailMappingKey to make customisable
+ */
+ public void makeCustomisable(String emailMappingKey);
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyServiceImpl.java
new file mode 100644
index 0000000000..2a56189945
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/email/EmailMappingKeyServiceImpl.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.module.org_alfresco_module_rm.email;
+
+import java.util.List;
+
+import org.alfresco.util.ParameterCheck;
+
+/**
+ * EMail Mapping Key Service
+ *
+ * @author Tuna Aksoy
+ * @since 2.1
+ */
+public class EmailMappingKeyServiceImpl implements EmailMappingKeyService
+{
+ List emailMappingKeys;
+
+ public void setEmailMappingKeys(List emailMappingKeys)
+ {
+ this.emailMappingKeys = emailMappingKeys;
+ }
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.email.CustomEmailMappingService#getEmailMappingKeys()
+ */
+ @Override
+ public List getEmailMappingKeys()
+ {
+ return emailMappingKeys;
+ }
+
+ /**
+ * @see org.alfresco.module.org_alfresco_module_rm.email.EmailMappingKeyService#makeCustomisable(java.lang.String)
+ */
+ @Override
+ public void makeCustomisable(String emailMappingKey)
+ {
+ ParameterCheck.mandatoryString("emailMappingKey", emailMappingKey);
+
+ emailMappingKeys.add(emailMappingKey);
+ }
+}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/EmailMapKeysGet.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/EmailMapKeysGet.java
new file mode 100644
index 0000000000..c1831c972f
--- /dev/null
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/EmailMapKeysGet.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2005-2012 Alfresco Software Limited.
+ *
+ * This file is part of Alfresco
+ *
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ */
+package org.alfresco.module.org_alfresco_module_rm.script;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.alfresco.module.org_alfresco_module_rm.email.EmailMappingKeyService;
+import org.springframework.extensions.webscripts.Cache;
+import org.springframework.extensions.webscripts.DeclarativeWebScript;
+import org.springframework.extensions.webscripts.Status;
+import org.springframework.extensions.webscripts.WebScriptRequest;
+
+/**
+ * Implementation for Java backed webscript to return email mapping keys
+ *
+ * @author Tuna Aksoy
+ * @since 2.1
+ */
+public class EmailMapKeysGet extends DeclarativeWebScript
+{
+ /** Email mapping key service */
+ private EmailMappingKeyService emailMappingKeyService;
+
+ /**
+ * Email mapping key service
+ *
+ * @param emailMappingKeyService the email mapping key service
+ */
+ public void setEmailMappingKeyService(EmailMappingKeyService emailMappingKeyService)
+ {
+ this.emailMappingKeyService = emailMappingKeyService;
+ }
+
+ @Override
+ public Map executeImpl(WebScriptRequest req, Status status, Cache cache)
+ {
+ // Create model object with the lists of email mapping keys
+ Map model = new HashMap(1);
+ model.put("emailmapkeys", emailMappingKeyService.getEmailMappingKeys());
+ return model;
+ }
+}