You are here

function quicktabs_render in Quick Tabs 6.2

Same name and namespace in other branches
  1. 6.3 quicktabs.module \quicktabs_render()
  2. 7.2 quicktabs.module \quicktabs_render()

Render quicktabs.

1 call to quicktabs_render()
theme_quicktabs in ./quicktabs.module
Theme function to output quicktabs.

File

./quicktabs.module, line 161

Code

function quicktabs_render($quicktabs) {

  // convert views arguments to an array, retrieving %-style args from url
  $quicktabs['tabs'] = _quicktabs_prepare_views_args($quicktabs['tabs']);
  if ($quicktabs['hide_empty_tabs'] && !$quicktabs['ajax']) {

    // Remove empty tabpgages.
    foreach ($quicktabs['tabs'] as $key => $tab) {
      $contents = quicktabs_render_tabpage($tab, TRUE);
      if (empty($contents)) {
        unset($quicktabs['tabs'][$key]);
      }
    }
    $quicktabs['tabs'] = array_merge($quicktabs['tabs']);
  }
  $tabs_count = count($quicktabs['tabs']);
  if ($tabs_count <= 0) {
    return '';
  }
  if ($quicktabs['style'] == 'default') {
    $quicktabs['style'] = variable_get('quicktabs_tabstyle', 'nostyle');
  }
  quicktabs_add_css($quicktabs['style']);
  $javascript = drupal_add_js('misc/progress.js', 'core');
  if (!isset($javascript['setting'][1]['quicktabs']) || !array_key_exists('qt_' . $quicktabs['qtid'], $javascript['setting'][1]['quicktabs'])) {

    // Only the tabs are used in quicktabs.js
    $settings = array(
      'tabs' => $quicktabs['ajax'] ? $quicktabs['tabs'] : quicktabs_array_fill_keys(array_keys($quicktabs['tabs']), 0),
    );
    drupal_add_js(array(
      'quicktabs' => array(
        'qt_' . $quicktabs['qtid'] => $settings,
      ),
    ), 'setting');
  }
  drupal_add_js(drupal_get_path('module', 'quicktabs') . '/js/quicktabs.js');
  $attributes = drupal_attributes(array(
    'id' => 'quicktabs-' . $quicktabs['qtid'],
    'class' => 'quicktabs_wrapper quicktabs-style-' . drupal_strtolower($quicktabs['style']),
  ));
  $output = '<div' . $attributes . '>';
  $active_tab = _quicktabs_get_active_tab($quicktabs);
  $output .= theme('quicktabs_tabs', $quicktabs, $active_tab);

  // The main content area, each quicktab container needs a unique id.
  $attributes = drupal_attributes(array(
    'id' => 'quicktabs_container_' . $quicktabs['qtid'],
    'class' => 'quicktabs_main quicktabs-style-' . drupal_strtolower($quicktabs['style']),
  ));
  $output .= '<div' . $attributes . '>';
  if ($quicktabs['ajax']) {

    // Prepare ajax views.
    _quicktabs_prepare_views($quicktabs['tabs']);

    // Render only the active tabpage.
    if (isset($active_tab)) {
      $attributes = drupal_attributes(array(
        'id' => 'quicktabs_tabpage_' . $quicktabs['qtid'] . '_' . $active_tab,
        'class' => 'quicktabs_tabpage',
      ));
      $output .= '<div' . $attributes . '>' . quicktabs_render_tabpage($quicktabs['tabs'][$active_tab]) . '</div>';
    }
  }
  else {

    // Render all tabpgages.
    foreach ($quicktabs['tabs'] as $key => $tab) {
      $attributes = drupal_attributes(array(
        'id' => 'quicktabs_tabpage_' . $quicktabs['qtid'] . '_' . $key,
        'class' => 'quicktabs_tabpage' . ($active_tab == $key ? '' : ' quicktabs-hide'),
      ));
      $output .= '<div' . $attributes . '>' . quicktabs_render_tabpage($tab) . '</div>';
    }
  }
  $output .= '</div></div>';
  return $output;
}