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

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents b74b41bb73f0
children 134d4b2e75f6
rev   line source
danielebarchiesi@2 1 <?php
danielebarchiesi@2 2
danielebarchiesi@2 3 /**
danielebarchiesi@2 4 * Class for tab content of type "view" - this is for rendering a view as tab
danielebarchiesi@2 5 * content.
danielebarchiesi@2 6 */
danielebarchiesi@2 7 class QuickViewContent extends QuickContent {
danielebarchiesi@2 8
danielebarchiesi@2 9 // Each view that we render, whether via ajax or not, will need a unique DOM
danielebarchiesi@2 10 // id. Unfortunately we can only control the ones that Quicktabs is responsible
danielebarchiesi@2 11 // for, so if there are other views on the page, there may be duplicate ids.
danielebarchiesi@2 12 static $view_dom_id = 1;
danielebarchiesi@2 13
danielebarchiesi@2 14 public static function getType() {
danielebarchiesi@2 15 return 'view';
danielebarchiesi@2 16 }
danielebarchiesi@2 17
danielebarchiesi@2 18 public function optionsForm($delta, $qt) {
danielebarchiesi@2 19 $tab = $this->settings;
danielebarchiesi@2 20 $form = array();
danielebarchiesi@2 21 $views = quicktabs_get_views();
danielebarchiesi@2 22 $views_keys = array_keys($views);
danielebarchiesi@2 23
danielebarchiesi@2 24 $selected_view = (isset($tab['vid']) ? $tab['vid'] : (isset($views_keys[0]) ? $views_keys[0] : ''));
danielebarchiesi@2 25 $form['view']['vid'] = array(
danielebarchiesi@2 26 '#type' => 'select',
danielebarchiesi@2 27 '#options' => $views,
danielebarchiesi@2 28 '#default_value' => $selected_view,
danielebarchiesi@2 29 '#title' => t('Select a view'),
danielebarchiesi@2 30 '#ajax' => array(
danielebarchiesi@2 31 'callback' => '_quicktabs_replace_view_displays_callback',
danielebarchiesi@2 32 ),
danielebarchiesi@2 33 );
danielebarchiesi@2 34 $form['view']['display'] = array(
danielebarchiesi@2 35 '#type' => 'select',
danielebarchiesi@2 36 '#title' => 'display',
danielebarchiesi@2 37 '#options' => _quicktabs_get_views_displays($selected_view),
danielebarchiesi@2 38 '#default_value' => isset($tab['display']) ? $tab['display'] : '',
danielebarchiesi@2 39 '#prefix' => '<div id="view-display-dropdown-' . $delta . '">',
danielebarchiesi@2 40 '#suffix' => '</div>'
danielebarchiesi@2 41 );
danielebarchiesi@2 42 $form['view']['args'] = array(
danielebarchiesi@2 43 '#type' => 'textfield',
danielebarchiesi@2 44 '#title' => 'arguments',
danielebarchiesi@2 45 '#size' => '40',
danielebarchiesi@2 46 '#required' => FALSE,
danielebarchiesi@2 47 '#default_value' => isset($tab['args']) ? $tab['args'] : '',
danielebarchiesi@2 48 '#description' => t('Additional arguments to send to the view as if they were part of the URL in the form of arg1/arg2/arg3. You may use %0, %1, ..., %N to grab arguments from the URL.'),
danielebarchiesi@2 49 );
danielebarchiesi@2 50 return $form;
danielebarchiesi@2 51 }
danielebarchiesi@2 52
danielebarchiesi@2 53 public function __construct($item) {
danielebarchiesi@2 54 parent::__construct($item);
danielebarchiesi@2 55 if (module_exists('views')) views_add_js('ajax_view');
danielebarchiesi@2 56 $this->settings['view_path'] = rawurlencode($_GET['q']);
danielebarchiesi@2 57 $this->settings['view_dom_id'] = self::$view_dom_id++;
danielebarchiesi@2 58 if (isset($item['args'])) {
danielebarchiesi@2 59 $url_args = arg();
danielebarchiesi@2 60 $args = $item['args'];
danielebarchiesi@2 61
danielebarchiesi@2 62 foreach ($url_args as $id => $arg) {
danielebarchiesi@2 63 $args = str_replace("%$id", $arg, $args);
danielebarchiesi@2 64 }
danielebarchiesi@2 65 $args = preg_replace(',/?(%\d),', '', $args);
danielebarchiesi@2 66 if (!empty($args)) {
danielebarchiesi@2 67 $this->settings['ajax_args'] = rawurlencode($args);
danielebarchiesi@2 68 $args_array = explode('/', $args);
danielebarchiesi@2 69 }
danielebarchiesi@2 70 else {
danielebarchiesi@2 71 $this->settings['ajax_args'] = '';
danielebarchiesi@2 72 $args_array = array();
danielebarchiesi@2 73 }
danielebarchiesi@2 74 $this->settings['actual_args'] = $args_array;
danielebarchiesi@2 75 }
danielebarchiesi@2 76 }
danielebarchiesi@2 77
danielebarchiesi@2 78 public function render($hide_empty = FALSE, $args = array()) {
danielebarchiesi@2 79 if (!empty($args)) {
danielebarchiesi@2 80 // The args have been passed in from an ajax request. We use Views' own
danielebarchiesi@2 81 // ajax functionality to get the view.
danielebarchiesi@2 82 // The first element of the args array is the qt_name, which we don't need
danielebarchiesi@2 83 // for this content type.
danielebarchiesi@2 84 array_shift($args);
danielebarchiesi@2 85 // The order of these arguments corresponds to the array returned in
danielebarchiesi@2 86 // $this->getAjaxKeys().
danielebarchiesi@2 87 $_REQUEST['view_name'] = array_shift($args);
danielebarchiesi@2 88 $_REQUEST['view_display_id'] = array_shift($args);
danielebarchiesi@2 89 $_REQUEST['view_dom_id'] = array_shift($args);
danielebarchiesi@2 90 $view_path = array_shift($args);
danielebarchiesi@2 91 $_REQUEST['view_path'] = rawurldecode($view_path);
danielebarchiesi@2 92 if (!empty($args)) {
danielebarchiesi@2 93 $view_args = array_shift($args);
danielebarchiesi@2 94 $_REQUEST['view_args'] = rawurldecode($view_args);
danielebarchiesi@2 95 }
danielebarchiesi@2 96
danielebarchiesi@2 97 module_load_include('inc', 'views', 'includes/ajax');
danielebarchiesi@2 98 $view = views_ajax();
danielebarchiesi@2 99 foreach ($view['#commands'] as $command) {
danielebarchiesi@2 100 if ($command['command'] == 'insert') {
danielebarchiesi@2 101 return array('#markup' => trim($command['data']));
danielebarchiesi@2 102 }
danielebarchiesi@2 103 }
danielebarchiesi@2 104 return array();
danielebarchiesi@2 105 }
danielebarchiesi@2 106
danielebarchiesi@2 107 // Non-ajax rendering of a view.
danielebarchiesi@2 108 if ($this->rendered_content) {
danielebarchiesi@2 109 return $this->rendered_content;
danielebarchiesi@2 110 }
danielebarchiesi@2 111 $item = $this->settings;
danielebarchiesi@2 112 $output = array();
danielebarchiesi@2 113 if (isset($item['vid'])) {
danielebarchiesi@2 114 if (module_exists('views')) {
danielebarchiesi@2 115 if ($view = views_get_view($item['vid'])) {
danielebarchiesi@2 116 if ($view->access($item['display'])) {
danielebarchiesi@2 117 $view->set_display($item['display']);
danielebarchiesi@2 118 $view->set_arguments($item['actual_args']);
danielebarchiesi@2 119 $view_output = $view->preview();
danielebarchiesi@2 120 if (!empty($view->result) || $view->display_handler->get_option('empty') || !empty($view->style_plugin->definition['even empty'])) {
danielebarchiesi@2 121 $output['#markup'] = $view_output;
danielebarchiesi@2 122 }
danielebarchiesi@2 123 }
danielebarchiesi@2 124 elseif (!$hide_empty) {
danielebarchiesi@2 125 $output['#markup'] = theme('quicktabs_tab_access_denied', array('tab' => $item));
danielebarchiesi@2 126 }
danielebarchiesi@2 127 $view->destroy();
danielebarchiesi@2 128 }
danielebarchiesi@2 129 }
danielebarchiesi@2 130 elseif (!$hide_empty) {
danielebarchiesi@2 131 $output['#markup'] = t('Views module is not enabled, cannot display content.');
danielebarchiesi@2 132 }
danielebarchiesi@2 133 }
danielebarchiesi@2 134 $this->rendered_content = $output;
danielebarchiesi@2 135 return $output;
danielebarchiesi@2 136 }
danielebarchiesi@2 137
danielebarchiesi@2 138 public function getAjaxKeys() {
danielebarchiesi@2 139 return array('vid', 'display', 'view_dom_id', 'view_path', 'ajax_args');
danielebarchiesi@2 140 }
danielebarchiesi@2 141 }