This is an automated email from the ASF dual-hosted git repository.
mbrohl pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git The following commit(s) were added to refs/heads/trunk by this push: new a33ac5c Improved: Convert EmailServices.xml mini lang to groovy (OFBIZ-11868) a33ac5c is described below commit a33ac5cff38aac816b5917f49897e36ae45c7396 Author: Sebastian Berg <[hidden email]> AuthorDate: Mon Jan 25 12:32:46 2021 +0100 Improved: Convert EmailServices.xml mini lang to groovy (OFBIZ-11868) --- .../groovyScripts/email/EmailServices.groovy | 92 ++++++++++++++++++++++ framework/common/minilang/email/EmailServices.xml | 76 ------------------ framework/common/servicedef/services_email.xml | 4 +- 3 files changed, 94 insertions(+), 78 deletions(-) diff --git a/framework/common/groovyScripts/email/EmailServices.groovy b/framework/common/groovyScripts/email/EmailServices.groovy new file mode 100644 index 0000000..b6a1427 --- /dev/null +++ b/framework/common/groovyScripts/email/EmailServices.groovy @@ -0,0 +1,92 @@ +import org.apache.ofbiz.base.util.UtilProperties +import org.apache.ofbiz.entity.GenericValue +import org.apache.ofbiz.service.ModelService +import org.apache.ofbiz.service.ServiceUtil + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + /** + * Send Mail from Email Template Setting + * @return + */ +def sendMailFromTemplateSetting() { + Map result = success() + // if partyIdTo provided but no emailAddress, get it from the partyContactMech + if (!parameters.sendTo && !parameters.partyIdTo) { + logError("PartyId or SendTo should be specified!") + return error(UtilProperties.getMessage("CommonUiLabels", "CommonEmailShouldBeSpecified", parameters.locale)) + } + if (parameters.partyIdTo && !parameters.sendTo) { + Map getEmail = [partyId: parameters.partyIdTo] + Map serviceResult = run service: "getPartyEmail", with: getEmail + if (!ServiceUtil.isSuccess(serviceResult)) { + return serviceResult + } + parameters.sendTo = serviceResult.emailAddress + if (!parameters.sendTo) { + logInfo("PartyId: ${parameters.partyIdTo} has no valid email address, not sending email") + return result; + } + } + GenericValue emailTemplateSetting = from("EmailTemplateSetting").where(parameters).queryOne() + if (emailTemplateSetting) { + Map emailParams = [:] + emailParams.bodyScreenUri = emailTemplateSetting.bodyScreenLocation + emailParams.xslfoAttachScreenLocation = emailTemplateSetting.xslfoAttachScreenLocation + emailParams.partyId = parameters.partyIdTo + if (emailTemplateSetting.fromAddress) { + emailParams.sendFrom = emailTemplateSetting.fromAddress + } else { + emailParams.sendFrom = UtilProperties.getPropertyValue("general", "defaultFromEmailAddress", "[hidden email]") + } + emailParams.sendCc = emailTemplateSetting.ccAddress + emailParams.sendBcc = emailTemplateSetting.bccAddress + emailParams.subject = emailTemplateSetting.subject + emailParams.contentType = emailTemplateSetting.contentType ?: "text/html" + if (parameters.custRequestId) { + Map bodyParameters = [custRequestId: parameters.custRequestId] + emailParams.bodyParameters = bodyParameters + } + // copy the incoming parameter fields AFTER setting the ones from EmailTemplateSetting so they can override things like subject, sendFrom, etc + emailParams << parameters + Map sendMailResult = run service: "sendMailFromScreen", with: emailParams + if (!ServiceUtil.isSuccess(sendMailResult)) { + return sendMailResult + } + result.messageWrapper = sendMailResult.messageWrapper + result.body = sendMailResult.body + result.communicationEventId = sendMailResult.communicationEventId + } else { + logError("sendMailFromTemplateSetting service could not find the emailTemplateSettingId: ${parameters.emailTemplateSettingId}") + } + return result +} + + + + + + + + + + + + diff --git a/framework/common/minilang/email/EmailServices.xml b/framework/common/minilang/email/EmailServices.xml deleted file mode 100644 index ecf6097..0000000 --- a/framework/common/minilang/email/EmailServices.xml +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> - -<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd"> - <simple-method method-name="sendMailFromTemplateSetting" short-description="Send Mail from Email Template Setting"> - <!-- if partyIdTo provided but no emailAddress, get it from the partyContactMech --> - <if-empty field="parameters.sendTo"> - <if-empty field="parameters.partyIdTo"> - <log level="error" message="PartyId or SendTo should be specified!"></log> - <add-error> - <fail-property resource="CommonUiLabels" property="CommonEmailShouldBeSpecified"/> - </add-error> - <check-errors/> - </if-empty> - </if-empty> - <if-not-empty field="parameters.partyIdTo"> - <if-empty field="parameters.sendTo"> - <set field="getEmail.partyId" from-field="parameters.partyIdTo"/> - <call-service service-name="getPartyEmail" in-map-name="getEmail"> - <result-to-field result-name="emailAddress" field="parameters.sendTo"/> - </call-service> - <if-empty field="parameters.sendTo"> - <log level="info" message="PartyId: ${parameters.partyIdTo} has no valid email address, not sending email"></log> - <return/> - </if-empty> - </if-empty> - </if-not-empty> - <entity-one entity-name="EmailTemplateSetting" value-field="emailTemplateSetting"/> - <if-not-empty field="emailTemplateSetting"> - <set field="emailParams.bodyScreenUri" from-field="emailTemplateSetting.bodyScreenLocation"/> - <set field="emailParams.xslfoAttachScreenLocation" from-field="emailTemplateSetting.xslfoAttachScreenLocation"/> - <set field="emailParams.partyId" from-field="parameters.partyIdTo"/> - <if-not-empty field="emailTemplateSetting.fromAddress"> - <set field="emailParams.sendFrom" from-field="emailTemplateSetting.fromAddress"/> - <else> - <property-to-field resource="general" property="defaultFromEmailAddress" field="emailParams.sendFrom" default="[hidden email]"/> - </else> - </if-not-empty> - <set field="emailParams.sendCc" from-field="emailTemplateSetting.ccAddress"/> - <set field="emailParams.sendBcc" from-field="emailTemplateSetting.bccAddress"/> - <set field="emailParams.subject" from-field="emailTemplateSetting.subject"/> - <set field="emailParams.contentType" from-field="emailTemplateSetting.contentType" default-value="text/html"/> - <if-not-empty field="parameters.custRequestId"> - <set field="emailParams.bodyParameters.custRequestId" from-field="parameters.custRequestId"/> - </if-not-empty> - <!-- copy the incoming parameter fields AFTER setting the ones from EmailTemplateSetting so they can override things like subject, sendFrom, etc --> - <set-service-fields service-name="sendMailFromScreen" map="parameters" to-map="emailParams"/> - <call-service service-name="sendMailFromScreen" in-map-name="emailParams"> - <result-to-result result-name="messageWrapper"/> - <result-to-result result-name="body"/> - <result-to-result result-name="communicationEventId"/> - </call-service> - <else> - <log level="error" message="sendMailFromTemplateSetting service could not find the emailTemplateSettingId: ${parameters.emailTemplateSettingId}"></log> - </else> - </if-not-empty> - </simple-method> -</simple-methods> diff --git a/framework/common/servicedef/services_email.xml b/framework/common/servicedef/services_email.xml index eb18453..26370cc 100644 --- a/framework/common/servicedef/services_email.xml +++ b/framework/common/servicedef/services_email.xml @@ -129,8 +129,8 @@ under the License. <description>Send E-Mail hidden in log (password, etc.) From Screen Widget Service</description> <implements service="sendMailFromScreenInterface"/> </service> - <service name="sendMailFromTemplateSetting" engine="simple" - location="component://common/minilang/email/EmailServices.xml" invoke="sendMailFromTemplateSetting"> + <service name="sendMailFromTemplateSetting" engine="groovy" + location="component://common/groovyScripts/email/EmailServices.groovy" invoke="sendMailFromTemplateSetting"> <description>Send Email From Email Template Setting Service</description> <implements service="sendMailInterface"/> <attribute name="emailTemplateSettingId" type="String" mode="IN" optional="false"/> |
Free forum by Nabble | Edit this page |