diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc index 723abc6f220..72f8b2fbbf9 100644 --- a/core/modules/file/file.field.inc +++ b/core/modules/file/file.field.inc @@ -523,15 +523,15 @@ function theme_file_formatter_table($variables) { $header = array(t('Attachment'), t('Size')); $rows = array(); foreach ($variables['items'] as $delta => $item) { - if ($item['display'] && $item['entity']) { + if ($item->isDisplayed() && $item->entity) { $rows[] = array( array( 'data' => array( '#theme' => 'file_link', - '#file' => $item['entity'], + '#file' => $item->entity, ), ), - format_size($item['entity']->getSize()), + format_size($item->entity->getSize()), ); } } diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/field_type/FileItem.php b/core/modules/file/lib/Drupal/file/Plugin/field/field_type/FileItem.php index 4871555c9b4..eea8b445ab1 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/field_type/FileItem.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/field_type/FileItem.php @@ -311,4 +311,17 @@ class FileItem extends EntityReferenceItem implements ConfigFieldItemInterface { return $validators; } + /** + * Determines whether an item should be displayed when rendering the field. + * + * @return bool + * TRUE if the item should be displayed, FALSE if not. + */ + public function isDisplayed() { + if ($this->getFieldSetting('display_field')) { + return (bool) $this->display; + } + return TRUE; + } + } diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/FileFormatterBase.php b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/FileFormatterBase.php index dfe4a7abd4b..306861ab80f 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/FileFormatterBase.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/FileFormatterBase.php @@ -22,7 +22,7 @@ abstract class FileFormatterBase extends FormatterBase { $fids = array(); foreach ($entities_items as $items) { foreach ($items as $item) { - if ($this->isDisplayed($item) && !empty($item->target_id)) { + if ($item->isDisplayed() && !empty($item->target_id)) { // Load the files from the files table. $fids[] = $item->target_id; } @@ -42,23 +42,4 @@ abstract class FileFormatterBase extends FormatterBase { } } } - - /** - * Determines whether a file should be displayed when outputting field content. - * - * @param $item - * A field item array. - * @param $field - * A field array. - * - * @return - * Boolean TRUE if the file will be displayed, FALSE if the file is hidden. - */ - protected function isDisplayed($item) { - $settings = $this->getFieldSettings(); - if (!empty($settings['display_field'])) { - return (bool) $item->display; - } - return TRUE; - } } diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/GenericFileFormatter.php b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/GenericFileFormatter.php index 30d7e12b3d1..3f61bc8cdff 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/GenericFileFormatter.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/GenericFileFormatter.php @@ -31,7 +31,7 @@ class GenericFileFormatter extends FileFormatterBase { $elements = array(); foreach ($items as $delta => $item) { - if ($item->display && $item->entity) { + if ($item->isDisplayed() && $item->entity) { $elements[$delta] = array( '#theme' => 'file_link', '#file' => $item->entity, diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/RSSEnclosureFormatter.php b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/RSSEnclosureFormatter.php index d23e98afcc4..2c5cafe0324 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/RSSEnclosureFormatter.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/RSSEnclosureFormatter.php @@ -32,7 +32,7 @@ class RSSEnclosureFormatter extends FileFormatterBase { // Add the first file as an enclosure to the RSS item. RSS allows only one // enclosure per item. See: http://en.wikipedia.org/wiki/RSS_enclosure foreach ($items as $item) { - if ($item->display && $item->entity) { + if ($item->isDisplayed() && $item->entity) { $file = $item->entity; $entity->rss_elements[] = array( 'key' => 'enclosure', diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/TableFormatter.php b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/TableFormatter.php index 8405411c329..65903295929 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/TableFormatter.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/TableFormatter.php @@ -34,7 +34,7 @@ class TableFormatter extends FileFormatterBase { // Display all values in a single element. $elements[0] = array( '#theme' => 'file_formatter_table', - '#items' => $items->getValue(TRUE), + '#items' => $items, ); } diff --git a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/UrlPlainFormatter.php b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/UrlPlainFormatter.php index 21c32f9add2..5d7a349cc47 100644 --- a/core/modules/file/lib/Drupal/file/Plugin/field/formatter/UrlPlainFormatter.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/formatter/UrlPlainFormatter.php @@ -31,7 +31,7 @@ class UrlPlainFormatter extends FileFormatterBase { $elements = array(); foreach ($items as $delta => $item) { - if ($item->display && $item->entity) { + if ($item->isDisplayed() && $item->entity) { $elements[$delta] = array('#markup' => empty($item->entity) ? '' : file_create_url($item->entity->getFileUri())); } } diff --git a/core/modules/image/lib/Drupal/image/Plugin/field/field_type/ImageItem.php b/core/modules/image/lib/Drupal/image/Plugin/field/field_type/ImageItem.php index d2fdfe35a76..ba0b0513993 100644 --- a/core/modules/image/lib/Drupal/image/Plugin/field/field_type/ImageItem.php +++ b/core/modules/image/lib/Drupal/image/Plugin/field/field_type/ImageItem.php @@ -318,4 +318,12 @@ class ImageItem extends FileItem { } } + /** + * {@inheritdoc} + */ + public function isDisplayed() { + // Image items do not have per-item visibility settings. + return TRUE; + } + }