annotate sites/all/modules/quicktabs/plugins/QuickAccordion.inc @ 2:b74b41bb73f0

-- Google analytics module
author danieleb <danielebarchiesi@me.com>
date Thu, 22 Aug 2013 17:22:54 +0100
parents
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 Accordion widget.
danielebarchiesi@2 5 */
danielebarchiesi@2 6 class QuickAccordion 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 == 'accordion' && isset($qt->options['history']) && $qt->options['history']),
danielebarchiesi@2 15 );
danielebarchiesi@2 16 $form['jquery_ui'] = array(
danielebarchiesi@2 17 '#type' => 'fieldset',
danielebarchiesi@2 18 '#title' => t('JQuery UI options'),
danielebarchiesi@2 19 );
danielebarchiesi@2 20 $form['jquery_ui']['autoHeight'] = array(
danielebarchiesi@2 21 '#type' => 'checkbox',
danielebarchiesi@2 22 '#title' => 'Autoheight',
danielebarchiesi@2 23 '#default_value' => (isset($qt->renderer) && $qt->renderer == 'accordion' && isset($qt->options['jquery_ui']['autoHeight']) && $qt->options['jquery_ui']['autoHeight']),
danielebarchiesi@2 24 );
danielebarchiesi@2 25 $form['jquery_ui']['collapsible'] = array(
danielebarchiesi@2 26 '#type' => 'checkbox',
danielebarchiesi@2 27 '#title' => t('Collapsible'),
danielebarchiesi@2 28 '#default_value' => (isset($qt->renderer) && $qt->renderer == 'accordion' && isset($qt->options['jquery_ui']['collapsible']) && $qt->options['jquery_ui']['collapsible']),
danielebarchiesi@2 29 );
danielebarchiesi@2 30 return $form;
danielebarchiesi@2 31 }
danielebarchiesi@2 32
danielebarchiesi@2 33 public function render() {
danielebarchiesi@2 34 $quickset = $this->quickset;
danielebarchiesi@2 35 $qsid = 'quickset-' . $quickset->getName();
danielebarchiesi@2 36 // Build our render array...
danielebarchiesi@2 37 $render_array = array();
danielebarchiesi@2 38 $render_array['#attached'] = $this->add_attached();
danielebarchiesi@2 39 $render_array['content'] = array(
danielebarchiesi@2 40 '#theme' => 'qt_accordion',
danielebarchiesi@2 41 '#options' => array('attributes' => array(
danielebarchiesi@2 42 'id' => $qsid,
danielebarchiesi@2 43 'class' => array('quick-accordion'),
danielebarchiesi@2 44 )),
danielebarchiesi@2 45 'divs' => array(),
danielebarchiesi@2 46 );
danielebarchiesi@2 47
danielebarchiesi@2 48 // Render all tab content.
danielebarchiesi@2 49 foreach ($quickset->getContents() as $key => $item) {
danielebarchiesi@2 50 if (!empty($item)) {
danielebarchiesi@2 51 $render_array['content']['divs'][] = array(
danielebarchiesi@2 52 '#prefix' => '<h3><a href= "#'. $qsid . '_' . $key .'">'. check_plain($quickset->translateString($item->getTitle(), 'tab', $key)) .'</a></h3><div>',
danielebarchiesi@2 53 '#suffix' => '</div>',
danielebarchiesi@2 54 'content' => $item->render(),
danielebarchiesi@2 55 );
danielebarchiesi@2 56 }
danielebarchiesi@2 57 }
danielebarchiesi@2 58 return $render_array;
danielebarchiesi@2 59 }
danielebarchiesi@2 60
danielebarchiesi@2 61 /**
danielebarchiesi@2 62 * Add any necessary js, css and libraries for the render array.
danielebarchiesi@2 63 */
danielebarchiesi@2 64 protected function add_attached() {
danielebarchiesi@2 65 $settings = $this->quickset->getSettings();
danielebarchiesi@2 66 $options = $settings['options'];
danielebarchiesi@2 67
danielebarchiesi@2 68 $attached = array(
danielebarchiesi@2 69 'library' => array(
danielebarchiesi@2 70 array('system', 'ui.accordion'),
danielebarchiesi@2 71 ),
danielebarchiesi@2 72 'js' => array(
danielebarchiesi@2 73 array('data' => drupal_get_path('module', 'quicktabs') . '/js/qt_accordion.js'),
danielebarchiesi@2 74 ),
danielebarchiesi@2 75 );
danielebarchiesi@2 76
danielebarchiesi@2 77 $javascript = drupal_add_js();
danielebarchiesi@2 78 foreach ($javascript['settings']['data'] as $key => $settings) {
danielebarchiesi@2 79 if (key($settings) == 'quicktabs') {
danielebarchiesi@2 80 $qtkey = $key;
danielebarchiesi@2 81 break;
danielebarchiesi@2 82 }
danielebarchiesi@2 83 }
danielebarchiesi@2 84
danielebarchiesi@2 85 if ($options['history']) {
danielebarchiesi@2 86 $attached['library'][] = array('system', 'jquery.bbq');
danielebarchiesi@2 87 $attached['js'][] = array('data' => drupal_get_path('module', 'quicktabs') . '/js/quicktabs_bbq.js');
danielebarchiesi@2 88 }
danielebarchiesi@2 89
danielebarchiesi@2 90 $name = $this->quickset->getName();
danielebarchiesi@2 91 if (!isset($qtkey) || !array_key_exists('qt_' . $name, $javascript['settings']['data'][$qtkey]['quicktabs'])) {
danielebarchiesi@2 92 $quicktabs_array = array('name' => $name, 'active_tab' => $this->quickset->getActiveTab(), 'options' => $options['jquery_ui'], 'history' => $options['history']);
danielebarchiesi@2 93 $attached['js'][] = array('data' => array('quicktabs' => array('qt_'. $name => $quicktabs_array)), 'type' => 'setting');
danielebarchiesi@2 94 }
danielebarchiesi@2 95 return $attached;
danielebarchiesi@2 96 }
danielebarchiesi@2 97
danielebarchiesi@2 98 }