Security update for Core, with self-updated composer
[yaffs-website] / web / core / lib / Drupal / Core / Field / Plugin / Field / FieldWidget / LanguageSelectWidget.php
1 <?php
2
3 namespace Drupal\Core\Field\Plugin\Field\FieldWidget;
4
5 use Drupal\Core\Field\FieldItemListInterface;
6 use Drupal\Core\Field\WidgetBase;
7 use Drupal\Core\Form\FormStateInterface;
8 use Drupal\Core\Language\LanguageInterface;
9
10 /**
11  * Plugin implementation of the 'Language' widget.
12  *
13  * @FieldWidget(
14  *   id = "language_select",
15  *   label = @Translation("Language select"),
16  *   field_types = {
17  *     "language"
18  *   }
19  * )
20  */
21 class LanguageSelectWidget extends WidgetBase {
22
23   /**
24    * {@inheritdoc}
25    */
26   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
27     $element['value'] = $element + [
28       '#type' => 'language_select',
29       '#default_value' => $items[$delta]->value,
30       '#languages' => $this->getSetting('include_locked') ? LanguageInterface::STATE_ALL : LanguageInterface::STATE_CONFIGURABLE,
31     ];
32
33     return $element;
34   }
35
36   /**
37    * {@inheritdoc}
38    */
39   public static function defaultSettings() {
40     $settings = parent::defaultSettings();
41     $settings['include_locked'] = TRUE;
42
43     return $settings;
44   }
45
46   /**
47    * {@inheritdoc}
48    */
49   public function settingsForm(array $form, FormStateInterface $form_state) {
50     $element = parent::settingsForm($form, $form_state);
51
52     $element['include_locked'] = [
53       '#type' => 'checkbox',
54       '#title' => $this->t('Include locked languages such as <em>Not specified</em> and <em>Not applicable</em>'),
55       '#default_value' => $this->getSetting('include_locked'),
56     ];
57
58     return $element;
59   }
60
61 }