You are here

function views_plugin_ds_fields_view::ds_views_fields_render in Display Suite 6

Same name and namespace in other branches
  1. 6.3 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::ds_views_fields_render()
  2. 6.2 views/views_plugin_ds_fields_view.inc \views_plugin_ds_fields_view::ds_views_fields_render()

Render the content for modules not implementing the ds api.

1 call to views_plugin_ds_fields_view::ds_views_fields_render()
views_plugin_ds_fields_view::ds_fields_render in views/views_plugin_ds_fields_view.inc
Render the fields.

File

views/views_plugin_ds_fields_view.inc, line 225
Contains the ds views fields style plugin.

Class

views_plugin_ds_fields_view
@file Contains the ds views fields style plugin.

Code

function ds_views_fields_render($object, $module, $vars) {
  $content = '';
  $all_regions = ds_regions('all', TRUE);

  // Loop through all regions.
  $regions = $vars['regions'];
  $region_classes = array();
  foreach ($all_regions as $region_name => $region_title) {
    if (isset($regions[$region_name])) {
      $region_content = '';
      $region = $regions[$region_name];
      $count = 0;

      // Loop through all fields after ordering on weight.
      asort($region);
      foreach ($region as $key => $weight) {

        // Theming function. This implies a 'content' key exists.
        $field_content = isset($vars[$key]) ? $vars[$key] : '';
        if (!empty($field_content)) {
          $count++;
          $region_content .= theme('ds_field', $field_content, $object->ds_fields[$key]);
        }
      }

      // Store content from a region and add classes if necessary.
      if (!empty($region_content)) {
        if ($region_name == 'left' || $region_name == 'right') {
          $region_classes[$region_name] = $region_name;
        }
        $style = isset($region_styles[$region_name]) ? ' ' . $region_styles[$region_name] : '';
        $themed_regions[$region_name] = array(
          'content' => $region_content,
          'extra_class' => $style,
          'count' => $count,
        );
      }
    }
  }
  $object_display = new stdClass();
  $object_display->all_regions = $all_regions;
  $object_display->themed_regions = $themed_regions;
  $object_display->region_classes = $region_classes;
  $object_display->build_mode = $object->build_mode;

  // Add classes based on regions.
  if (isset($object_display->themed_regions['middle'])) {
    $middle_class = $module . '-no-sidebars';
    if (isset($object_display->region_classes['left']) && isset($object_display->region_classes['right'])) {
      $middle_class = $module . '-two-sidebars';
    }
    elseif (isset($object_display->region_classes['left'])) {
      $middle_class = $module . '-one-sidebar ' . $module . '-sidebar-left';
    }
    elseif (isset($object_display->region_classes['right'])) {
      $middle_class = $module . '-one-sidebar ' . $module . '-sidebar-right';
    }
    $object_display->themed_regions['middle']['extra_class'] .= ' ' . $middle_class;
  }

  // Theme the regions with their content.
  return theme('ds_regions', $object_display, $module);
}