You are here

function FieldPluginBase::render_text in Views (for Drupal 7) 8.3

Perform an advanced text render for the item.

This is separated out as some fields may render lists, and this allows each item to be handled individually.

1 call to FieldPluginBase::render_text()
FieldPluginBase::advanced_render in lib/Drupal/views/Plugin/views/field/FieldPluginBase.php
Render a field using advanced settings.

File

lib/Drupal/views/Plugin/views/field/FieldPluginBase.php, line 1202
Definition of Drupal\views\Plugin\views\field\FieldPluginBase.

Class

FieldPluginBase
Base field handler that has no options and renders an unformatted field.

Namespace

Drupal\views\Plugin\views\field

Code

function render_text($alter) {
  $value = $this->last_render;
  if (!empty($alter['alter_text']) && $alter['text'] !== '') {
    $tokens = $this
      ->get_render_tokens($alter);
    $value = $this
      ->render_altered($alter, $tokens);
  }
  if (!empty($this->options['alter']['trim_whitespace'])) {
    $value = trim($value);
  }

  // Check if there should be no further rewrite for empty values.
  $no_rewrite_for_empty = $this->options['hide_alter_empty'] && $this
    ->is_value_empty($this->original_value, $this->options['empty_zero']);

  // Check whether the value is empty and return nothing, so the field isn't rendered.
  // First check whether the field should be hidden if the value(hide_alter_empty = TRUE) /the rewrite is empty (hide_alter_empty = FALSE).
  // For numeric values you can specify whether "0"/0 should be empty.
  if (($this->options['hide_empty'] && empty($value) || $alter['phase'] != VIEWS_HANDLER_RENDER_TEXT_PHASE_EMPTY && $no_rewrite_for_empty) && $this
    ->is_value_empty($value, $this->options['empty_zero'], FALSE)) {
    return '';
  }

  // Only in empty phase.
  if ($alter['phase'] == VIEWS_HANDLER_RENDER_TEXT_PHASE_EMPTY && $no_rewrite_for_empty) {

    // If we got here then $alter contains the value of "No results text"
    // and so there is nothing left to do.
    return $value;
  }
  if (!empty($alter['strip_tags'])) {
    $value = strip_tags($value, $alter['preserve_tags']);
  }
  $suffix = '';
  if (!empty($alter['trim']) && !empty($alter['max_length'])) {
    $length = strlen($value);
    $value = $this
      ->render_trim_text($alter, $value);
    if ($this->options['alter']['more_link'] && strlen($value) < $length) {
      $tokens = $this
        ->get_render_tokens($alter);
      $more_link_text = $this->options['alter']['more_link_text'] ? $this->options['alter']['more_link_text'] : t('more');
      $more_link_text = strtr(filter_xss_admin($more_link_text), $tokens);
      $more_link_path = $this->options['alter']['more_link_path'];
      $more_link_path = strip_tags(decode_entities(strtr($more_link_path, $tokens)));

      // Take sure that paths which was runned through url() does work as well.
      $base_path = base_path();

      // Checks whether the path starts with the base_path.
      if (strpos($more_link_path, $base_path) === 0) {
        $more_link_path = drupal_substr($more_link_path, drupal_strlen($base_path));
      }
      $more_link = l($more_link_text, $more_link_path, array(
        'attributes' => array(
          'class' => array(
            'views-more-link',
          ),
        ),
      ));
      $suffix .= " " . $more_link;
    }
  }
  if (!empty($alter['nl2br'])) {
    $value = nl2br($value);
  }
  $this->last_render_text = $value;
  if (!empty($alter['make_link']) && !empty($alter['path'])) {
    if (!isset($tokens)) {
      $tokens = $this
        ->get_render_tokens($alter);
    }
    $value = $this
      ->render_as_link($alter, $value, $tokens);
  }
  return $value . $suffix;
}