class chado_views_handler_field

  1. 3.x tripal_chado/views_handlers/chado_views_handler_field.inc chado_views_handler_field
  2. 1.x tripal_views/views/handlers/chado_views_handler_field.inc chado_views_handler_field

@file A chado wrapper for the views_handler_field.

Handles fields which may be aggregated during the chado join process. This field will render an aggregated field as a pre_rendered list and will dynamically detect whether the field is aggregated or not.

Hierarchy

Expanded class hierarchy of chado_views_handler_field

3 string references to 'chado_views_handler_field'
tripal_views_get_integration_array_for_chado_table in tripal_views/api/tripal_views.api.inc
Returns the array needed to integrate a given chado table with views
tripal_views_integration_form in tripal_views/includes/tripal_views_integration.inc
Purpose: defines the web form used for specifing the base table, joins and handlers when integrating a table with views. This form is used for both creating a new record and editing an existing record.
tripal_views_views_handlers in tripal_views/tripal_views.views.inc
Implements hook_views_handlers()

File

tripal_views/views/handlers/chado_views_handler_field.inc, line 11
A chado wrapper for the views_handler_field.

View source
class chado_views_handler_field extends views_handler_field {

  function init(&$view, $options) {
    include_once ('chado_wrapper_functions.inc');
    parent::init($view, $options);
  }

  /**
   * Defines the defaults for the options form
   */
  function option_definition() {
    $options = parent::option_definition();

    $options['type'] = array('default' => 'separator');
    $options['separator'] = array('default' => ', ');

    return $options;
  }

  /**
   * Defines the options form (form available to admin when they add a field to a view)
   */
  function options_form(&$form, &$form_state) {
    parent::options_form($form, $form_state);

    // Add a link to node checkbox
    // but only if this base table is linked to a node and this field is from the base_table
    if (tripal_core_is_tripal_node_type($this->table) && $this->table == $this->view->base_table) {
      // If there is a Node: NID field then show a link to node checkbox
      if (isset($this->view->display['default']->display_options['fields']['nid'])) {
        $form['link_to_node'] = array(
          '#type' => 'checkbox',
          '#title' => t('Link to Node'),
          '#description' => t('If a given row is associated with a drupal node then '
            . 'this field will appear as a link, linking the user to that node. Otherwise,'
            . ' no link will be displayed.'),
          '#default_value' => $this->options['link_to_node'],
        );
      }
      // Otherwise inform the user that they need to add a Node:Nid field
      // to get this functionality
      else {
        $form['link_to_node'] = array(
          '#type' => 'item',
          '#value' => "This field has the ability to link to it's corresponding node. "
            . "However, you first need to add the NID field associated with the node. "
            . "Simple set the NID field to hidden when adding it to ensure it's not "
            . "shown in the resulting view."
        );
      }
    }

    $form['type'] = array(
      '#type' => 'radios',
      '#title' => t('Display type'),
      '#options' => array(
        'ul' => t('Unordered list'),
        'ol' => t('Ordered list'),
        'separator' => t('Simple separator'),
      ),
      '#default_value' => $this->options['type'],
    );

    $form['separator'] = array(
      '#type' => 'textfield',
      '#title' => t('Separator'),
      '#default_value' => $this->options['separator'],
      '#process' => array('views_process_dependency'),
      '#dependency' => array('radio:options[type]' => array('separator')),
    );
  }

  /**
   * Determines whether the current field is aggregated or not
   * Note: The parent::query() takes care of adding the field to the query, etc.
   */
  function query() {
    parent::query();
    $this->aggregated = chado_wrapper_is_aggregated_by_join($this);
  }

  /**
   * Splits the aggregated values up for use in rendering
   */
  function pre_render($values) {

    // further check the results to see if this field is a postgresql array
    $this->aggregated = chado_wrapper_is_aggregated_by_result($this, $values);

    // Split Aggregated Results
    chado_wrapper_split_array_agg_results($this, $values);

  }

  /**
   * Render the field.
   *
   * Note: Checks to see if we have an array or simple field. If we have an array, then
   *   split it up and render each part using the parent render functionality.
   *
   * @param $values
   *   The values retrieved from the database.
   */
  function render($values) {
    if ($this->options['link_to_node']) {
      $link_text = chado_wrapper_render_items($this, $values);
      return $this->render_node_link($link_text, $values);
    }
    else {
      return chado_wrapper_render_items($this, $values);
    }
  }

