diff --git a/handlers/views_handler_filter_dynamic_fields.inc b/handlers/views_handler_filter_dynamic_fields.inc
index 56086cf..e8ae648 100755
--- a/handlers/views_handler_filter_dynamic_fields.inc
+++ b/handlers/views_handler_filter_dynamic_fields.inc
@@ -79,19 +79,35 @@ class views_handler_filter_dynamic_fields extends views_handler_filter {
     // Get all non-excluded fields
     $view_fields = $this->view_fields;
     foreach ($view_fields as $field_name => $field) {
-      if (empty($field['label'])) {
-        $field_label = $field['id'];
+      // $view_fields may not give label information for CCK fields using widget label
+      if (array_key_exists('label', $field)) {
+        if (empty($field['label'])) {
+          $field_label = $field['id'];
+        }
+        else {
+          $field_label = $field['label'];
+        }
+        // Do not allow pre-configured excluded fields in the filter
+        if (!$field['exclude']) {
+          $fields[$field_name] = $field_label;
+        }
+        else {
+          $fields_excluded[$field_name] = $field_label;
+        }
       }
+      // Work-around for CCK fields with widget label display
+      // @todo Find a way to not allow pre-configured excluded CCK fields with widget labels
       else {
-        $field_label = $field['label'];
-      }
-      // Do not allow pre-configured excluded fields in the filter
-      if (!$field['exclude']) {
+        $field_name_cck = substr($field_name, 0, -6);
+        $field = content_fields($field_name_cck);
+        if (empty($field['widget']['label'])) {
+          $field_label = $field[$field_name];
+        }
+        else {
+          $field_label = $field['widget']['label'];
+        }
         $fields[$field_name] = $field_label;
       }
-      else {
-        $fields_excluded[$field_name] = $field_label;
-      }
     }
 
     $form['sortability'] = array(
@@ -180,13 +196,26 @@ class views_handler_filter_dynamic_fields extends views_handler_filter {
         continue;
       }
       if (!isset($_SESSION[$this->view->name]['perm_exc'][$field_name])) {
-        // Use the field id as label if label is empty
-        if (empty($field['label'])) {
-          $all_fields[$field_name] = $field['id'];
+        // Use the field id as label if label exists and is empty
+        if (array_key_exists('label', $field)) {
+          if (empty($field['label'])) {
+            $all_fields[$field_name] = $field['id'];
+          }
+          else {
+            $all_fields[$field_name] = $field['label'];
+          }
         }
+        // Work-around for CCK fields with widget label display
         else {
-          $all_fields[$field_name] = $field['label'];
-        }
+          $field_name_cck = substr($field_name, 0, -6);
+          $field = content_fields($field_name_cck);
+          if (empty($field['widget']['label'])) {
+            $all_fields[$field_name] = $field['field_name_cck'];
+          }
+          else {
+            $all_fields[$field_name] = $field['widget']['label'];
+          }
+        }         
         $field_names[] = $field_name;
         // Get fields to display in the plain (unfiltered) view
         if ($defaults_filterable_fields[$field_name] == $field_name) {
