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 }
|