1 views_handler_field.inc | views_handler_field::render_text($alter) |
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.
File
- core/
modules/ views/ handlers/ views_handler_field.inc, line 1192 - @todo.
Class
- views_handler_field
- Base field handler that has no options and renders an unformatted 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 (!is_null($value) && !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)));
// Make sure that the path that was run through url() works 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 = backdrop_substr($more_link_path, backdrop_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)) {
if (strpos($alter['path'], '[') !== FALSE) {
$tokens = $this->get_render_tokens($alter);
}
else {
$tokens = array();
}
}
$value = $this->render_as_link($alter, $value, $tokens);
}
return $value . $suffix;
}