Created
December 20, 2011 13:52
-
-
Save derhasi/1501628 to your computer and use it in GitHub Desktop.
Drupal: Override views table header labels to accept html output.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Preprocess views-view-table.tpl.php. | |
* | |
* Recreates column labels to accept html tags and do not check_plain. | |
* @see template_preprocess_views_view_table(). | |
*/ | |
function mytheme_preprocess_views_view_table(&$vars) { | |
$view = $vars['view']; | |
$options = $view->style_plugin->options; | |
$handler = $view->style_plugin; | |
$fields = &$view->field; | |
$columns = $handler->sanitize_columns($options['columns'], $fields); | |
$active = !empty($handler->active) ? $handler->active : ''; | |
$order = !empty($handler->order) ? $handler->order : 'asc'; | |
$query = tablesort_get_query_parameters(); | |
if (isset($view->exposed_raw_input)) { | |
$query += $view->exposed_raw_input; | |
} | |
foreach ($columns as $field => $column) { | |
// render the header labels | |
if ($field == $column && empty($fields[$field]->options['exclude'])) { | |
$label = filter_xss_admin(!empty($fields[$field]) ? $fields[$field]->label() : ''); // THIS is the only line changed so far. | |
if (empty($options['info'][$field]['sortable']) || !$fields[$field]->click_sortable()) { | |
$vars['header'][$field] = $label; | |
} | |
else { | |
$initial = !empty($options['info'][$field]['default_sort_order']) ? $options['info'][$field]['default_sort_order'] : 'asc'; | |
if ($active == $field) { | |
$initial = ($order == 'asc') ? 'desc' : 'asc'; | |
} | |
$title = t('sort by @s', array('@s' => $label)); | |
if ($active == $field) { | |
$label .= theme('tablesort_indicator', array('style' => $initial)); | |
} | |
$query['order'] = $field; | |
$query['sort'] = $initial; | |
$link_options = array( | |
'html' => TRUE, | |
'attributes' => array('title' => $title), | |
'query' => $query, | |
); | |
$vars['header'][$field] = l($label, $_GET['q'], $link_options); | |
} | |
// Add a header label wrapper if one was selected. | |
if ($vars['header'][$field]) { | |
$element_label_type = $fields[$field]->element_label_type(TRUE, TRUE); | |
if ($element_label_type) { | |
$vars['header'][$field] = '<' . $element_label_type . '>' . $vars['header'][$field] . '</' . $element_label_type . '>'; | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment