diff --git a/plugins/styles/tabs.inc b/plugins/styles/tabs.inc new file mode 100644 index 0000000..d2c5bb3 --- /dev/null +++ b/plugins/styles/tabs.inc @@ -0,0 +1,96 @@ + 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 = array_reverse($vars['panes'], TRUE); + $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) { + + // Get the pane context identifier. + $context_id = $display->content[$pane_id]->configuration['context']; + + // Use the "Override Title" if set, otherwise use the pane title. + $title = isset($display->content[$pane_id]->configuration['override_title_text']) ? + $display->content[$pane_id]->configuration['override_title_text'] : + $display->content[$pane_id]->configuration['title']; + + // Replace custom %title identifier if present with context title. + $title = str_replace('%title', $display->context[$context_id]->title, $title); + + $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; +} +