function views_handler_area_alpha_pagination::render in Views Alpha Pagination 7.2
Render the alphabetic pagination.
Parameters
bool $empty: If this area should be empty, then return it as empty.
Return value
string A string representing the complete pagination including linked and unlinked options.
Overrides views_handler_area::render
File
- src/
views_handler_area_alpha_pagination.inc, line 458
Class
- views_handler_area_alpha_pagination
- Views area handler to display alphabetic pagination.
Code
function render($empty = FALSE) {
// Create the wrapper.
$wrapper = [
'#theme_wrappers' => [
'container__alpha_pagination__wrapper',
],
'#attributes' => [],
'#attached' => [
'library' => [
[
'alpha_pagination',
'alpha_pagination',
],
],
],
];
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_class'), $wrapper['#attributes']);
// Iterate over the alphabet and populate the items for the item list.
$items = [];
foreach ($this->alphaPagination
->getCharacters() as $character) {
// Add special numeric divider.
if ($character
->getValue() === '-' && $this->alphaPagination
->getOption('paginate_view_numbers') !== '2' && $this->alphaPagination
->getOption('paginate_numeric_divider')) {
// Add an empty list item.
$item = [
'data' => '',
];
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_numeric_divider_class'), $item);
$items[] = $item;
}
elseif ($build = $character
->build(TRUE)) {
$item = [
'data' => $build,
];
// Add the necessary classes for item.
if ($character
->isAll()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_all_class'), $item);
}
if ($character
->isNumeric()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_numeric_class'), $item);
}
if ($character
->isActive()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_active_class'), $item);
}
elseif (!$character
->isEnabled()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_inactive_class'), $item);
}
// Add the constructed item to the list.
$items[] = $item;
}
}
// Sanitize any classes provided for the item list.
$item_list = [
'#theme' => 'item_list__alpha_pagination',
'#attributes' => [],
'#items' => $items,
];
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_list_class'), $item_list['#attributes']);
// Append the item list to the wrapper.
$wrapper[] = $item_list;
return drupal_render($wrapper);
}