You are here

function theme_ds_multigroup_table_multiple in Display Suite 6.3

Same name and namespace in other branches
  1. 6.2 theme/theme.inc \theme_ds_multigroup_table_multiple()

Theme a multigroup (fieldset).

Parameters

string $field The field to theme.:

1 string reference to 'theme_ds_multigroup_table_multiple'
_ds_theme in includes/ds.registry.inc
Return theme functions.

File

theme/theme.inc, line 317
Theming functions for ds.

Code

function theme_ds_multigroup_table_multiple($group) {
  $headers = array();

  // Set up row labels from subgroup labels, if applicable
  $row_labels = array();
  $labels = FALSE;
  foreach ($group['rows'] as $row_delta => $row) {
    if (isset($row['title'])) {
      $row_labels[$row_delta] = $row['title'];
      $labels = TRUE;
    }
    else {
      $row_labels[$row_delta] = '';
    }
  }
  foreach ($group['fields'] as $field) {
    if (isset($labels) && $labels == TRUE) {
      $headers[0] = array(
        'data' => '',
        'class' => $field['class'] . ' ds-subgroup-label content-multigroup-cell-' . str_replace('_', '-', $field_name),
      );
    }
    $label_display = isset($field['labelformat']) ? $field['labelformat'] : 'above';
    $headers[] = array(
      'data' => $label_display != 'hidden' ? check_plain(t($field['title'])) : '',
      'class' => 'content-multigroup-cell-' . str_replace('_', '-', $field_name),
    );
  }

  // Prepare the data
  $rows = array();
  foreach ($group['rows'] as $row_delta => $row) {
    $cells = array();
    $empty = TRUE;

    // Pick up subgroup labels
    if (isset($labels) && $labels == TRUE) {
      $cells[0] = array(
        'data' => $row_labels[$row_delta],
        'class' => $field['class'] . ' content-multigroup-cell-row-label',
      );
    }

    // Regular content
    foreach ($row['fields'] as $field_name => $field) {
      $cells[] = array(
        'data' => $field['view'],
        'class' => $field['class'] . ' content-multigroup-cell-' . str_replace('_', '-', $field_name),
      );
      if (!empty($field['view'])) {
        $empty = FALSE;
      }
    }

    // Get the row only if there is at least one non-empty field.
    if (!$empty) {
      $rows[] = $cells;
    }
  }
  return count($rows) ? theme('table', $headers, $rows) : '';
}