  /**
   * Will render the supplied text as a link to the node
   *
   * @param $link_text
   *  The text to render as a link (ie; the text that would normally become underlined
   *
   * @return
   *  A rendered link to the node based on the nid field
   */
  function render_node_link($link_text, $values) {

    $node_field = $this->view->field['nid'];
    if (isset($node_field->aliases['nid'])) {
      $nid = $values->{$node_field->aliases['nid']};
    }

    if ($nid) {
      return l($link_text, 'node/' . $nid);
    }
    else {
      return $link_text;
    }
  }

  function parent_render($val) {
    return parent::render($val);
  }

}

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
chado_views_handler_field::init function init the handler with necessary data. Overrides views_handler_field::init
chado_views_handler_field::options_form function Defines the options form (form available to admin when they add a field to a view) Overrides views_handler_field::options_form
chado_views_handler_field::option_definition function Defines the defaults for the options form Overrides views_handler_field::option_definition
chado_views_handler_field::parent_render function
chado_views_handler_field::pre_render function Splits the aggregated values up for use in rendering Overrides views_handler_field::pre_render
chado_views_handler_field::query function Determines whether the current field is aggregated or not Note: The parent::query() takes care of adding the field to the query, etc. Overrides views_handler_field::query
chado_views_handler_field::render function Render the field. Overrides views_handler_field::render
chado_views_handler_field::render_node_link function Will render the supplied text as a link to the node
views_handler::accept_exposed_input function Take input from exposed filters and assign to this handler, if necessary.
views_handler::access function Check whether current user has access to this handler.
views_handler::broken function Determine if the handler is considered 'broken', meaning it's a a placeholder used when a handler can't be found.
views_handler::can_expose function Determine if a handler can be exposed.
views_handler::ensure_my_table function Ensure the main table for this handler is in the query. This is used a lot.
views_handler::exposed_form function Render our chunk of the exposed filter form when selecting
views_handler::exposed_info function Get information about the exposed form for the form renderer.
views_handler::exposed_submit function Submit the exposed filter form
views_handler::exposed_validate function Validate the exposed filter form
views_handler::expose_options function Set new exposed option defaults when exposed setting is flipped on.
views_handler::extra_options function Provide defaults for the handler.
views_handler::extra_options_form function Provide a form for setting options.
views_handler::extra_options_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler::extra_options_validate function Validate the options form.
views_handler::get_join function Get the join object that should be used for this handler.
views_handler::has_extra_options function If a handler has 'extra options' it will get a little settings widget and another form called extra_options.
views_handler::is_exposed function Determine if this item is 'exposed', meaning it provides form elements to let users modify the view.
views_handler::needs_style_plugin function Determine if the argument needs a style plugin.
views_handler::options_submit function Perform any necessary changes to the form values prior to storage. There is no need for this function to actually store the data.
views_handler::options_validate function Validate the options form.
views_handler::pre_query function Run before the view is built.
views_handler::set_relationship function Called just prior to query(), this lets a handler set up any relationship it needs.
views_handler::store_exposed_input function If set to remember exposed input in the session, store it there.
views_handler::ui_name function Return a string representing this handler's name in the UI.
views_handler::validate function Validates the handler against the complete View.
views_handler_field::add_additional_fields function Add 'additional' fields to the query.
views_handler_field::add_self_tokens function Add any special tokens this field might use for itself.
views_handler_field::admin_summary function Provide extra data to the administration form Overrides views_handler::admin_summary
views_handler_field::advanced_render function Render a field using advanced settings.
views_handler_field::allow_advanced_render function Determine if this field can allow advanced rendering.
views_handler_field::click_sort function Called to determine what to tell the clicksorter.
views_handler_field::click_sortable function Determine if this field is click sortable.
views_handler_field::construct function Construct a new field handler. Overrides views_object::construct
views_handler_field::document_self_tokens function Document any special tokens this field might use for itself.
views_handler_field::element_type function Return DIV or SPAN based upon the field's element type.
views_handler_field::get_render_tokens function Get the 'render' tokens to use for advanced rendering.
views_handler_field::label function Get this field's label.
views_handler_field::render_altered function Render this field as altered text, from a fieldset set by the user.
views_handler_field::render_as_link function Render this field as a link, with the info from a fieldset set by the user.
views_handler_field::render_text function Perform an advanced text render for the item.
views_handler_field::render_trim_text function Trim the field down to the specified length.
views_handler_field::theme function Call out to the theme() function, which probably just calls render() but allows sites to override output fairly easily.
views_handler_field::theme_functions function
views_object::destroy function
views_object::options function Set default options on this object. Called by the constructor in a complex chain to deal with backward compatibility.
views_object::set_default_options function Set default options. For backward compatibility, it sends the options array; this is a feature that will likely disappear at some point.
views_object::set_definition function Let the handler know what its full definition is.
views_object::unpack_options function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away.
views_object::_set_option_defaults function