3 namespace Drupal\locale\Form;
5 use Drupal\Core\Form\FormStateInterface;
8 * Provides a filtered translation edit form.
10 class TranslateFilterForm extends TranslateFormBase {
15 public function getFormId() {
16 return 'locale_translate_filter_form';
22 public function buildForm(array $form, FormStateInterface $form_state) {
23 $filters = $this->translateFilters();
24 $filter_values = $this->translateFilterValues();
26 $form['#attached']['library'][] = 'locale/drupal.locale.admin';
30 '#title' => $this->t('Filter translatable strings'),
33 foreach ($filters as $key => $filter) {
34 // Special case for 'string' filter.
35 if ($key == 'string') {
36 $form['filters']['status']['string'] = [
38 '#title' => $filter['title'],
39 '#description' => $filter['description'],
40 '#default_value' => $filter_values[$key],
44 $empty_option = isset($filter['options'][$filter['default']]) ? $filter['options'][$filter['default']] : '- None -';
45 $form['filters']['status'][$key] = [
46 '#title' => $filter['title'],
48 '#empty_value' => $filter['default'],
49 '#empty_option' => $empty_option,
51 '#options' => $filter['options'],
52 '#default_value' => $filter_values[$key],
54 if (isset($filter['states'])) {
55 $form['filters']['status'][$key]['#states'] = $filter['states'];
60 $form['filters']['actions'] = [
62 '#attributes' => ['class' => ['container-inline']],
64 $form['filters']['actions']['submit'] = [
66 '#value' => $this->t('Filter'),
68 if (!empty($_SESSION['locale_translate_filter'])) {
69 $form['filters']['actions']['reset'] = [
71 '#value' => $this->t('Reset'),
72 '#submit' => ['::resetForm'],
82 public function submitForm(array &$form, FormStateInterface $form_state) {
83 $filters = $this->translateFilters();
84 foreach ($filters as $name => $filter) {
85 if ($form_state->hasValue($name)) {
86 $_SESSION['locale_translate_filter'][$name] = $form_state->getValue($name);
89 $form_state->setRedirect('locale.translate_page');
93 * Provides a submit handler for the reset button.
95 public function resetForm(array &$form, FormStateInterface $form_state) {
96 $_SESSION['locale_translate_filter'] = [];
97 $form_state->setRedirect('locale.translate_page');