X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ffile%2Fsrc%2FPlugin%2FField%2FFieldFormatter%2FFilemimeFormatter.php;fp=web%2Fcore%2Fmodules%2Ffile%2Fsrc%2FPlugin%2FField%2FFieldFormatter%2FFilemimeFormatter.php;h=631d94140edc41ee741d9ae1c86a71c9e3ded7ed;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/file/src/Plugin/Field/FieldFormatter/FilemimeFormatter.php b/web/core/modules/file/src/Plugin/Field/FieldFormatter/FilemimeFormatter.php new file mode 100644 index 000000000..631d94140 --- /dev/null +++ b/web/core/modules/file/src/Plugin/Field/FieldFormatter/FilemimeFormatter.php @@ -0,0 +1,71 @@ +getName() === 'filemime'; + } + + /** + * {@inheritdoc} + */ + public static function defaultSettings() { + $settings = parent::defaultSettings(); + + $settings['filemime_image'] = FALSE; + + return $settings; + } + + /** + * {@inheritdoc} + */ + public function settingsForm(array $form, FormStateInterface $form_state) { + $form = parent::settingsForm($form, $form_state); + + $form['filemime_image'] = [ + '#title' => $this->t('Display an icon'), + '#description' => $this->t('The icon is representing the file type, instead of the MIME text (such as "image/jpeg")'), + '#type' => 'checkbox', + '#default_value' => $this->getSetting('filemime_image'), + ]; + + return $form; + } + + /** + * {@inheritdoc} + */ + protected function viewValue(FieldItemInterface $item) { + $value = $item->value; + if ($this->getSetting('filemime_image') && $value) { + $file_icon = [ + '#theme' => 'image__file_icon', + '#file' => $item->getEntity(), + ]; + return $file_icon; + } + return $value; + } + +}