From 46f8c7433e4700afe1886ae3c3c0242d28f685ed Mon Sep 17 00:00:00 2001
From: Dries <dries@buytaert.net>
Date: Mon, 19 Dec 2011 09:40:52 -0500
Subject: [PATCH] - Patch #1146088 by lyricnz: label always visible for table
 formatter.

---
 core/modules/field/tests/field_test.field.inc | 10 ++++++----
 core/modules/file/file.field.inc              | 12 +++++++-----
 core/modules/file/tests/file.test             | 13 +++++++++++++
 3 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/core/modules/field/tests/field_test.field.inc b/core/modules/field/tests/field_test.field.inc
index b8a2939d64ad..6d03855c6c5e 100644
--- a/core/modules/field/tests/field_test.field.inc
+++ b/core/modules/field/tests/field_test.field.inc
@@ -350,11 +350,13 @@ function field_test_field_formatter_view($entity_type, $entity, $field, $instanc
       break;
 
     case 'field_test_multiple':
-      $array = array();
-      foreach ($items as $delta => $item) {
-        $array[] = $delta . ':' . $item['value'];
+      if (!empty($items)) {
+        $array = array();
+        foreach ($items as $delta => $item) {
+          $array[] = $delta . ':' . $item['value'];
+        }
+        $element[0] = array('#markup' => $settings['test_formatter_setting_multiple'] . '|' . implode('|', $array));
       }
-      $element[0] = array('#markup' => $settings['test_formatter_setting_multiple'] . '|' . implode('|', $array));
       break;
   }
 
diff --git a/core/modules/file/file.field.inc b/core/modules/file/file.field.inc
index f0d978afa990..a46ed1a8a70c 100644
--- a/core/modules/file/file.field.inc
+++ b/core/modules/file/file.field.inc
@@ -993,11 +993,13 @@ function file_field_formatter_view($entity_type, $entity, $field, $instance, $la
       break;
 
     case 'file_table':
-      // Display all values in a single element..
-      $element[0] = array(
-        '#theme' => 'file_formatter_table',
-        '#items' => $items,
-      );
+      if (!empty($items)) {
+        // Display all values in a single element..
+        $element[0] = array(
+          '#theme' => 'file_formatter_table',
+          '#items' => $items,
+        );
+      }
       break;
   }
 
diff --git a/core/modules/file/tests/file.test b/core/modules/file/tests/file.test
index bad8f995357a..7ff738afc3c5 100644
--- a/core/modules/file/tests/file.test
+++ b/core/modules/file/tests/file.test
@@ -760,6 +760,19 @@ class FileFieldDisplayTestCase extends FileFieldTestCase {
     $field = field_info_field($field_name);
     $instance = field_info_instance('node', $field_name, $type_name);
 
+    // Create a new node *without* the file field set, and check that the field
+    // is not shown for each node display.
+    $node = $this->drupalCreateNode(array('type' => $type_name));
+    $file_formatters = array('file_default', 'file_table', 'file_url_plain', 'hidden');
+    foreach ($file_formatters as $formatter) {
+      $edit = array(
+        "fields[$field_name][type]" => $formatter,
+      );
+      $this->drupalPost("admin/structure/types/manage/$type_name/display", $edit, t('Save'));
+      $this->drupalGet('node/' . $node->nid);
+      $this->assertNoText($field_name, t('Field label is hidden when no file attached for formatter %formatter', array('%formatter' => $formatter)));
+    }
+
     $test_file = $this->getTestFile('text');
 
     // Create a new node with the uploaded file.
-- 
GitLab