annotate sites/all/modules/quicktabs/plugins/QuickBlockContent.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 * Class for tab content of type "block" - this is for rendering a block as tab
danielebarchiesi@2 5 * content.
danielebarchiesi@2 6 */
danielebarchiesi@2 7 class QuickBlockContent extends QuickContent {
danielebarchiesi@2 8
danielebarchiesi@2 9 public static function getType() {
danielebarchiesi@2 10 return 'block';
danielebarchiesi@2 11 }
danielebarchiesi@2 12
danielebarchiesi@2 13 public function optionsForm($delta, $qt) {
danielebarchiesi@2 14 $tab = $this->settings;
danielebarchiesi@2 15 $form = array();
danielebarchiesi@2 16 $form['block']['bid'] = array(
danielebarchiesi@2 17 '#type' => 'select',
danielebarchiesi@2 18 '#options' => quicktabs_get_blocks(),
danielebarchiesi@2 19 '#default_value' => isset($tab['bid']) ? $tab['bid'] : '',
danielebarchiesi@2 20 '#title' => t('Select a block'),
danielebarchiesi@2 21 );
danielebarchiesi@2 22 $form['block']['hide_title'] = array(
danielebarchiesi@2 23 '#type' => 'checkbox',
danielebarchiesi@2 24 '#title' => t('Hide the title of this block'),
danielebarchiesi@2 25 '#default_value' => isset($tab['hide_title']) ? $tab['hide_title'] : 1,
danielebarchiesi@2 26 );
danielebarchiesi@2 27 return $form;
danielebarchiesi@2 28 }
danielebarchiesi@2 29
danielebarchiesi@2 30 public function render($hide_empty = FALSE, $args = array()) {
danielebarchiesi@2 31 if ($this->rendered_content) {
danielebarchiesi@2 32 return $this->rendered_content;
danielebarchiesi@2 33 }
danielebarchiesi@2 34 $output = array();
danielebarchiesi@2 35 $item = $this->settings;
danielebarchiesi@2 36 if (!empty($args)) {
danielebarchiesi@2 37 // The args have been passed in from an ajax request.
danielebarchiesi@2 38 $qt_name = array_shift($args);
danielebarchiesi@2 39 list($item['bid'], $item['hide_title']) = $args;
danielebarchiesi@2 40
danielebarchiesi@2 41 // Ensure the block is assigned to the requested quicktabs block. This test prevents
danielebarchiesi@2 42 // AJAX access to blocks that have not been added to an AJAX-enabled quicktabs block.
danielebarchiesi@2 43 $break = TRUE;
danielebarchiesi@2 44 $quicktabs = quicktabs_load($qt_name);
danielebarchiesi@2 45 // Ensure AJAX is enabled for the quicktabs block.
danielebarchiesi@2 46 if (!empty($quicktabs) && $quicktabs->ajax == 1) {
danielebarchiesi@2 47 // Ensure the requested tab has been added to the quicktabs block.
danielebarchiesi@2 48 foreach ($quicktabs->tabs as $quicktab) {
danielebarchiesi@2 49 if (isset($quicktab['bid']) && ($quicktab['bid'] == $item['bid'])) {
danielebarchiesi@2 50 $break = FALSE;
danielebarchiesi@2 51 break;
danielebarchiesi@2 52 }
danielebarchiesi@2 53 }
danielebarchiesi@2 54 }
danielebarchiesi@2 55 if ($break == TRUE) {
danielebarchiesi@2 56 if (!$hide_empty) {
danielebarchiesi@2 57 $output['#markup'] = theme('quicktabs_tab_access_denied', $item);
danielebarchiesi@2 58 }
danielebarchiesi@2 59 return $output;
danielebarchiesi@2 60 }
danielebarchiesi@2 61 }
danielebarchiesi@2 62
danielebarchiesi@2 63 if (isset($item['bid'])) {
danielebarchiesi@2 64 if (module_exists('block')) {
danielebarchiesi@2 65 $pos = strpos($item['bid'], '_delta_');
danielebarchiesi@2 66 $module = drupal_substr($item['bid'], 0, $pos);
danielebarchiesi@2 67 $delta = drupal_substr($item['bid'], $pos + 7);
danielebarchiesi@2 68
danielebarchiesi@2 69 $block = block_load($module, $delta);
danielebarchiesi@2 70 $block->region = 'quicktabs_tabpage';
danielebarchiesi@2 71
danielebarchiesi@2 72 if ($block_arr = _block_render_blocks(array($block))) {
danielebarchiesi@2 73 if ($item['hide_title']) {
danielebarchiesi@2 74 $block_arr["{$block->module}_{$block->delta}"]->subject = FALSE;
danielebarchiesi@2 75 }
danielebarchiesi@2 76 if (!empty($block_arr["{$block->module}_{$block->delta}"]->content)) {
danielebarchiesi@2 77 $build = _block_get_renderable_array($block_arr);
danielebarchiesi@2 78 $output = $build;
danielebarchiesi@2 79 }
danielebarchiesi@2 80 }
danielebarchiesi@2 81 }
danielebarchiesi@2 82 elseif (!$hide_empty) {
danielebarchiesi@2 83 $output['#markup'] = t('Block module is not enabled, cannot display content.');
danielebarchiesi@2 84 }
danielebarchiesi@2 85 }
danielebarchiesi@2 86 $this->rendered_content = $output;
danielebarchiesi@2 87 return $output;
danielebarchiesi@2 88 }
danielebarchiesi@2 89
danielebarchiesi@2 90 public function getAjaxKeys() {
danielebarchiesi@2 91 return array('bid', 'hide_title');
danielebarchiesi@2 92 }
danielebarchiesi@2 93 }