function testEmailRecipientPopup()
 {
     $this->logInWithPermission('ADMIN');
     $form = $this->objFromFixture('UserDefinedForm', 'basic-form-page');
     $popup = new UserDefinedForm_EmailRecipient();
     $fields = $popup->getCMSFields();
     $this->assertTrue($fields->dataFieldByName('EmailSubject') !== null);
     $this->assertTrue($fields->dataFieldByName('EmailFrom') !== null);
     $this->assertTrue($fields->dataFieldByName('EmailAddress') !== null);
     $this->assertTrue($fields->dataFieldByName('HideFormData') !== null);
     $this->assertTrue($fields->dataFieldByName('SendPlain') !== null);
     $this->assertTrue($fields->dataFieldByName('EmailBody') !== null);
     // add an email field, it should now add a or from X address picker
     $email = $this->objFromFixture('EditableEmailField', 'email-field');
     $form->Fields()->add($email);
     $popup->FormID = $form->ID;
     $popup->write();
     $fields = $popup->getCMSFields();
     $this->assertThat($fields->fieldByName('SendEmailToFieldID'), $this->isInstanceOf('DropdownField'));
     // if the front end has checkboxs or dropdown they can select from that can also be used to send things
     $dropdown = $this->objFromFixture('EditableDropdown', 'department-dropdown');
     $form->Fields()->add($dropdown);
     $fields = $popup->getCMSFields();
     $this->assertTrue($fields->dataFieldByName('SendEmailToFieldID') !== null);
     $popup->delete();
 }
 /**
  * @return FieldList
  */
 public function getCMSFields()
 {
     $self = $this;
     $this->beforeUpdateCMSFields(function ($fields) use($self) {
         // Updates form fields with a placeholder that shows the user
         // what the default value will be.
         $field = $fields->dataFieldByName('EmailFrom');
         if ($field && !$self->getField('EmailFrom')) {
             $email = $self->DefaultEmailFrom();
             if ($email) {
                 $field->setAttribute('placeholder', $email);
             }
         }
         $field = $fields->dataFieldByName('EmailAddress');
         if ($field && !$self->getField('EmailAddress')) {
             $email = $self->DefaultEmailTo();
             if ($email) {
                 $field->setAttribute('placeholder', $email);
             }
         }
         // Update body fields to tell the user what template variables
         // exist.
         $instructions = '';
         foreach ($self->EmailBodyVariables() as $varname => $value) {
             $instructions .= $varname . ' = ' . Convert::raw2xml($value) . '<br/>';
         }
         $field = $fields->dataFieldByName('EmailBody');
         if ($field) {
             $field->setRightTitle($instructions);
         }
         $field = $fields->dataFieldByName('EmailBodyHtml');
         if ($field) {
             $field->setRightTitle($instructions);
         }
     });
     return parent::getCMSFields();
 }