Support #461 » emailsubject_fixup.patch
code/model/UserDefinedForm.php | ||
---|---|---|
$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);
|
||
... | ... | |
$email->setSubject($submittedFormField->Value);
|
||
}
|
||
}
|
||
|
||
$this->extend('updateEmail', $email, $recipient, $emailData);
|
||
if($recipient->SendPlain) {
|
||
... | ... | |
|
||
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(" ");
|
||
}
|
||
}
|
||