Mercurial > hg > rr-repo
diff sites/all/modules/quicktabs/plugins/QuickUiTabs.inc @ 2:b74b41bb73f0
-- Google analytics module
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 22 Aug 2013 17:22:54 +0100 |
parents | |
children | 134d4b2e75f6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/quicktabs/plugins/QuickUiTabs.inc Thu Aug 22 17:22:54 2013 +0100 @@ -0,0 +1,113 @@ +<?php + +/** + * Renders the content using the jQuery UI Tabs widget. + */ +class QuickUiTabs extends QuickRenderer { + + public static function optionsForm($qt) { + $form = array(); + $form['history'] = array( + '#type' => 'checkbox', + '#title' => 'History', + '#description' => t('Store tab state in the URL allowing for browser back / forward and bookmarks.'), + '#default_value' => (isset($qt->renderer) && $qt->renderer == 'ui_tabs' && isset($qt->options['history']) && $qt->options['history']), + ); + return $form; + } + + public function render() { + $quickset = $this->quickset; + + $active_tab = $quickset->getActiveTab(); + $tabs = $this->build_tablinks($active_tab); + $qt_name = $quickset->getName(); + $render_array = array( + '#attached' => $this->add_attached(), + 'content' => array( + '#theme' => 'qt_ui_tabs', + '#options' => array('attributes' => array( + 'id' => 'quicktabs-' . $qt_name, + 'class' => 'quicktabs-ui-wrapper', + )), + 'tabs' => array('#theme' => 'qt_ui_tabs_tabset', '#options' => array('active' => $active_tab), 'tablinks' => $tabs), + 'divs' => array(), + ), + ); + foreach ($quickset->getContents() as $key => $tab) { + if (!empty($tab)) { + $attribs = array( + 'id' => 'qt-'. $qt_name .'-ui-tabs' . ($key+1), + ); + $render_array['content']['divs'][] = array( + '#prefix' => '<div '. drupal_attributes($attribs) .'>', + '#suffix' => '</div>', + 'content' => $tab->render(), + ); + } + } + return $render_array; + } + + + /** + * Build the actual tab links, with appropriate href, title and attributes. + * + * @param $active_tab The index of the active tab. + */ + protected function build_tablinks($active_tab) { + $tabs = array(); + $qt_name = $this->quickset->getName(); + foreach ($this->quickset->getContents() as $i => $tab) { + if (!empty($tab)) { + // If we use l() here or a render array of type 'link', the '#' symbol will + // be escaped. Sad panda is sad. + $href = '#qt-'. $qt_name .'-ui-tabs' . ($i+1); + $tablink = array( + '#markup' => '<a href="'. $href .'">'. check_plain($this->quickset->translateString($tab->getTitle(), 'tab', $i)) .'</a>', + ); + $tabs[$i] = $tablink; + } + } + return $tabs; + } + + /** + * Add any necessary js, css and libraries for the render array. + */ + protected function add_attached() { + $active_tab = $this->quickset->getActiveTab(); + $settings = $this->quickset->getSettings(); + $options = $settings['options']; + + $attached = array( + 'library' => array( + array('system', 'ui.tabs'), + array('system', 'jquery.bbq'), + ), + 'js' => array( + array('data' => drupal_get_path('module', 'quicktabs') . '/js/qt_ui_tabs.js', 'weight' => JS_DEFAULT + 1), + ), + ); + + $javascript = drupal_add_js(); + foreach ($javascript['settings']['data'] as $key => $settings) { + if (key($settings) == 'quicktabs') { + $qtkey = $key; + break; + } + } + + if ($options['history']) { + $attached['library'][] = array('system', 'jquery.bbq'); + $attached['js'][] = array('data' => drupal_get_path('module', 'quicktabs') . '/js/quicktabs_bbq.js', 'weight' => JS_DEFAULT); + } + + $name = $this->quickset->getName(); + if (!isset($qtkey) || !array_key_exists('qt_' . $name, $javascript['settings']['data'][$qtkey]['quicktabs'])) { + $quicktabs_array = array('name' => $name, 'active_tab' => $this->quickset->getActiveTab(), 'history' => $options['history']); + $attached['js'][] = array('data' => array('quicktabs' => array('qt_'. $name => $quicktabs_array)), 'type' => 'setting'); + } + return $attached; + } +}