icingaweb2/application/views/scripts/mixedPagination.phtml

91 lines
2.0 KiB
PHTML
Raw Normal View History

<?php
use Icinga\Web\Url;
// Please note that there is a reason for the strange way of writing ><.
// It was the best compromise that came to my mind to get rid of whitespaces
// between inline-block elements. Found no better hack - and table-cell seems
// to be less supported.
2013-07-12 13:40:21 +02:00
if ($this->pageCount <= 1) return;
?><ul class="pagination"
<?php
$fromto = t('%d to %d of %d');
$total = $this->totalItemCount;
2013-07-12 13:40:21 +02:00
$limit = $this->itemCountPerPage;
$title_prev = sprintf(
$fromto,
($this->current - 2) * $limit + 1,
($this->current - 1) * $limit,
$total
);
$title_next = sprintf(
$fromto,
($this->current) * $limit + 1,
($this->current + 1) * $limit,
$total
);
$li = ' ><li%s><a href="%s" title="%s">%s</a></li
';
2013-07-12 13:40:21 +02:00
?>
<?php
if (isset($this->previous)) {
printf(
$li,
'',
Url::fromRequest()->overwriteParams(
array('page' => $this->previous)
)->getAbsoluteUrl(),
$title_prev,
'« ' . t('Prev')
);
} else {
echo ' ><li class="disabled"><span>« ' . t('Prev') . '</span></li';
}
foreach ($this->pagesInRange as $page) {
2013-07-12 13:40:21 +02:00
$start = ($page - 1) * $limit + 1;
$end = $page * $limit;
if ($end > $total) {
$end = $total;
}
$title = sprintf($fromto, $start, $end, $total);
$class = $page === $this->current ? ' class="active"' : '';
if ($page === '...') {
echo ' ><li class="disabled"><span>...</span></li';
} else {
printf(
$li,
$class,
Url::fromRequest()->overwriteParams(
array('page' => $page)
)->getAbsoluteUrl(),
$title,
$page
);
}
}
if (isset($this->next)) {
printf(
$li,
'',
Url::fromRequest()->overwriteParams(
array('page' => $this->next)
)->getAbsoluteUrl(),
$title_next,
t('Next') . ' »'
);
} else {
echo ' ><li class="disabled"><span>' . t('Next') . ' »</span></li';
}
2013-07-12 13:40:21 +02:00
?>
></ul>