annotate sites/all/modules/quicktabs/plugins/QuickUiTabs.inc @ 11:b0ee71395280

deleted .DS_Store files
author danieleb <danielebarchiesi@me.com>
date Mon, 28 Oct 2013 16:12:13 +0000
parents b74b41bb73f0
children 134d4b2e75f6
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * Renders the content using the jQuery UI Tabs widget.
danielebarchiesi@2 5 */
danielebarchiesi@2 6 class QuickUiTabs extends QuickRenderer {
danielebarchiesi@2 7
danielebarchiesi@2 8 public static function optionsForm($qt) {
danielebarchiesi@2 9 $form = array();
danielebarchiesi@2 10 $form['history'] = array(
danielebarchiesi@2 11 '#type' => 'checkbox',
danielebarchiesi@2 12 '#title' => 'History',
danielebarchiesi@2 13 '#description' => t('Store tab state in the URL allowing for browser back / forward and bookmarks.'),
danielebarchiesi@2 14 '#default_value' => (isset($qt->renderer) && $qt->renderer == 'ui_tabs' && isset($qt->options['history']) && $qt->options['history']),
danielebarchiesi@2 15 );
danielebarchiesi@2 16 return $form;
danielebarchiesi@2 17 }
danielebarchiesi@2 18
danielebarchiesi@2 19 public function render() {
danielebarchiesi@2 20 $quickset = $this->quickset;
danielebarchiesi@2 21
danielebarchiesi@2 22 $active_tab = $quickset->getActiveTab();
danielebarchiesi@2 23 $tabs = $this->build_tablinks($active_tab);
danielebarchiesi@2 24 $qt_name = $quickset->getName();
danielebarchiesi@2 25 $render_array = array(
danielebarchiesi@2 26 '#attached' => $this->add_attached(),
danielebarchiesi@2 27 'content' => array(
danielebarchiesi@2 28 '#theme' => 'qt_ui_tabs',
danielebarchiesi@2 29 '#options' => array('attributes' => array(
danielebarchiesi@2 30 'id' => 'quicktabs-' . $qt_name,
danielebarchiesi@2 31 'class' => 'quicktabs-ui-wrapper',
danielebarchiesi@2 32 )),
danielebarchiesi@2 33 'tabs' => array('#theme' => 'qt_ui_tabs_tabset', '#options' => array('active' => $active_tab), 'tablinks' => $tabs),
danielebarchiesi@2 34 'divs' => array(),
danielebarchiesi@2 35 ),
danielebarchiesi@2 36 );
danielebarchiesi@2 37 foreach ($quickset->getContents() as $key => $tab) {
danielebarchiesi@2 38 if (!empty($tab)) {
danielebarchiesi@2 39 $attribs = array(
danielebarchiesi@2 40 'id' => 'qt-'. $qt_name .'-ui-tabs' . ($key+1),
danielebarchiesi@2 41 );
danielebarchiesi@2 42 $render_array['content']['divs'][] = array(
danielebarchiesi@2 43 '#prefix' => '<div '. drupal_attributes($attribs) .'>',
danielebarchiesi@2 44 '#suffix' => '</div>',
danielebarchiesi@2 45 'content' => $tab->render(),
danielebarchiesi@2 46 );
danielebarchiesi@2 47 }
danielebarchiesi@2 48 }
danielebarchiesi@2 49 return $render_array;
danielebarchiesi@2 50 }
danielebarchiesi@2 51
danielebarchiesi@2 52
danielebarchiesi@2 53 /**
danielebarchiesi@2 54 * Build the actual tab links, with appropriate href, title and attributes.
danielebarchiesi@2 55 *
danielebarchiesi@2 56 * @param $active_tab The index of the active tab.
danielebarchiesi@2 57 */
danielebarchiesi@2 58 protected function build_tablinks($active_tab) {
danielebarchiesi@2 59 $tabs = array();
danielebarchiesi@2 60 $qt_name = $this->quickset->getName();
danielebarchiesi@2 61 foreach ($this->quickset->getContents() as $i => $tab) {
danielebarchiesi@2 62 if (!empty($tab)) {
danielebarchiesi@2 63 // If we use l() here or a render array of type 'link', the '#' symbol will
danielebarchiesi@2 64 // be escaped. Sad panda is sad.
danielebarchiesi@2 65 $href = '#qt-'. $qt_name .'-ui-tabs' . ($i+1);
danielebarchiesi@2 66 $tablink = array(
danielebarchiesi@2 67 '#markup' => '<a href="'. $href .'">'. check_plain($this->quickset->translateString($tab->getTitle(), 'tab', $i)) .'</a>',
danielebarchiesi@2 68 );
danielebarchiesi@2 69 $tabs[$i] = $tablink;
danielebarchiesi@2 70 }
danielebarchiesi@2 71 }
danielebarchiesi@2 72 return $tabs;
danielebarchiesi@2 73 }
danielebarchiesi@2 74
danielebarchiesi@2 75 /**
danielebarchiesi@2 76 * Add any necessary js, css and libraries for the render array.
danielebarchiesi@2 77 */
danielebarchiesi@2 78 protected function add_attached() {
danielebarchiesi@2 79 $active_tab = $this->quickset->getActiveTab();
danielebarchiesi@2 80 $settings = $this->quickset->getSettings();
danielebarchiesi@2 81 $options = $settings['options'];
danielebarchiesi@2 82
danielebarchiesi@2 83 $attached = array(
danielebarchiesi@2 84 'library' => array(
danielebarchiesi@2 85 array('system', 'ui.tabs'),
danielebarchiesi@2 86 array('system', 'jquery.bbq'),
danielebarchiesi@2 87 ),
danielebarchiesi@2 88 'js' => array(
danielebarchiesi@2 89 array('data' => drupal_get_path('module', 'quicktabs') . '/js/qt_ui_tabs.js', 'weight' => JS_DEFAULT + 1),
danielebarchiesi@2 90 ),
danielebarchiesi@2 91 );
danielebarchiesi@2 92
danielebarchiesi@2 93 $javascript = drupal_add_js();
danielebarchiesi@2 94 foreach ($javascript['settings']['data'] as $key => $settings) {
danielebarchiesi@2 95 if (key($settings) == 'quicktabs') {
danielebarchiesi@2 96 $qtkey = $key;
danielebarchiesi@2 97 break;
danielebarchiesi@2 98 }
danielebarchiesi@2 99 }
danielebarchiesi@2 100
danielebarchiesi@2 101 if ($options['history']) {
danielebarchiesi@2 102 $attached['library'][] = array('system', 'jquery.bbq');
danielebarchiesi@2 103 $attached['js'][] = array('data' => drupal_get_path('module', 'quicktabs') . '/js/quicktabs_bbq.js', 'weight' => JS_DEFAULT);
danielebarchiesi@2 104 }
danielebarchiesi@2 105
danielebarchiesi@2 106 $name = $this->quickset->getName();
danielebarchiesi@2 107 if (!isset($qtkey) || !array_key_exists('qt_' . $name, $javascript['settings']['data'][$qtkey]['quicktabs'])) {
danielebarchiesi@2 108 $quicktabs_array = array('name' => $name, 'active_tab' => $this->quickset->getActiveTab(), 'history' => $options['history']);
danielebarchiesi@2 109 $attached['js'][] = array('data' => array('quicktabs' => array('qt_'. $name => $quicktabs_array)), 'type' => 'setting');
danielebarchiesi@2 110 }
danielebarchiesi@2 111 return $attached;
danielebarchiesi@2 112 }
danielebarchiesi@2 113 }