Index: fieldgroup_table.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/fieldgroup_table/fieldgroup_table.module,v retrieving revision 1.1 diff -u -u -p -r1.1 fieldgroup_table.module --- fieldgroup_table.module 28 Dec 2006 21:33:46 -0000 1.1 +++ fieldgroup_table.module 14 Mar 2008 09:48:09 -0000 @@ -99,6 +99,46 @@ function theme_fieldgroup_table($element return theme('table',$element['#header'],$rows); } +function theme_fieldgroup_node_table($node, $group) { + $header = array(); + $rows = array(); + $fields = content_fields(); + foreach($group['fields'] as $name => $field) { + if (fieldgroup_table_check_field_multiple($name)) { + $header[] = $field['label']; + $row = array(); + foreach($node->$name as $key => $data) { + $row[] = array('data' => $data['value'], 'class' => $name); + } + $rows[] = $row; + } + } + $rows = content_transpose_array_rows_cols($rows); + return theme('table', $header, $rows, array(), $group['label'] .':'); +} + +function fieldgroup_table_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) { + switch ($op) { + case 'view': + foreach (fieldgroup_groups($node->type) as $group_name => $group) { + if (fieldgroup_table_is_multiple($node->type, $group_name)) { + $old = $node->content[$group_name]; + if ($old) { + $node->content[$group_name] = array( + '#type' => 'markup', + '#value' => theme('fieldgroup_node_table', $node, $group), + '#weight' => $old['#weight'], + '#attributes' => $old['#attributes'], + '#title' => $old['#title'], + '#description' => $old['#description'], + ); + } + } + } + break; + } +} + ///////////////////////////// Fragile functions ////////////////////////// /** @@ -109,7 +149,12 @@ function fieldgroup_table_get_multiple($ // This is probabaly subject to change. $type_name = $form['#parameters'][1]['type']; $group_name = $form['#parameters'][2]; + return fieldgroup_table_is_multiple($type_name, $group_name); +} + +function fieldgroup_table_is_multiple($type_name, $group_name) { $result = db_query("SELECT settings FROM {node_group} WHERE type_name = '%s' AND group_name = '%s'",$type_name,$group_name); + $settings = db_result($result); if ($settings = db_result($result)) { $settings = unserialize($settings); return isset($settings['multiple']) ? $settings['multiple'] : FALSE;