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>, + + ] + } +} + \ 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; + } +}