t('Tabs'), 'description' => t('Presents the panes in a tabs fieldset.'), 'render region' => 'panels_tabs_style_render_region', 'settings form' => 'panels_tabs_style_settings_form', 'settings validate' => 'panels_tabs_style_settings_validate', ); /** * Render callback. * * @ingroup themeable */ function theme_panels_tabs_style_render_region($vars) { $display = $vars['display']; $region_id = $vars['region_id']; $panes = $vars['panes']; $settings = $vars['settings']; //Build items and fieldset $items = array(); $owner = $vars['owner_id']; $build[$owner] = array( '#type' => 'vertical_tabs', '#weight' => 99, ); foreach ($panes as $pane_id => $item) { // Only getting the "Override Title" for now... needs work to get the pane title $title = $display->content[$pane_id]->configuration['override_title_text']; $pane_class = "pane_" . $pane_id; $build[$pane_class] = array( '#type' => 'fieldset', '#title' => $title, '#collapsible' => TRUE, '#collapsed' => TRUE, '#group' => $owner, '#attributes' => array( 'class' => array($pane_class), ), '#tree' => TRUE, '#weight' => -2, ); $build[$pane_class]['items'] = array( '#markup' => $item, ); } return theme($settings['tabs_type'], array( 'element' => array( '#children' => render($build), ), )); } /** * Settings form callback. */ function panels_tabs_style_settings_form($style_settings) { //Vertical tabs are in core $options['vertical_tabs'] = t('Vertical'); //field_group.module allows same structure, for horizontal tabs if (module_exists('field_group')) $options['horizontal_tabs'] = t('Horizontal'); $form['tabs_type'] = array( '#type' => 'select', '#title' => t('Tabs type'), '#options' => $options, '#default_value' => (isset($style_settings['tabs_type'])) ? $style_settings['tabs_type'] : 'vertical_tabs', ); return $form; }