Version 1
[yaffs-website] / web / core / modules / file / src / Plugin / Field / FieldFormatter / GenericFileFormatter.php
diff --git a/web/core/modules/file/src/Plugin/Field/FieldFormatter/GenericFileFormatter.php b/web/core/modules/file/src/Plugin/Field/FieldFormatter/GenericFileFormatter.php
new file mode 100644 (file)
index 0000000..daeb9f4
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+namespace Drupal\file\Plugin\Field\FieldFormatter;
+
+use Drupal\Core\Field\FieldItemListInterface;
+
+/**
+ * Plugin implementation of the 'file_default' formatter.
+ *
+ * @FieldFormatter(
+ *   id = "file_default",
+ *   label = @Translation("Generic file"),
+ *   field_types = {
+ *     "file"
+ *   }
+ * )
+ */
+class GenericFileFormatter extends FileFormatterBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function viewElements(FieldItemListInterface $items, $langcode) {
+    $elements = [];
+
+    foreach ($this->getEntitiesToView($items, $langcode) as $delta => $file) {
+      $item = $file->_referringItem;
+      $elements[$delta] = [
+        '#theme' => 'file_link',
+        '#file' => $file,
+        '#description' => $item->description,
+        '#cache' => [
+          'tags' => $file->getCacheTags(),
+        ],
+      ];
+      // Pass field item attributes to the theme function.
+      if (isset($item->_attributes)) {
+        $elements[$delta] += ['#attributes' => []];
+        $elements[$delta]['#attributes'] += $item->_attributes;
+        // Unset field item attributes since they have been included in the
+        // formatter output and should not be rendered in the field template.
+        unset($item->_attributes);
+      }
+    }
+
+    return $elements;
+  }
+
+}