danielebarchiesi@0: array()); danielebarchiesi@0: $options['destination'] = array('default' => TRUE, 'bool' => TRUE); danielebarchiesi@0: danielebarchiesi@0: return $options; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: function options_form(&$form, &$form_state) { danielebarchiesi@0: $all_fields = $this->view->display_handler->get_field_labels(); danielebarchiesi@0: // Offer to include only those fields that follow this one. danielebarchiesi@0: $field_options = array_slice($all_fields, 0, array_search($this->options['id'], array_keys($all_fields))); danielebarchiesi@0: $form['fields'] = array( danielebarchiesi@0: '#type' => 'checkboxes', danielebarchiesi@0: '#title' => t('Fields'), danielebarchiesi@0: '#description' => t('Fields to be included as contextual links.'), danielebarchiesi@0: '#options' => $field_options, danielebarchiesi@0: '#default_value' => $this->options['fields'], danielebarchiesi@0: ); danielebarchiesi@0: $form['destination'] = array( danielebarchiesi@0: '#type' => 'checkbox', danielebarchiesi@0: '#title' => t('Include destination'), danielebarchiesi@0: '#description' => t('Include a "destination" parameter in the link to return the user to the original view upon completing the contextual action.'), danielebarchiesi@0: '#default_value' => $this->options['destination'], danielebarchiesi@0: ); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: function pre_render(&$values) { danielebarchiesi@0: // Add a row plugin css class for the contextual link. danielebarchiesi@0: $class = 'contextual-links-region'; danielebarchiesi@0: if (!empty($this->view->style_plugin->options['row_class'])) { danielebarchiesi@0: $this->view->style_plugin->options['row_class'] .= " $class"; danielebarchiesi@0: } danielebarchiesi@0: else { danielebarchiesi@0: $this->view->style_plugin->options['row_class'] = $class; danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Render the contextual fields. danielebarchiesi@0: */ danielebarchiesi@0: function render($values) { danielebarchiesi@0: $links = array(); danielebarchiesi@0: foreach ($this->options['fields'] as $field) { danielebarchiesi@0: if (empty($this->view->style_plugin->rendered_fields[$this->view->row_index][$field])) { danielebarchiesi@0: continue; danielebarchiesi@0: } danielebarchiesi@0: $title = $this->view->field[$field]->last_render_text; danielebarchiesi@0: $path = ''; danielebarchiesi@0: if (!empty($this->view->field[$field]->options['alter']['path'])) { danielebarchiesi@0: $path = $this->view->field[$field]->options['alter']['path']; danielebarchiesi@0: } danielebarchiesi@0: if (!empty($title) && !empty($path)) { danielebarchiesi@0: // Make sure that tokens are replaced for this paths as well. danielebarchiesi@0: $tokens = $this->get_render_tokens(array()); danielebarchiesi@0: $path = strip_tags(decode_entities(strtr($path, $tokens))); danielebarchiesi@0: danielebarchiesi@0: $links[$field] = array( danielebarchiesi@0: 'href' => $path, danielebarchiesi@0: 'title' => $title, danielebarchiesi@0: ); danielebarchiesi@0: if (!empty($this->options['destination'])) { danielebarchiesi@0: $links[$field]['query'] = drupal_get_destination(); danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: if (!empty($links)) { danielebarchiesi@0: $build = array( danielebarchiesi@0: '#prefix' => '