public function AlphaPaginationArea::render in Views Alpha Pagination 8.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 AreaPluginBase::render
File
- src/
Plugin/ views/ area/ AlphaPaginationArea.php, line 583
Class
- AlphaPaginationArea
- Views area handler to display alphabetic pagination.
Namespace
Drupal\alpha_pagination\Plugin\views\areaCode
public 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 ($item = $character
->build()) {
$item['#wrapper_attributes'] = [];
// Add the necessary classes for item.
if ($character
->isAll()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_all_class'), $item['#wrapper_attributes']);
}
if ($character
->isNumeric()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_numeric_class'), $item['#wrapper_attributes']);
}
if ($character
->isActive()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_active_class'), $item['#wrapper_attributes']);
}
elseif (!$character
->isEnabled()) {
$this->alphaPagination
->addClasses($this->alphaPagination
->getOption('paginate_inactive_class'), $item['#wrapper_attributes']);
}
// 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 $wrapper;
}