3 namespace Drupal\locale\Form;
5 use Drupal\Core\Form\FormStateInterface;
8 * Provides a filtered translation edit form.
12 class TranslateFilterForm extends TranslateFormBase {
17 public function getFormId() {
18 return 'locale_translate_filter_form';
24 public function buildForm(array $form, FormStateInterface $form_state) {
25 $filters = $this->translateFilters();
26 $filter_values = $this->translateFilterValues();
28 $form['#attached']['library'][] = 'locale/drupal.locale.admin';
32 '#title' => $this->t('Filter translatable strings'),
35 foreach ($filters as $key => $filter) {
36 // Special case for 'string' filter.
37 if ($key == 'string') {
38 $form['filters']['status']['string'] = [
40 '#title' => $filter['title'],
41 '#description' => $filter['description'],
42 '#default_value' => $filter_values[$key],
46 $empty_option = isset($filter['options'][$filter['default']]) ? $filter['options'][$filter['default']] : '- None -';
47 $form['filters']['status'][$key] = [
48 '#title' => $filter['title'],
50 '#empty_value' => $filter['default'],
51 '#empty_option' => $empty_option,
53 '#options' => $filter['options'],
54 '#default_value' => $filter_values[$key],
56 if (isset($filter['states'])) {
57 $form['filters']['status'][$key]['#states'] = $filter['states'];
62 $form['filters']['actions'] = [
64 '#attributes' => ['class' => ['container-inline']],
66 $form['filters']['actions']['submit'] = [
68 '#value' => $this->t('Filter'),
70 if (!empty($_SESSION['locale_translate_filter'])) {
71 $form['filters']['actions']['reset'] = [
73 '#value' => $this->t('Reset'),
74 '#submit' => ['::resetForm'],
84 public function submitForm(array &$form, FormStateInterface $form_state) {
85 $filters = $this->translateFilters();
86 foreach ($filters as $name => $filter) {
87 if ($form_state->hasValue($name)) {
88 $_SESSION['locale_translate_filter'][$name] = $form_state->getValue($name);
91 $form_state->setRedirect('locale.translate_page');
95 * Provides a submit handler for the reset button.
97 public function resetForm(array &$form, FormStateInterface $form_state) {
98 $_SESSION['locale_translate_filter'] = [];
99 $form_state->setRedirect('locale.translate_page');