You are here

function itoggle_views_handler_field::render in iToggle 7.2

Same name and namespace in other branches
  1. 7 modules/views/itoggle_views_handler.inc \itoggle_views_handler_field::render()

Render the trigger field and its linked popup information.

Overrides views_handler_field::render

File

modules/views/itoggle_views_handler_field.inc, line 45
Views field handler for iToggle Views.

Class

itoggle_views_handler_field
A handler to provide a custom field for iToggle.

Code

function render($values) {
  $type = $this->_itoggle['type'];
  $property = $this->_itoggle['property'];
  $id = $this->_itoggle['id'];

  // Special case with comments.
  if ($type === 'node' && isset($values->comment_nid)) {
    $values->nid = $values->comment_nid;
  }
  if (isset($values->{$id})) {
    $id = $values->{$id};

    // Check if property value already exists in $values array before
    // loading entity.
    if (array_key_exists($property, $values)) {
      $value = $values->{$property};
    }
    else {
      if (array_key_exists("{$type}_{$property}", $values)) {
        $value = $values->{"{$type}_{$property}"};
      }
      else {
        $entity = current(entity_load($type, array(
          $id,
        )));
        $value = $entity->{$property};
      }
    }
    $clickable = $this->options['itoggle_clickable'];
    $display_type = $this->options['itoggle_display_type'];
    return array(
      '#theme' => 'itoggle',
      '#type' => $type,
      '#id' => $id,
      '#property' => $property,
      '#checked' => (bool) $value,
      '#scope' => 'entity',
      '#clickable' => $clickable,
      '#display_type' => $display_type,
    );
  }
  return NULL;
}