You are here

public function MessageTemplateForm::form in Message 8

Gets the actual form array to be built.

Overrides EntityForm::form

See also

\Drupal\Core\Entity\EntityForm::processForm()

\Drupal\Core\Entity\EntityForm::afterBuild()

File

src/Form/MessageTemplateForm.php, line 55

Class

MessageTemplateForm
Form controller for node type forms.

Namespace

Drupal\message\Form

Code

public function form(array $form, FormStateInterface $form_state) {
  $form = parent::form($form, $form_state);

  /** @var \Drupal\message\Entity\MessageTemplate $template */
  $template = $this->entity;
  $form['label'] = [
    '#title' => $this
      ->t('Label'),
    '#type' => 'textfield',
    '#default_value' => $template
      ->label(),
    '#description' => $this
      ->t('The human-readable name of this message template. This text will be displayed as part of the list on the <em>Add message</em> page. It is recommended that this name begin with a capital letter and contain only letters, numbers, and spaces. This name must be unique.'),
    '#required' => TRUE,
    '#size' => 30,
  ];
  $form['template'] = [
    '#type' => 'machine_name',
    '#default_value' => $template
      ->id(),
    '#maxlength' => EntityTypeInterface::BUNDLE_MAX_LENGTH,
    '#disabled' => $template
      ->isLocked(),
    '#machine_name' => [
      'exists' => '\\Drupal\\message\\Entity\\MessageTemplate::load',
      'source' => [
        'label',
      ],
    ],
    '#description' => $this
      ->t('A unique machine-readable name for this message template. It must only contain lowercase letters, numbers, and underscores. This name will be used for constructing the URL of the %message-add page, in which underscores will be converted into hyphens.', [
      '%message-add' => $this
        ->t('Add message'),
    ]),
  ];
  $form['description'] = [
    '#title' => $this
      ->t('Description'),
    '#type' => 'textfield',
    '#default_value' => $this->entity
      ->getDescription(),
    '#description' => $this
      ->t('The human-readable description of this message template.'),
  ];
  $multiple = new MessageTemplateMultipleTextField($this->entity, [
    get_class($this),
    'addMoreAjax',
  ]);
  $multiple
    ->textField($form, $form_state);
  $settings = $this->entity
    ->getSettings();
  $form['settings'] = [
    // Placeholder for other module to add their settings, that should be
    // added to the settings column.
    '#tree' => TRUE,
  ];
  $form['settings']['token options']['clear'] = [
    '#title' => $this
      ->t('Clear empty tokens'),
    '#type' => 'checkbox',
    '#description' => $this
      ->t('When this option is selected, empty tokens will be removed from display.'),
    '#default_value' => isset($settings['token options']['clear']) ? $settings['token options']['clear'] : FALSE,
  ];
  $form['settings']['token options']['token replace'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Token replace'),
    '#description' => $this
      ->t('When this option is selected, token processing will happen.'),
    '#default_value' => !isset($settings['token options']['token replace']) || !empty($settings['token options']['token replace']),
  ];
  $form['settings']['purge_override'] = [
    '#title' => $this
      ->t('Override global purge settings'),
    '#type' => 'checkbox',
    '#description' => $this
      ->t('Override <a href=":settings">global purge settings</a> for messages using this template.', [
      ':settings' => Url::fromRoute('message.settings')
        ->toString(),
    ]),
    '#default_value' => $this->entity
      ->getSetting('purge_override'),
  ];

  // Add the purge method settings form.
  $settings = $this->entity
    ->getSetting('purge_methods', []);
  $this->purgeManager
    ->purgeSettingsForm($form, $form_state, $settings);
  return $form;
}