Pull merge.
[yaffs-website] / vendor / chi-teck / drupal-code-generator / templates / d8 / _field / default-formatter.twig
1 <?php
2
3 namespace Drupal\{{ machine_name }}\Plugin\Field\FieldFormatter;
4
5 {% sort %}
6   {% if datetime %}
7 use Drupal\Core\Datetime\DrupalDateTime;
8   {% endif %}
9 use Drupal\Core\Field\FieldItemListInterface;
10 use Drupal\Core\Field\FormatterBase;
11   {% if formatter_settings %}
12 use Drupal\Core\Form\FormStateInterface;
13   {% endif %}
14   {% if link %}
15 use Drupal\Core\Url;
16   {% endif %}
17   {% if list %}
18 use Drupal\{{ machine_name }}\Plugin\Field\FieldType\{{ type_class }};
19   {% endif %}
20 {% endsort %}
21
22 /**
23  * Plugin implementation of the '{{ field_id }}_default' formatter.
24  *
25  * @FieldFormatter(
26  *   id = "{{ field_id }}_default",
27  *   label = @Translation("Default"),
28  *   field_types = {"{{ field_id }}"}
29  * )
30  */
31 class {{ formatter_class }} extends FormatterBase {
32
33 {% if formatter_settings %}
34   /**
35    * {@inheritdoc}
36    */
37   public static function defaultSettings() {
38     return ['foo' => 'bar'] + parent::defaultSettings();
39   }
40
41   /**
42    * {@inheritdoc}
43    */
44   public function settingsForm(array $form, FormStateInterface $form_state) {
45     $settings = $this->getSettings();
46     $element['foo'] = [
47       '#type' => 'textfield',
48       '#title' => $this->t('Foo'),
49       '#default_value' => $settings['foo'],
50     ];
51     return $element;
52   }
53
54   /**
55    * {@inheritdoc}
56    */
57   public function settingsSummary() {
58     $settings = $this->getSettings();
59     $summary[] = $this->t('Foo: @foo', ['@foo' => $settings['foo']]);
60     return $summary;
61   }
62
63 {% endif %}
64   /**
65    * {@inheritdoc}
66    */
67   public function viewElements(FieldItemListInterface $items, $langcode) {
68     $element = [];
69
70     foreach ($items as $delta => $item) {
71
72 {% for subfield in subfields %}
73   {% if subfield.type == 'boolean' %}
74       $element[$delta]['{{ subfield.machine_name }}'] = [
75         '#type' => 'item',
76         '#title' => $this->t('{{ subfield.name }}'),
77         '#markup' => $item->{{ subfield.machine_name }} ? $this->t('Yes') : $this->t('No'),
78       ];
79
80   {% else %}
81       if ($item->{{ subfield.machine_name }}) {
82     {% if subfield.list %}
83         $allowed_values = {{ type_class }}::{{ subfield.allowed_values_method }}();
84     {% endif %}
85     {% set item_value %}
86       {% if subfield.list %}$allowed_values[$item->{{ subfield.machine_name }}]{% else %}$item->{{ subfield.machine_name }}{% endif %}
87     {% endset %}
88     {% if subfield.type == 'datetime' %}
89         $date = DrupalDateTime::createFromFormat('{{ subfield.date_storage_format }}', $item->{{ subfield.machine_name }});
90         // @DCG: Consider injecting the date formatter service.
91         // @codingStandardsIgnoreStart
92         $date_formatter = \Drupal::service('date.formatter');
93         // @codingStandardsIgnoreStart
94         $timestamp = $date->getTimestamp();
95       {% if subfield.list %}
96         $formatted_date = {{ item_value }};
97       {% else %}
98         $formatted_date = $date_formatter->format($timestamp, 'long');
99       {% endif %}
100         $iso_date = $date_formatter->format($timestamp, 'custom', 'Y-m-d\TH:i:s') . 'Z';
101         $element[$delta]['{{ subfield.machine_name }}'] = [
102           '#type' => 'item',
103           '#title' => $this->t('{{ subfield.name }}'),
104           'content' => [
105             '#theme' => 'time',
106             '#text' => $formatted_date,
107             '#html' => FALSE,
108             '#attributes' => [
109               'datetime' => $iso_date,
110             ],
111             '#cache' => [
112               'contexts' => [
113                 'timezone',
114               ],
115             ],
116           ],
117         ];
118     {% else %}
119         $element[$delta]['{{ subfield.machine_name }}'] = [
120           '#type' => 'item',
121           '#title' => $this->t('{{ subfield.name }}'),
122       {% if subfield.link %}
123           'content' => [
124             '#type' => 'link',
125             '#title' => {{ item_value }},
126         {% if subfield.type == 'email' %}
127             '#url' => Url::fromUri('mailto:' . $item->{{ subfield.machine_name }}),
128         {% elseif subfield.type == 'telephone' %}
129             '#url' => Url::fromUri('tel:' . rawurlencode(preg_replace('/\s+/', '', $item->{{ subfield.machine_name }}))),
130         {% elseif subfield.type == 'uri' %}
131             '#url' => Url::fromUri($item->{{ subfield.machine_name }}),
132         {% endif %}
133           ],
134       {% else %}
135           '#markup' => {{ item_value }},
136       {% endif %}
137         ];
138     {% endif %}
139       }
140
141   {% endif %}
142 {% endfor %}
143     }
144
145     return $element;
146   }
147
148 }