Project

General

Profile

Support #461 » emailsubject_fixup.patch

make the pull-request work :-) - Christian Lohmaier, 2014-06-29 22:51

View differences:

code/model/UserDefinedForm.php
977 977
				$email->populateTemplate($emailData);
978 978
				$email->setFrom($recipient->EmailFrom);
979 979
				$email->setBody($recipient->EmailBody);
980
				$email->setTo($recipient->EmailAddress);
981 980
				$email->setSubject($recipient->EmailSubject);
981
				$email->setTo($recipient->EmailAddress);
982 982
				
983 983
				if($recipient->EmailReplyTo) {
984 984
					$email->setReplyTo($recipient->EmailReplyTo);
......
1008 1008
						$email->setSubject($submittedFormField->Value);
1009 1009
					}
1010 1010
				}
1011
				
1011

  
1012 1012
				$this->extend('updateEmail', $email, $recipient, $emailData);
1013 1013

  
1014 1014
				if($recipient->SendPlain) {
......
1138 1138
		
1139 1139
		if($this->Form()) {
1140 1140
			$dropdowns = array();
1141
			$validEmailFields = DataObject::get("EditableEmailField", "\"ParentID\" = '" . (int)$this->FormID . "'");
1142
			$multiOptionFields = DataObject::get("EditableMultipleOptionField", "\"ParentID\" = '" . (int)$this->FormID . "'");
1143
			$validSubjectFields = EditableTextField::get()->filter('ParentID', (int)$this->FormID)->filterByCallback(function($item, $list) { return $item->getSetting('Rows') === 1; });
1144
			
1141
			// if they have email fields then we could send from it
1142
			$validEmailFields = EditableEmailField::get()->filter('ParentID', (int)$this->FormID);
1143
			// for the subject, only one-line entry boxes make sense
1144
			$validSubjectFields = EditableTextField::get()->filter('ParentID', (int)$this->FormID)
1145
			                    ->filterByCallback(function($item, $list) { return (int)$item->getSetting('Rows') === 1; });
1146
			// predefined choices are also candidates
1147
			$multiOptionFields = EditableMultipleOptionField::get()->filter('ParentID', (int)$this->FormID);
1148

  
1145 1149
			$fields->insertAfter($dropdowns[] = new DropdownField(
1146
                		'SendEmailFromFieldID',
1147
                		_t('UserDefinedForm.ORSELECTAFIELDTOUSEASFROM', '.. or select a field to use as reply to address'),
1148
                		$validEmailFields->map('ID', 'Title')
1150
						'SendEmailFromFieldID',
1151
						_t('UserDefinedForm.ORSELECTAFIELDTOUSEASFROM', '.. or select a field to use as reply to address'),
1152
						$validEmailFields->map('ID', 'Title')
1149 1153
			), 'EmailReplyTo');
1150
	
1151
			if($multiOptionFields) {
1152
                		$validEmailFields = new ArrayList($validEmailFields->toArray());
1153
                		$validEmailFields->merge($multiOptionFields);
1154
                		$validSubjectFields->merge($multiOptionFields);
1155
			}
1156
			if($validEmailFields) {
1157
				$fields->insertAfter($dropdowns[] = new DropdownField(
1158
					'SendEmailToFieldID',
1159
					_t('UserDefinedForm.ORSELECTAFIELDTOUSEASTO', '.. or select a field to use as the to address'),
1160
					$validEmailFields = $validEmailFields->map('ID', 'Title')
1161
				), 'EmailAddress');
1162
			}
1163
			if($validSubjectFields) {
1164
	        		$fields->insertAfter($dropdowns[] = new DropdownField(
1165
                    			'SendEmailSubjectFieldID', 
1166
                    			_t('UserDefinedForm.SELECTAFIELDTOSETSUBJECT', '... or select a field to use as the subject'),
1167
                     			$validSubjectFields->map('ID', 'Title')
1168
				), 'SendEmailSubjectField');
1169
			}
1170 1154

  
1171
			if($dropdowns) {
1172
				foreach($dropdowns as $dropdown) {
1173
					$dropdown->setHasEmptyDefault(true);
1174
					$dropdown->setEmptyString(" ");
1175
				}
1155
			$validEmailFields = new ArrayList($validEmailFields->toArray());
1156
			$validEmailFields->merge($multiOptionFields);
1157
			$validSubjectFields->merge($multiOptionFields);
1158

  
1159
			$fields->insertAfter($dropdowns[] = new DropdownField(
1160
						'SendEmailToFieldID',
1161
						_t('UserDefinedForm.ORSELECTAFIELDTOUSEASTO', '.. or select a field to use as the to address'),
1162
						$validEmailFields->map('ID', 'Title')
1163
			), 'EmailAddress');
1164
			$fields->insertAfter($dropdowns[] = new DropdownField(
1165
						'SendEmailSubjectFieldID',
1166
						_t('UserDefinedForm.SELECTAFIELDTOSETSUBJECT', '.. or select a field to use as the subject'),
1167
						$validSubjectFields->map('ID', 'Title')
1168
			), 'EmailSubject');
1169

  
1170
			foreach($dropdowns as $dropdown) {
1171
				$dropdown->setHasEmptyDefault(true);
1172
				$dropdown->setEmptyString(" ");
1176 1173
			}
1177 1174
		}
1178 1175

  
(1-1/2)