annotate sites/all/modules/quicktabs/plugins/QuickQuicktabs.inc @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents a75ead649730
children 134d4b2e75f6
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * Renders the content using the original Quicktabs mechanism of previous versions.
danielebarchiesi@2 5 * Includes support for ajax rendered content.
danielebarchiesi@2 6 */
danielebarchiesi@2 7 class QuickQuicktabs extends QuickRenderer {
danielebarchiesi@6 8
danielebarchiesi@2 9 public function render() {
danielebarchiesi@2 10 $quickset = $this->quickset;
danielebarchiesi@6 11
danielebarchiesi@2 12 $render_array = array();
danielebarchiesi@2 13
danielebarchiesi@2 14 $active_tab = $quickset->getActiveTab();
danielebarchiesi@2 15 if ($tabs = $this->build_tablinks($active_tab)) {
danielebarchiesi@2 16 $render_array['#attached'] = $this->add_attached();
danielebarchiesi@2 17
danielebarchiesi@2 18 $qt_name = $quickset->getName();
danielebarchiesi@2 19 $settings = $quickset->getSettings();
danielebarchiesi@2 20 $contents = $quickset->getContents();
danielebarchiesi@2 21
danielebarchiesi@2 22 $render_array['content'] = array(
danielebarchiesi@2 23 '#theme' => 'qt_quicktabs',
danielebarchiesi@2 24 '#options' => array('attributes' => array(
danielebarchiesi@2 25 'id' => 'quicktabs-' . $qt_name,
danielebarchiesi@6 26 'class' => 'quicktabs-wrapper quicktabs-style-' . drupal_html_class($settings['style']),
danielebarchiesi@2 27 )),
danielebarchiesi@6 28 'tabs' => array('#theme' => 'qt_quicktabs_tabset', '#options' => array('active' => $active_tab, 'style' => drupal_html_class($settings['style'])), 'tablinks' => $tabs),
danielebarchiesi@2 29 // The main content area, each quicktab container needs a unique id.
danielebarchiesi@2 30 'container' => array(
danielebarchiesi@6 31 '#prefix' => '<div id="quicktabs-container-' . $qt_name .'" class="quicktabs_main quicktabs-style-' . drupal_html_class($settings['style']) .'">',
danielebarchiesi@2 32 '#suffix' => '</div>',
danielebarchiesi@2 33 'divs' => array(),
danielebarchiesi@2 34 ),
danielebarchiesi@2 35 );
danielebarchiesi@2 36
danielebarchiesi@2 37 // If in ajax mode, we'll only be rendering one tab, otherwise all of them.
danielebarchiesi@2 38 $tabs_to_render = $settings['ajax'] ? array($active_tab => $contents[$active_tab]) : $contents;
danielebarchiesi@2 39 foreach ($tabs_to_render as $key => $tab) {
danielebarchiesi@2 40 if (!empty($tab)) {
danielebarchiesi@2 41 $attribs = array(
danielebarchiesi@2 42 'id' => 'quicktabs-tabpage-'. $qt_name . '-'. $key,
danielebarchiesi@2 43 'class' => array('quicktabs-tabpage', ($active_tab == $key ? '' : 'quicktabs-hide')),
danielebarchiesi@2 44 );
danielebarchiesi@2 45 $render_array['content']['container']['divs'][] = array(
danielebarchiesi@2 46 '#prefix' => '<div '. drupal_attributes($attribs) .'>',
danielebarchiesi@2 47 '#suffix' => '</div>',
danielebarchiesi@2 48 'content' => $tab->render(),
danielebarchiesi@2 49 );
danielebarchiesi@2 50 }
danielebarchiesi@2 51 }
danielebarchiesi@2 52 }
danielebarchiesi@2 53 return $render_array;
danielebarchiesi@2 54 }
danielebarchiesi@2 55
danielebarchiesi@2 56 /**
danielebarchiesi@2 57 * Build the actual tab links, with appropriate href, title and attributes.
danielebarchiesi@6 58 *
danielebarchiesi@2 59 * @param $active_tab The index of the active tab.
danielebarchiesi@2 60 */
danielebarchiesi@2 61 protected function build_tablinks($active_tab) {
danielebarchiesi@2 62 $quickset = $this->quickset;
danielebarchiesi@2 63 $settings = $quickset->getSettings();
danielebarchiesi@2 64 $tabs = array();
danielebarchiesi@2 65 foreach ($quickset->getContents() as $i => $tab) {
danielebarchiesi@2 66 if (!empty($tab)) {
danielebarchiesi@2 67 $tablink = array(
danielebarchiesi@2 68 '#type' => 'link',
danielebarchiesi@2 69 '#title' => $quickset->translateString($tab->getTitle(), 'tab', $i),
danielebarchiesi@2 70 '#href' => $_GET['q'],
danielebarchiesi@2 71 '#options' => $this->construct_link_options($i),
danielebarchiesi@2 72 );
danielebarchiesi@2 73 if ($settings['ajax']) {
danielebarchiesi@2 74 $tab_settings = $tab->getSettings();
danielebarchiesi@2 75 $ajax_keys = $tab->getAjaxKeys();
danielebarchiesi@2 76 $ajax_args = array();
danielebarchiesi@2 77 foreach ($ajax_keys as $key) {
danielebarchiesi@2 78 $ajax_args[] = $tab_settings[$key];
danielebarchiesi@2 79 }
danielebarchiesi@2 80 $ajax_path = $quickset->getAjaxPath($i, $tab->getType());
danielebarchiesi@2 81 $ajax_href = $ajax_path . '/'. implode('/', $ajax_args);
danielebarchiesi@2 82 $tablink['#ajax'] = array(
danielebarchiesi@2 83 'progress' => array('message' => '', 'type' => 'throbber'),
danielebarchiesi@2 84 'path' => $ajax_href,
danielebarchiesi@2 85 );
danielebarchiesi@2 86 }
danielebarchiesi@2 87 $tabs[$i] = $tablink;
danielebarchiesi@2 88 }
danielebarchiesi@2 89 }
danielebarchiesi@2 90 return $tabs;
danielebarchiesi@2 91 }
danielebarchiesi@2 92
danielebarchiesi@2 93 /**
danielebarchiesi@2 94 * Add any necessary js, css and libraries for the render array.
danielebarchiesi@2 95 */
danielebarchiesi@2 96 protected function add_attached() {
danielebarchiesi@2 97 $attached = array(
danielebarchiesi@2 98 'css' => array(
danielebarchiesi@2 99 array('data' => drupal_get_path('module', 'quicktabs') .'/css/quicktabs.css'),
danielebarchiesi@2 100 ),
danielebarchiesi@2 101 'js' => array(
danielebarchiesi@2 102 array('data' => drupal_get_path('module', 'quicktabs') . '/js/quicktabs.js'),
danielebarchiesi@2 103 array('data' => 'misc/progress.js', 'weight' => JS_LIBRARY),
danielebarchiesi@2 104 ),
danielebarchiesi@2 105 );
danielebarchiesi@2 106 $settings = $this->quickset->getSettings();
danielebarchiesi@2 107 // Add the custom style css if a custom style has been set.
danielebarchiesi@2 108 $style_css = quicktabs_get_css($settings['style']);
danielebarchiesi@2 109 if (!empty($style_css)) {
danielebarchiesi@2 110 $attached['css'][] = $style_css;
danielebarchiesi@2 111 }
danielebarchiesi@2 112 // Prepare a tab_settings array for passing the tab info to our JavaScript.
danielebarchiesi@2 113 $tab_settings = array();
danielebarchiesi@2 114 foreach ($this->quickset->getContents() as $i => $content) {
danielebarchiesi@2 115 if (!empty($content)) {
danielebarchiesi@2 116 $tab_settings[$i] = $content->getSettings();
danielebarchiesi@2 117 }
danielebarchiesi@2 118 }
danielebarchiesi@2 119 // Add our JS settings
danielebarchiesi@2 120 $javascript = drupal_add_js();
danielebarchiesi@2 121 foreach ($javascript['settings']['data'] as $key => $settings) {
danielebarchiesi@2 122 if (key($settings) == 'quicktabs') {
danielebarchiesi@2 123 $qtkey = $key;
danielebarchiesi@2 124 break;
danielebarchiesi@2 125 }
danielebarchiesi@2 126 }
danielebarchiesi@2 127 $name = $this->quickset->getName();
danielebarchiesi@2 128 if (!isset($qtkey) || (isset($javascript['settings']['data'][$qtkey]['quicktabs'])
danielebarchiesi@2 129 && !array_key_exists('qt_' . $name, $javascript['settings']['data'][$qtkey]['quicktabs']))) {
danielebarchiesi@2 130 $quicktabs_array = array_merge(array('name' => $name, 'tabs' => $tab_settings), $settings);
danielebarchiesi@2 131 $attached['js'][] = array('data' => array('quicktabs' => array('qt_' . $name => $quicktabs_array)), 'type' => 'setting');
danielebarchiesi@2 132 }
danielebarchiesi@2 133 return $attached;
danielebarchiesi@2 134 }
danielebarchiesi@6 135
danielebarchiesi@2 136 /**
danielebarchiesi@2 137 * Helper function to construct link options for tab links.
danielebarchiesi@2 138 */
danielebarchiesi@2 139 protected function construct_link_options($tabkey) {
danielebarchiesi@2 140 $qt_name = $this->quickset->getName();
danielebarchiesi@6 141 $settings = $this->quickset->getSettings();
danielebarchiesi@6 142
danielebarchiesi@2 143 $id = 'quicktabs-tab-' . implode('-', array($qt_name, $tabkey));
danielebarchiesi@6 144
danielebarchiesi@2 145 // Need to construct the correct querystring for the tab links.
danielebarchiesi@2 146 $query = drupal_get_query_parameters(NULL, array("qt-$qt_name", 'q', 'page'));
danielebarchiesi@2 147 $query["qt-{$qt_name}"] = $tabkey;
danielebarchiesi@6 148
danielebarchiesi@2 149 $link_options = array(
danielebarchiesi@2 150 'attributes' => array(
danielebarchiesi@2 151 'id' => $id,
danielebarchiesi@2 152 ),
danielebarchiesi@2 153 'query' => $query,
danielebarchiesi@2 154 'fragment' => 'qt-' . $qt_name,
danielebarchiesi@6 155 'html' => isset($settings['html']) ? $settings['html'] : FALSE,
danielebarchiesi@2 156 );
danielebarchiesi@2 157 return $link_options;
danielebarchiesi@2 158 }
danielebarchiesi@6 159 }