You are here

function _views_fieldsets_render__table in Views fieldsets 7.2

Helper function to render fieldsets recursively for table row style.

1 call to _views_fieldsets_render__table()
views_fieldsets_preprocess_views_view_table in ./views_fieldsets.module
Implements template_preprocess_views_view_table().

File

./views_fieldsets.module, line 156
Hooks, helpers and theming for the Views Fieldsets module.

Code

function _views_fieldsets_render__table($fields, $vars) {

  // Set default values.
  $view = $vars['view'];
  $display_handler = $view->display_handler;
  $views_field = $view->field[$vars['fieldset_field']];
  $views_field_options = $views_field->options;
  $hide_empty = !empty($display_handler->default_display->options['style_options']['info'][$vars['fieldset_field']]['empty_column']);
  $content = array();
  foreach ($fields->children as $child_field_name => $child_info) {
    if (!empty($vars['field_fields'][$vars['row_index']][$child_field_name])) {
      $views_field = $vars['field_fields'][$vars['row_index']][$child_field_name];
      if (views_fieldsets_field_is_fieldset($child_field_name, $display_handler)) {
        $sub_vars = $vars;

        // Fake vars.
        $sub_vars['fields'][$child_field_name] = (object) array(
          'handler' => $view->display_handler->handlers['field'][$child_field_name],
          'label' => $view->display_handler->handlers['field'][$child_field_name]->options['label'],
        );
        $sub_vars['fieldset_field'] = $child_field_name;
        $content[$child_field_name] = $views_field;
        $content[$child_field_name]->content = _views_fieldsets_render__table($child_info, $sub_vars);
        $views_field->label_html = $views_field->wrapper_prefix = $views_field->wrapper_suffix = '';
      }
      else {

        // Default behaviour to render field.
        $content[$child_field_name] = $views_field;
      }
    }
  }

  // Checking if we need to hide fieldset.
  $is_empty = TRUE;
  foreach ($content as $field) {
    if (!empty($field->content)) {
      $is_empty = FALSE;
      break;
    }
  }
  if (!$is_empty || !$hide_empty) {
    $vars['fieldset_fields'] = $content;
    $html_tag = $views_field_options['fieldset']['type'];
    unset($vars['theme_hook_suggestion'], $vars['theme_hook_suggestions']);
    $theme_hook_suggestions = views_theme_functions('views_fieldsets_' . $html_tag, $vars['view'], $display_handler->display);
    $output = theme($theme_hook_suggestions, $vars);
    $output .= "\n";
  }
  else {
    $output = '';
  }
  return $output;
}