You are here

public function TranslateFilterForm::buildForm in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/locale/src/Form/TranslateFilterForm.php \Drupal\locale\Form\TranslateFilterForm::buildForm()
  2. 9 core/modules/locale/src/Form/TranslateFilterForm.php \Drupal\locale\Form\TranslateFilterForm::buildForm()

File

core/modules/locale/src/Form/TranslateFilterForm.php, line 24

Class

TranslateFilterForm
Provides a filtered translation edit form.

Namespace

Drupal\locale\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $filters = $this
    ->translateFilters();
  $filter_values = $this
    ->translateFilterValues();
  $form['#attached']['library'][] = 'locale/drupal.locale.admin';
  $form['filters'] = [
    '#type' => 'details',
    '#title' => $this
      ->t('Filter translatable strings'),
    '#open' => TRUE,
    '#attributes' => [
      'class' => [
        'clearfix',
      ],
    ],
  ];
  foreach ($filters as $key => $filter) {

    // Special case for 'string' filter.
    if ($key == 'string') {
      $form['filters']['status']['string'] = [
        '#type' => 'search',
        '#title' => $filter['title'],
        '#description' => $filter['description'],
        '#default_value' => $filter_values[$key],
      ];
    }
    else {
      $empty_option = $filter['options'][$filter['default']] ?? '- None -';
      $form['filters']['status'][$key] = [
        '#title' => $filter['title'],
        '#type' => 'select',
        '#empty_value' => $filter['default'],
        '#empty_option' => $empty_option,
        '#size' => 0,
        '#options' => $filter['options'],
        '#default_value' => $filter_values[$key],
      ];
      if (isset($filter['states'])) {
        $form['filters']['status'][$key]['#states'] = $filter['states'];
      }
    }
  }
  $form['filters']['actions'] = [
    '#type' => 'actions',
    '#attributes' => [
      'class' => [
        'container-inline',
      ],
    ],
  ];
  $form['filters']['actions']['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Filter'),
  ];
  if ($this
    ->getRequest()
    ->getSession()
    ->has('locale_translate_filter')) {
    $form['filters']['actions']['reset'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Reset'),
      '#submit' => [
        '::resetForm',
      ],
    ];
  }
  return $form;
}