danielebarchiesi@2: 'checkbox', danielebarchiesi@2: '#title' => 'History', danielebarchiesi@2: '#description' => t('Store tab state in the URL allowing for browser back / forward and bookmarks.'), danielebarchiesi@2: '#default_value' => (isset($qt->renderer) && $qt->renderer == 'ui_tabs' && isset($qt->options['history']) && $qt->options['history']), danielebarchiesi@2: ); danielebarchiesi@2: return $form; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: public function render() { danielebarchiesi@2: $quickset = $this->quickset; danielebarchiesi@2: danielebarchiesi@2: $active_tab = $quickset->getActiveTab(); danielebarchiesi@2: $tabs = $this->build_tablinks($active_tab); danielebarchiesi@2: $qt_name = $quickset->getName(); danielebarchiesi@2: $render_array = array( danielebarchiesi@2: '#attached' => $this->add_attached(), danielebarchiesi@2: 'content' => array( danielebarchiesi@2: '#theme' => 'qt_ui_tabs', danielebarchiesi@2: '#options' => array('attributes' => array( danielebarchiesi@2: 'id' => 'quicktabs-' . $qt_name, danielebarchiesi@2: 'class' => 'quicktabs-ui-wrapper', danielebarchiesi@2: )), danielebarchiesi@2: 'tabs' => array('#theme' => 'qt_ui_tabs_tabset', '#options' => array('active' => $active_tab), 'tablinks' => $tabs), danielebarchiesi@2: 'divs' => array(), danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: foreach ($quickset->getContents() as $key => $tab) { danielebarchiesi@2: if (!empty($tab)) { danielebarchiesi@2: $attribs = array( danielebarchiesi@2: 'id' => 'qt-'. $qt_name .'-ui-tabs' . ($key+1), danielebarchiesi@2: ); danielebarchiesi@2: $render_array['content']['divs'][] = array( danielebarchiesi@2: '#prefix' => '
', danielebarchiesi@2: '#suffix' => '
', danielebarchiesi@2: 'content' => $tab->render(), danielebarchiesi@2: ); danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: return $render_array; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Build the actual tab links, with appropriate href, title and attributes. danielebarchiesi@2: * danielebarchiesi@2: * @param $active_tab The index of the active tab. danielebarchiesi@2: */ danielebarchiesi@2: protected function build_tablinks($active_tab) { danielebarchiesi@2: $tabs = array(); danielebarchiesi@2: $qt_name = $this->quickset->getName(); danielebarchiesi@2: foreach ($this->quickset->getContents() as $i => $tab) { danielebarchiesi@2: if (!empty($tab)) { danielebarchiesi@2: // If we use l() here or a render array of type 'link', the '#' symbol will danielebarchiesi@2: // be escaped. Sad panda is sad. danielebarchiesi@2: $href = '#qt-'. $qt_name .'-ui-tabs' . ($i+1); danielebarchiesi@2: $tablink = array( danielebarchiesi@2: '#markup' => ''. check_plain($this->quickset->translateString($tab->getTitle(), 'tab', $i)) .'', danielebarchiesi@2: ); danielebarchiesi@2: $tabs[$i] = $tablink; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: return $tabs; danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: /** danielebarchiesi@2: * Add any necessary js, css and libraries for the render array. danielebarchiesi@2: */ danielebarchiesi@2: protected function add_attached() { danielebarchiesi@2: $active_tab = $this->quickset->getActiveTab(); danielebarchiesi@2: $settings = $this->quickset->getSettings(); danielebarchiesi@2: $options = $settings['options']; danielebarchiesi@2: danielebarchiesi@2: $attached = array( danielebarchiesi@2: 'library' => array( danielebarchiesi@2: array('system', 'ui.tabs'), danielebarchiesi@2: array('system', 'jquery.bbq'), danielebarchiesi@2: ), danielebarchiesi@2: 'js' => array( danielebarchiesi@2: array('data' => drupal_get_path('module', 'quicktabs') . '/js/qt_ui_tabs.js', 'weight' => JS_DEFAULT + 1), danielebarchiesi@2: ), danielebarchiesi@2: ); danielebarchiesi@2: danielebarchiesi@2: $javascript = drupal_add_js(); danielebarchiesi@2: foreach ($javascript['settings']['data'] as $key => $settings) { danielebarchiesi@2: if (key($settings) == 'quicktabs') { danielebarchiesi@2: $qtkey = $key; danielebarchiesi@2: break; danielebarchiesi@2: } danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: if ($options['history']) { danielebarchiesi@2: $attached['library'][] = array('system', 'jquery.bbq'); danielebarchiesi@2: $attached['js'][] = array('data' => drupal_get_path('module', 'quicktabs') . '/js/quicktabs_bbq.js', 'weight' => JS_DEFAULT); danielebarchiesi@2: } danielebarchiesi@2: danielebarchiesi@2: $name = $this->quickset->getName(); danielebarchiesi@2: if (!isset($qtkey) || !array_key_exists('qt_' . $name, $javascript['settings']['data'][$qtkey]['quicktabs'])) { danielebarchiesi@2: $quicktabs_array = array('name' => $name, 'active_tab' => $this->quickset->getActiveTab(), 'history' => $options['history']); danielebarchiesi@2: $attached['js'][] = array('data' => array('quicktabs' => array('qt_'. $name => $quicktabs_array)), 'type' => 'setting'); danielebarchiesi@2: } danielebarchiesi@2: return $attached; danielebarchiesi@2: } danielebarchiesi@2: }