From 60a0cba9ca302530d31a197e3dc2489cc1efd5db Mon Sep 17 00:00:00 2001
From: Helior Colorado <me@helior.info>
Date: Wed, 9 May 2012 21:21:47 -0700
Subject: [PATCH] Added classes to distinguish empty product fields when they
 are rendered on product displays.

---
 modules/cart/commerce_cart.module                  |   15 ++++++++++++++-
 .../commerce_product_reference.module              |   14 +++++++++++++-
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index 1a2ec5a..4147fc1 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -1966,6 +1966,12 @@ function commerce_cart_add_to_cart_form_attributes_refresh($form, $form_state) {
       );
 
       $element = field_view_field('commerce_product', $product, $product_field_name, $form_state['context']['view_mode']);
+
+      // Add an extra class to distinguish empty product fields.
+      if (empty($element)) {
+        $classes[] = 'commerce-product-field-empty';
+      }
+
       $element += array(
         '#prefix' => '<div class="' . implode(' ', $classes) . '">',
         '#suffix' => '</div>',
@@ -1998,8 +2004,15 @@ function commerce_cart_add_to_cart_form_attributes_refresh($form, $form_state) {
           'product' => $product,
         );
 
+        $field_output = theme($product_extra_field['theme'], $variables);
+
+        // Add an extra class to distinguish empty fields.
+        if (empty($field_output)) {
+          $classes[] = 'commerce-product-extra-field-empty';
+        }
+
         $element = array(
-          '#markup' => theme($product_extra_field['theme'], $variables),
+          '#markup' => $field_output,
           '#attached' => array(
             'css' => array(drupal_get_path('module', 'commerce_product') . '/theme/commerce_product.theme.css'),
           ),
diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 5eff3ff..eec878d 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -341,6 +341,11 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
                 drupal_html_class(implode('-', array($entity_type, $id, 'product', $product_field_name))),
               );
 
+              // Add an extra class to distinguish empty product fields.
+              if (empty($entity->content['product:' . $product_field_name])) {
+                $classes[] = 'commerce-product-field-empty';
+              }
+
               $entity->content['product:' . $product_field_name] += array(
                 '#prefix' => '<div class="' . implode(' ', $classes) . '">',
                 '#suffix' => '</div>',
@@ -365,8 +370,10 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
               'product' => $product,
             );
 
+            $field_output = theme($product_extra_field['theme'], $variables);
+
             $entity->content['product:' . $product_extra_field_name] = array(
-              '#markup' => theme($product_extra_field['theme'], $variables),
+              '#markup' => $field_output,
               '#attached' => array(
                 'css' => array(drupal_get_path('module', 'commerce_product') . '/theme/commerce_product.theme.css'),
               ),
@@ -383,6 +390,11 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
                 drupal_html_class(implode('-', array($entity_type, $id, 'product', $product_extra_field_name))),
               );
 
+              // Add an extra class to distinguish empty fields.
+              if (empty($field_output)) {
+                $classes[] = 'commerce-product-extra-field-empty';
+              }
+
               $entity->content['product:' . $product_extra_field_name] += array(
                 '#prefix' => '<div class="' . implode(' ', $classes) . '">',
                 '#suffix' => '</div>',
-- 
1.7.6

