From 28d6ed883ce3064cd72006411fc1d9448e9be7da Mon Sep 17 00:00:00 2001
From: digitisation <info@8bitplateau.net>
Date: Wed, 4 Apr 2012 10:08:51 +0100
Subject: [PATCH] Added Row Titles.

---
 field_group_multiple.field_ui.inc |    9 +++++++
 field_group_multiple.module       |   44 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/field_group_multiple.field_ui.inc b/field_group_multiple.field_ui.inc
index 2f2a3e5..fbfaf49 100644
--- a/field_group_multiple.field_ui.inc
+++ b/field_group_multiple.field_ui.inc
@@ -99,6 +99,15 @@ function _field_group_multiple_default_format_settings($group) {
     '#attributes' => array('class' => array('field-group-parent-type')),
   );
 
+  if ($group->format_type == 'field_group_multiple_table') {
+    $form['instance_settings']['row_titles'] = array(
+      '#title' => t("Row Titles"),
+      '#description' => t("If you want col 1 to render as row titles enter them as csv's, the first value is the col header, use -none- as the first to omit header e.g -none-,Red,Green,Blue or Colors,Red,Green,Blue ."),
+      '#type' => 'textarea',
+      '#default_value' => isset($group->format_settings['instance_settings']['row_titles']) ? $group->format_settings['instance_settings']['row_titles'] : "",
+    );
+  }
+
   if (!empty($default_parent_type)) {
     $field_group_types = field_group_formatter_info();
     $mode = $group->mode == 'form' ? 'form' : 'display';
diff --git a/field_group_multiple.module b/field_group_multiple.module
index 17efd7b..1318d6c 100644
--- a/field_group_multiple.module
+++ b/field_group_multiple.module
@@ -48,6 +48,7 @@ function field_group_multiple_theme() {
 function field_group_multiple_field_group_formatter_info() {
   $instance_settings = array(
     'description' => '',
+    'row_titles' => '',
     'show_label' => 1,
     'label_element' => 'h3',
     'effect' => 'none',
@@ -69,7 +70,7 @@ function field_group_multiple_field_group_formatter_info() {
       'label' => t('Multiple fields table'),
       'description' => t('This field group type renders the items of multiple fields in the group as rows of the table.'),
       'format_types' => array('open', 'collapsible', 'collapsed'),
-      'instance_settings' => $instance_settings,
+      'instance_settings' => $instance_settings + array('row_titles' => ''),
       'default_formatter' => 'open',
     ),
     'field_group_multiple_label_value' => array(
@@ -939,10 +940,21 @@ function theme_field_group_multiple_table_form($variables) {
   $group = $element['#group'];
   $id = $element['#id'];
 
+  $titles = (isset($group->format_settings['instance_settings']['row_titles'])) ? $group->format_settings['instance_settings']['row_titles'] : null;
+  if ($titles) {
+    $row_titles = explode(',', $titles);
+    if ($row_titles[0] == '-none-') {
+      $row_titles[0] = '';
+    }
+  }
 
   $header = array();
   $rows = array();
 
+  if ($titles) {
+    $header[] = '<div class="th-title">' . $row_titles[0] . '</div>';
+  }
+
   foreach (element_children($original_fields, TRUE) as $field_name) {
     $container = $original_fields[$field_name];
     $language = $container['#language'];
@@ -962,6 +974,15 @@ function theme_field_group_multiple_table_form($variables) {
   foreach (element_children($items, TRUE) as $delta) {
     $field_data = $items[$delta];
     $row = array();
+
+    if ($titles) {
+      $row_title = '';
+      if (($delta + 1) < count($row_titles)) {
+        $row_title = $row_titles[$delta + 1];
+      }
+      $row[] = array("data" => $row_title, "class" => "");
+    }
+
     foreach (element_children($field_data, TRUE) as $field_name) {
       $data = $field_data[$field_name];
       $row[] = array("data" => drupal_render($data), "class" => "");
@@ -1072,6 +1093,18 @@ function template_preprocess_field_group_multiple_table(&$variables) {
   $header = array();
   $rows = array();
 
+  $titles = (isset($group->format_settings['instance_settings']['row_titles'])) ? $group->format_settings['instance_settings']['row_titles'] : null;
+  if ($titles) {
+    $row_titles = explode(',', $titles);
+    if ($row_titles[0] == '-none-') {
+      $row_titles[0] = '';
+    }
+  }
+
+  if ($titles) {
+    $header[] = $row_titles[0];
+  }
+
   $id = $group->group_name;
   foreach (element_children($fields,TRUE) as $field_name) {
     $header[] = t($fields[$field_name]['#title']);
@@ -1080,6 +1113,15 @@ function template_preprocess_field_group_multiple_table(&$variables) {
   foreach (element_children($items,TRUE) as $delta) {
     $row_values = $items[$delta];
     $row = array();
+
+    if ($titles) {
+      $row_title = '';
+      if (($delta + 1) < count($row_titles)) {
+        $row_title = $row_titles[$delta + 1];
+      }
+      $row[] = array("data" => $row_title, "class" => "");
+    }
+
     foreach (element_children($row_values,TRUE) as $field_name) {
       $data = $row_values[$field_name];
       $row[] = array("data" => drupal_render($data), "class" => "");
-- 
1.7.5.4

