|
|
Drupal example source code file (tabs.inc)
The tabs.inc Drupal example source code<?php // $Id: tabs.inc,v 1.7 2008/05/27 23:49:37 merlinofchaos Exp $ /** * @file * * Classes and theme functions for rendering javascript UI tabs. */ /** * Contain a set of tabs as well as the ability to render them. * * There are three 'areas' of a tabset. * - title: The clickable link to display the tab area. These are always visible. * - body: The actual HTML body of the tab. Only one body is visible at a time. * - extra: An optional decorative area around the tabs. */ class views_tabset { var $tabs = array(); var $extra = ''; var $selected = NULL; /** * Add a tab to the tabset. * * @param $name * The name of the tab; this is the internal identifier and must be * unique within the tabset. * @param $title * If given, this will be the visible title of the tab. This can also * be set via $tabset->set(). This will be the link to click on to * view the tab. * @param $body * If given, this is the body of the tab itself. It will display * when the tab title is clicked on. */ function add($name, $title = '', $body = '') { if (is_object($name) && is_subclass_of($name, 'views_tab')) { $this->add_tab($name); } elseif (is_array($name)) { foreach ($name as $real_tab) { $this->add($real_tab); } } else { $this->add_tab(new views_tab($name, $title, $body)); } } /** * Add a fully realized tab object to the tabset. * * @param $tab * A fully populated views_tab object. */ function add_tab($tab) { $this->tabs[$tab->name] = $tab; } /** * Set the values of a tab. * * @param $name * The unique identifier of the tab to set. * @param $title * The title of the tab; this will be clickable. * @param $body * The HTML body of the tab. */ function set($name, $title, $body = NULL) { if (empty($this->tabs[$name])) { return $this->add($name, $title, $body); } $this->tabs[$name]->title = $title; if (isset($body)) { $this->tabs[$name]->body = $body; } } /** * Set the body of a tab. */ function set_body($name, $body) { if (empty($this->tabs[$name])) { return $this->add($name, '', $body); } $this->tabs[$name]->body = $body; } /** * Add text to the 'extra' region of the tabset. */ function add_extra($text) { $this->extra .= $text; } /** * Remove a tab. * * @param $tab * May be the name of the tab or a views_tab object. */ function remove($tab) { if (is_string($tab)) { unset($this->tabs[$tab]); } else { unset($this->tabs[$tab->name]); } } /** * Control which tab will be selected when it is rendered. */ function set_selected($name) { $this->selected = $name; } /** * Output the HTML for the tabs. * * @return * HTML representation of the tabs. */ function render() { views_add_js('tabs'); views_add_css('views-tabs'); if (empty($this->selected)) { $keys = array_keys($this->tabs); $this->selected = array_shift($keys); } drupal_alter('views_tabset', $this); return theme('views_tabset', $this->tabs, $this->extra, $this->selected); } } /** * An object to represent an individual tab within a tabset. */ class views_tab { var $title; var $body; var $name; /** * Construct a new tab. */ function views_tab($name, $title, $body = NULL) { $this->name = $name; $this->title = $title; $this->body = $body; } /** * Generate HTML output for a tab. */ function render() { return theme('views_tab', $this->body); } } /** * Render a tabset. * * @todo Turn this into a template. */ function theme_views_tabset($tabs, $extra = NULL, $selected = NULL) { $link_output = "<div class=\"views-tabs\"><ul id=\"views-tabset\">\n"; $tab_output = "<div class=\"views-tab-area\">\n"; foreach ($tabs as $name => $tab) { $link_output .= '<li' . ($name == $selected ? ' class="active"': '') . '><a href="#views-tab-' . $tab->name . '" id="views-tab-title-' . $tab->name . '">' . check_plain($tab->title) . '</a></li>' . "\n"; $tab_output .= '<div id="views-tab-' . $tab->name . '" class="views-tab">' . $tab->render() . "</div>\n"; } $link_output .= "</ul>\n"; if ($extra) { $link_output .= "<div class=\"extra\">$extra</div>\n"; } $link_output .= "</div>\n"; $tab_output .= "</div>\n"; return '<div class="views-tabset clear-block">' . $link_output . $tab_output . '</div>'; } /** * Theme a simple tab. */ function theme_views_tab($body) { return $body; } Other Drupal examples (source code examples)Here is a short list of links related to this Drupal tabs.inc source code file: |
"Drupal" is a registered trademark of Dries Buytaert.
my drupal tutorials and examples
Copyright
1998-2016 Alvin Alexander, alvinalexander.com
All Rights Reserved.
Beginning in 2016, a portion of the proceeds from pages under the '/drupal-code-examples/' URI will be donated to charity.