annotate sites/all/modules/views/handlers/views_handler_field_contextual_links.inc @ 13:134d4b2e75f6

updated quicktabs and google analytics modules
author danieleb <danielebarchiesi@me.com>
date Tue, 29 Oct 2013 13:48:59 +0000
parents ff03f76ab3fe
children
rev   line source
danielebarchiesi@0 1 <?php
danielebarchiesi@0 2
danielebarchiesi@0 3 /**
danielebarchiesi@0 4 * @file
danielebarchiesi@0 5 * Definition of views_handler_field_contextual_links.
danielebarchiesi@0 6 */
danielebarchiesi@0 7
danielebarchiesi@0 8 /**
danielebarchiesi@0 9 * Provides a handler that adds contextual links.
danielebarchiesi@0 10 *
danielebarchiesi@0 11 * @ingroup views_field_handlers
danielebarchiesi@0 12 */
danielebarchiesi@0 13 class views_handler_field_contextual_links extends views_handler_field {
danielebarchiesi@0 14 function option_definition() {
danielebarchiesi@0 15 $options = parent::option_definition();
danielebarchiesi@0 16
danielebarchiesi@0 17 $options['fields'] = array('default' => array());
danielebarchiesi@0 18 $options['destination'] = array('default' => TRUE, 'bool' => TRUE);
danielebarchiesi@0 19
danielebarchiesi@0 20 return $options;
danielebarchiesi@0 21 }
danielebarchiesi@0 22
danielebarchiesi@0 23 function options_form(&$form, &$form_state) {
danielebarchiesi@0 24 $all_fields = $this->view->display_handler->get_field_labels();
danielebarchiesi@0 25 // Offer to include only those fields that follow this one.
danielebarchiesi@0 26 $field_options = array_slice($all_fields, 0, array_search($this->options['id'], array_keys($all_fields)));
danielebarchiesi@0 27 $form['fields'] = array(
danielebarchiesi@0 28 '#type' => 'checkboxes',
danielebarchiesi@0 29 '#title' => t('Fields'),
danielebarchiesi@0 30 '#description' => t('Fields to be included as contextual links.'),
danielebarchiesi@0 31 '#options' => $field_options,
danielebarchiesi@0 32 '#default_value' => $this->options['fields'],
danielebarchiesi@0 33 );
danielebarchiesi@0 34 $form['destination'] = array(
danielebarchiesi@0 35 '#type' => 'checkbox',
danielebarchiesi@0 36 '#title' => t('Include destination'),
danielebarchiesi@0 37 '#description' => t('Include a "destination" parameter in the link to return the user to the original view upon completing the contextual action.'),
danielebarchiesi@0 38 '#default_value' => $this->options['destination'],
danielebarchiesi@0 39 );
danielebarchiesi@0 40 }
danielebarchiesi@0 41
danielebarchiesi@0 42 function pre_render(&$values) {
danielebarchiesi@0 43 // Add a row plugin css class for the contextual link.
danielebarchiesi@0 44 $class = 'contextual-links-region';
danielebarchiesi@0 45 if (!empty($this->view->style_plugin->options['row_class'])) {
danielebarchiesi@0 46 $this->view->style_plugin->options['row_class'] .= " $class";
danielebarchiesi@0 47 }
danielebarchiesi@0 48 else {
danielebarchiesi@0 49 $this->view->style_plugin->options['row_class'] = $class;
danielebarchiesi@0 50 }
danielebarchiesi@0 51 }
danielebarchiesi@0 52
danielebarchiesi@0 53 /**
danielebarchiesi@0 54 * Render the contextual fields.
danielebarchiesi@0 55 */
danielebarchiesi@0 56 function render($values) {
danielebarchiesi@0 57 $links = array();
danielebarchiesi@0 58 foreach ($this->options['fields'] as $field) {
danielebarchiesi@0 59 if (empty($this->view->style_plugin->rendered_fields[$this->view->row_index][$field])) {
danielebarchiesi@0 60 continue;
danielebarchiesi@0 61 }
danielebarchiesi@0 62 $title = $this->view->field[$field]->last_render_text;
danielebarchiesi@0 63 $path = '';
danielebarchiesi@0 64 if (!empty($this->view->field[$field]->options['alter']['path'])) {
danielebarchiesi@0 65 $path = $this->view->field[$field]->options['alter']['path'];
danielebarchiesi@0 66 }
danielebarchiesi@0 67 if (!empty($title) && !empty($path)) {
danielebarchiesi@0 68 // Make sure that tokens are replaced for this paths as well.
danielebarchiesi@0 69 $tokens = $this->get_render_tokens(array());
danielebarchiesi@0 70 $path = strip_tags(decode_entities(strtr($path, $tokens)));
danielebarchiesi@0 71
danielebarchiesi@0 72 $links[$field] = array(
danielebarchiesi@0 73 'href' => $path,
danielebarchiesi@0 74 'title' => $title,
danielebarchiesi@0 75 );
danielebarchiesi@0 76 if (!empty($this->options['destination'])) {
danielebarchiesi@0 77 $links[$field]['query'] = drupal_get_destination();
danielebarchiesi@0 78 }
danielebarchiesi@0 79 }
danielebarchiesi@0 80 }
danielebarchiesi@0 81
danielebarchiesi@0 82 if (!empty($links)) {
danielebarchiesi@0 83 $build = array(
danielebarchiesi@0 84 '#prefix' => '<div class="contextual-links-wrapper">',
danielebarchiesi@0 85 '#suffix' => '</div>',
danielebarchiesi@0 86 '#theme' => 'links__contextual',
danielebarchiesi@0 87 '#links' => $links,
danielebarchiesi@0 88 '#attributes' => array('class' => array('contextual-links')),
danielebarchiesi@0 89 '#attached' => array(
danielebarchiesi@0 90 'library' => array(array('contextual', 'contextual-links')),
danielebarchiesi@0 91 ),
danielebarchiesi@0 92 '#access' => user_access('access contextual links'),
danielebarchiesi@0 93 );
danielebarchiesi@0 94 return drupal_render($build);
danielebarchiesi@0 95 }
danielebarchiesi@0 96 else {
danielebarchiesi@0 97 return '';
danielebarchiesi@0 98 }
danielebarchiesi@0 99 }
danielebarchiesi@0 100
danielebarchiesi@0 101 function query() { }
danielebarchiesi@0 102 }