Version 1
[yaffs-website] / web / modules / contrib / entity_embed / src / Plugin / entity_embed / EntityEmbedDisplay / FileFieldFormatter.php
diff --git a/web/modules/contrib/entity_embed/src/Plugin/entity_embed/EntityEmbedDisplay/FileFieldFormatter.php b/web/modules/contrib/entity_embed/src/Plugin/entity_embed/EntityEmbedDisplay/FileFieldFormatter.php
new file mode 100644 (file)
index 0000000..ee29ae3
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+namespace Drupal\entity_embed\Plugin\entity_embed\EntityEmbedDisplay;
+
+use Drupal\Core\Form\FormStateInterface;
+
+/**
+ * Entity Embed Display reusing file field formatters.
+ *
+ * @see \Drupal\entity_embed\EntityEmbedDisplay\EntityEmbedDisplayInterface
+ *
+ * @EntityEmbedDisplay(
+ *   id = "file",
+ *   label = @Translation("File"),
+ *   entity_types = {"file"},
+ *   deriver = "Drupal\entity_embed\Plugin\Derivative\FieldFormatterDeriver",
+ *   field_type = "file",
+ *   provider = "file"
+ * )
+ */
+class FileFieldFormatter extends EntityReferenceFieldFormatter {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getFieldValue() {
+    $value = parent::getFieldValue();
+    $value += array_intersect_key($this->getConfiguration(), array('description' => ''));
+    return $value;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defaultConfiguration() {
+    $defaults = parent::defaultConfiguration();
+    // Add support to store file description.
+    $defaults['description'] = '';
+    return $defaults;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
+    $form = parent::buildConfigurationForm($form, $form_state);
+
+    // Description is stored in the configuration since it doesn't map to an
+    // actual HTML attribute.
+    $form['description'] = array(
+      '#type' => 'textfield',
+      '#title' => $this->t('Description'),
+      '#default_value' => $this->getConfigurationValue('description'),
+      '#description' => $this->t('The description may be used as the label of the link to the file.'),
+    );
+
+    return $form;
+  }
+
+}