Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / locale / src / Form / TranslateFilterForm.php
1 <?php
2
3 namespace Drupal\locale\Form;
4
5 use Drupal\Core\Form\FormStateInterface;
6
7 /**
8  * Provides a filtered translation edit form.
9  *
10  * @internal
11  */
12 class TranslateFilterForm extends TranslateFormBase {
13
14   /**
15    * {@inheritdoc}
16    */
17   public function getFormId() {
18     return 'locale_translate_filter_form';
19   }
20
21   /**
22    * {@inheritdoc}
23    */
24   public function buildForm(array $form, FormStateInterface $form_state) {
25     $filters = $this->translateFilters();
26     $filter_values = $this->translateFilterValues();
27
28     $form['#attached']['library'][] = 'locale/drupal.locale.admin';
29
30     $form['filters'] = [
31       '#type' => 'details',
32       '#title' => $this->t('Filter translatable strings'),
33       '#open' => TRUE,
34     ];
35     foreach ($filters as $key => $filter) {
36       // Special case for 'string' filter.
37       if ($key == 'string') {
38         $form['filters']['status']['string'] = [
39           '#type' => 'search',
40           '#title' => $filter['title'],
41           '#description' => $filter['description'],
42           '#default_value' => $filter_values[$key],
43         ];
44       }
45       else {
46         $empty_option = isset($filter['options'][$filter['default']]) ? $filter['options'][$filter['default']] : '- None -';
47         $form['filters']['status'][$key] = [
48           '#title' => $filter['title'],
49           '#type' => 'select',
50           '#empty_value' => $filter['default'],
51           '#empty_option' => $empty_option,
52           '#size' => 0,
53           '#options' => $filter['options'],
54           '#default_value' => $filter_values[$key],
55         ];
56         if (isset($filter['states'])) {
57           $form['filters']['status'][$key]['#states'] = $filter['states'];
58         }
59       }
60     }
61
62     $form['filters']['actions'] = [
63       '#type' => 'actions',
64       '#attributes' => ['class' => ['container-inline']],
65     ];
66     $form['filters']['actions']['submit'] = [
67       '#type' => 'submit',
68       '#value' => $this->t('Filter'),
69     ];
70     if (!empty($_SESSION['locale_translate_filter'])) {
71       $form['filters']['actions']['reset'] = [
72         '#type' => 'submit',
73         '#value' => $this->t('Reset'),
74         '#submit' => ['::resetForm'],
75       ];
76     }
77
78     return $form;
79   }
80
81   /**
82    * {@inheritdoc}
83    */
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);
89       }
90     }
91     $form_state->setRedirect('locale.translate_page');
92   }
93
94   /**
95    * Provides a submit handler for the reset button.
96    */
97   public function resetForm(array &$form, FormStateInterface $form_state) {
98     $_SESSION['locale_translate_filter'] = [];
99     $form_state->setRedirect('locale.translate_page');
100   }
101
102 }