diff --git a/code/model/UserDefinedForm.php b/code/model/UserDefinedForm.php index ab0ff54..ac812c7 100755 --- a/code/model/UserDefinedForm.php +++ b/code/model/UserDefinedForm.php @@ -977,8 +977,8 @@ JS $email->populateTemplate($emailData); $email->setFrom($recipient->EmailFrom); $email->setBody($recipient->EmailBody); - $email->setTo($recipient->EmailAddress); $email->setSubject($recipient->EmailSubject); + $email->setTo($recipient->EmailAddress); if($recipient->EmailReplyTo) { $email->setReplyTo($recipient->EmailReplyTo); @@ -1008,7 +1008,7 @@ JS $email->setSubject($submittedFormField->Value); } } - + $this->extend('updateEmail', $email, $recipient, $emailData); if($recipient->SendPlain) { @@ -1138,41 +1138,38 @@ class UserDefinedForm_EmailRecipient extends DataObject { if($this->Form()) { $dropdowns = array(); - $validEmailFields = DataObject::get("EditableEmailField", "\"ParentID\" = '" . (int)$this->FormID . "'"); - $multiOptionFields = DataObject::get("EditableMultipleOptionField", "\"ParentID\" = '" . (int)$this->FormID . "'"); - $validSubjectFields = EditableTextField::get()->filter('ParentID', (int)$this->FormID)->filterByCallback(function($item, $list) { return $item->getSetting('Rows') === 1; }); - + // if they have email fields then we could send from it + $validEmailFields = EditableEmailField::get()->filter('ParentID', (int)$this->FormID); + // for the subject, only one-line entry boxes make sense + $validSubjectFields = EditableTextField::get()->filter('ParentID', (int)$this->FormID) + ->filterByCallback(function($item, $list) { return (int)$item->getSetting('Rows') === 1; }); + // predefined choices are also candidates + $multiOptionFields = EditableMultipleOptionField::get()->filter('ParentID', (int)$this->FormID); + $fields->insertAfter($dropdowns[] = new DropdownField( - 'SendEmailFromFieldID', - _t('UserDefinedForm.ORSELECTAFIELDTOUSEASFROM', '.. or select a field to use as reply to address'), - $validEmailFields->map('ID', 'Title') + 'SendEmailFromFieldID', + _t('UserDefinedForm.ORSELECTAFIELDTOUSEASFROM', '.. or select a field to use as reply to address'), + $validEmailFields->map('ID', 'Title') ), 'EmailReplyTo'); - - if($multiOptionFields) { - $validEmailFields = new ArrayList($validEmailFields->toArray()); - $validEmailFields->merge($multiOptionFields); - $validSubjectFields->merge($multiOptionFields); - } - if($validEmailFields) { - $fields->insertAfter($dropdowns[] = new DropdownField( - 'SendEmailToFieldID', - _t('UserDefinedForm.ORSELECTAFIELDTOUSEASTO', '.. or select a field to use as the to address'), - $validEmailFields = $validEmailFields->map('ID', 'Title') - ), 'EmailAddress'); - } - if($validSubjectFields) { - $fields->insertAfter($dropdowns[] = new DropdownField( - 'SendEmailSubjectFieldID', - _t('UserDefinedForm.SELECTAFIELDTOSETSUBJECT', '... or select a field to use as the subject'), - $validSubjectFields->map('ID', 'Title') - ), 'SendEmailSubjectField'); - } - if($dropdowns) { - foreach($dropdowns as $dropdown) { - $dropdown->setHasEmptyDefault(true); - $dropdown->setEmptyString(" "); - } + $validEmailFields = new ArrayList($validEmailFields->toArray()); + $validEmailFields->merge($multiOptionFields); + $validSubjectFields->merge($multiOptionFields); + + $fields->insertAfter($dropdowns[] = new DropdownField( + 'SendEmailToFieldID', + _t('UserDefinedForm.ORSELECTAFIELDTOUSEASTO', '.. or select a field to use as the to address'), + $validEmailFields->map('ID', 'Title') + ), 'EmailAddress'); + $fields->insertAfter($dropdowns[] = new DropdownField( + 'SendEmailSubjectFieldID', + _t('UserDefinedForm.SELECTAFIELDTOSETSUBJECT', '.. or select a field to use as the subject'), + $validSubjectFields->map('ID', 'Title') + ), 'EmailSubject'); + + foreach($dropdowns as $dropdown) { + $dropdown->setHasEmptyDefault(true); + $dropdown->setEmptyString(" "); } }