You are here

public function SettingsForm::buildForm in Synonyms 2.0.x

Same name in this branch
  1. 2.0.x src/Form/SettingsForm.php \Drupal\synonyms\Form\SettingsForm::buildForm()
  2. 2.0.x modules/synonyms_list_field/src/Form/SettingsForm.php \Drupal\synonyms_list_field\Form\SettingsForm::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/SettingsForm.php, line 90

Class

SettingsForm
Defines a form that configures forms module settings.

Namespace

Drupal\synonyms\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {

  // The 'Wording type' select item.
  $form['wording_type'] = [
    '#type' => 'select',
    '#title' => $this
      ->t('Wording type'),
    '#options' => $this
      ->wordingTypeOptions(),
    '#default_value' => $this
      ->config('synonyms.settings')
      ->get('wording_type'),
    '#description' => $this
      ->t('<strong>No wording:</strong> All synonyms suggestions inside all synonyms friendly widgets will be presented to the user with synonym labels only.<br><strong>Default wording:</strong> Provides one default (and customisable) wording per widget. Good enough for sites with simple synonyms usage.<br><strong>Per entity type:</strong> Enables per entity type specific wording for each widget at "Manage behaviors" form.<br><strong>Per entity type and field:</strong> Enables per field (provider) specific wording at "Manage providers" form. One wording is used by all widgets here.') . '<br><br>',
  ];

  // Bring in the wording format from FormatWordingTrait.
  $replacements = [
    '#theme' => 'item_list',
    '#list_type' => 'ul',
    '#items' => [],
  ];
  foreach ($this
    ->formatWordingAvailableTokens() as $token => $token_info) {
    $replacements['#items'][] = Html::escape($token) . ': ' . $token_info;
  }
  $replacements = $this->renderer
    ->renderRoot($replacements);

  // Default wordings.
  if ($this->widgets) {
    foreach ($this->widgets as $service_id => $service) {
      $description = $this
        ->t('Specify the wording with which @widget widget suggestions should be presented. Available replacement tokens are: @replacements This will also serve as a fallback wording if more specific wordings are left empty.', [
        '@widget' => $service
          ->getWidgetTitle(),
        '@replacements' => $replacements,
      ]);
      $form[$service_id] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('@widget widget default wording', [
          '@widget' => $service
            ->getWidgetTitle(),
        ]),
        '#default_value' => $this
          ->config('synonyms_' . $service_id . '.settings')
          ->get('default_wording'),
        '#description' => $description . '<br><br>',
        '#states' => [
          'invisible' => [
            ':input[name="wording_type"]' => [
              'value' => 'none',
            ],
          ],
        ],
      ];
    }
  }
  return parent::buildForm($form, $form_state);
}