You are here

public function MessagesForm::buildForm in Swift Mailer 8.2

Same name and namespace in other branches
  1. 8 src/Form/MessagesForm.php \Drupal\swiftmailer\Form\MessagesForm::buildForm()

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides ConfigFormBase::buildForm

File

src/Form/MessagesForm.php, line 34

Class

MessagesForm
Configuration form for SwiftMailer message settings.

Namespace

Drupal\swiftmailer\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $form = parent::buildForm($form, $form_state);
  $config = $this
    ->config('swiftmailer.message');
  $form['#tree'] = TRUE;
  $form['description'] = [
    '#markup' => '<p>' . $this
      ->t('This page allows you to configure how e-mail messages are formatted.
        The Default PHP mailer can only send plain text e-mails. This module can send HTML e-mails if you
        use the recommended settings below.') . '</p>',
  ];
  $form['content_type'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Content type'),
    '#description' => $this
      ->t('Select the content type. This module will convert content if necessary.
        The <em>Keep existing</em> option is less recommended because many applications do not set the
        existing content type reliably. Some applications (including Simplenews newsletter)
        allow case-by-case configuration of content type that overrides this value.'),
  ];
  $options = [
    SWIFTMAILER_FORMAT_HTML => $this
      ->t('HTML (recommended)'),
    SWIFTMAILER_FORMAT_PLAIN => $this
      ->t('Plain Text'),
    '' => $this
      ->t('Keep existing'),
  ];
  $form['content_type']['type'] = [
    '#type' => 'radios',
    '#options' => $options,
    '#default_value' => $config
      ->get('content_type'),
  ];
  $form['html_convert'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('HTML formatting'),
    '#description' => $this
      ->t('Text format to use when converting a plain text e-mail to HTML.'),
  ];

  // The filter will operate on plain text so only show formats that escape
  // HTML.
  foreach (filter_formats($this
    ->currentUser()) as $format) {
    if ($format
      ->filters('filter_html_escape')->status) {
      $formats[$format
        ->id()] = $format
        ->label();
    }
  }
  $form['html_convert']['format'] = [
    '#type' => 'select',
    '#title' => t('Text format'),
    '#options' => $formats,
    '#default_value' => $config
      ->get('text_format') ?: filter_fallback_format(),
    '#description' => $this
      ->t('The list of available formats is restricted to those that escape HTML.'),
  ];
  $form['generate_plain'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Plain Text Version'),
    '#description' => $this
      ->t('An alternative plain text version can be generated based on the HTML version if no plain text version
        has been explicitly set. The plain text version will be used by e-mail clients not capable of displaying HTML content.'),
  ];
  $form['generate_plain']['mode'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Generate alternative plain text version (recommended).'),
    '#default_value' => $config
      ->get('generate_plain'),
    '#description' => $this
      ->t('Please refer to @link for more details about how the alternative plain text version will be generated.', [
      '@link' => Link::fromTextAndUrl('html2text', Url::fromUri('http://www.chuggnutt.com/html2text'))
        ->toString(),
    ]),
  ];
  $form['character_set'] = [
    '#type' => 'fieldset',
    '#title' => $this
      ->t('Character Set'),
    '#description' => '<p>' . $this
      ->t('E-mails need to carry details about the character set which the
        receiving client should use to understand the content of the e-mail.
        The default character set is UTF-8.') . '</p>',
  ];
  $form['character_set']['type'] = [
    '#type' => 'select',
    '#options' => swiftmailer_get_character_set_options(),
    '#default_value' => $config
      ->get('character_set'),
  ];
  return $form;
}