### Eclipse Workspace Patch 1.0 #P D6 Index: sites/all/modules/cck_table/cck_table.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/cck_table/cck_table.module,v retrieving revision 1.1.4.1 diff -u -r1.1.4.1 cck_table.module --- sites/all/modules/cck_table/cck_table.module 28 Jan 2010 04:51:39 -0000 1.1.4.1 +++ sites/all/modules/cck_table/cck_table.module 3 Jan 2011 08:58:39 -0000 @@ -66,9 +66,6 @@ '#default_value' => isset($field['css_class']) ? $field['css_class'] : '', ); return $form; - - case 'validate': - break; case 'save': return array('css_id', 'css_class'); @@ -136,7 +133,7 @@ foreach ($lines as $line) { $cells = explode('|', $line); - if (count($header) == 0 && count($lines) > 1 && $header_type) { + if (empty($header) && count($lines) > 1 && $header_type) { $header = $cells; } else { @@ -308,4 +305,36 @@ */ function theme_cck_table($element) { return $element['#children']; +} + +/** + * Implementation of hook_field(). + */ +function cck_table_field($op, &$node, $field, &$items, $teaser, $page) { + switch ($op) { + case 'validate': + $allowed_values = content_allowed_values($field); + if (is_array($items)) { + foreach ($items as $delta => $item) { + $error_element = isset($item['_error_element']) ? $item['_error_element'] : ''; + if (is_array($item) && isset($item['_error_element'])) unset($item['_error_element']); + if ($item['value'] != '') { + $lines = explode("\n", $item['value']); + $lines = array_map('trim', $lines); + $lines = array_filter($lines, 'strlen'); + + $cell_count; + foreach ($lines as $line) { + if(!$cell_count) { + $cell_count = count(explode('|', $line)); + } elseif($cell_count != count(explode('|', $line))) { + form_set_error($error_element, t('%name: mis-align number of columns.', array('%name' => t($field['widget']['label'])))); + break; + } + } + } + } + } + return $items; + } } \ No newline at end of file