Files
thetool/Layout/default/tpl/pagination.php
2022-10-25 16:12:03 +02:00

93 lines
3.8 KiB
PHP

<?php if($pagination['maxItems'] > $pagination['count']): ?>
<?php
$mfPagination_pagecount = intval($pagination['maxItems'] / $pagination['count']);
$mfPagination_currentpage = $pagination['start'] / $pagination['count'];
$mfPagination_pages = [];
$mfPagination_baseurl_params = $pagination_baseurl_params;
$log = mfLoghandler::singleton();
$mfPagination_pagecount_add = 0;
if($mfPagination_pagecount < 12) {
if($pagination['maxItems'] % $pagination['count'] != 0) {
$mfPagination_pagecount_add = 1;
}
for($i = 0; $i < $mfPagination_pagecount+$mfPagination_pagecount_add; $i++) {
$mfPagination_baseurl_params['s'] = $i * $pagination['count'];
$page = [
's' => $i * $pagination['count'],
'url' => $pagination_baseurl."?".http_build_query($mfPagination_baseurl_params),
'current' => ($pagination['start'] == $i*$pagination['count']),
];
$mfPagination_pages[$i] = $page;
}
} else {
if($pagination['maxItems'] % $pagination['count'] != 0) {
$mfPagination_pagecount_add = 1;
}
$show_from = $mfPagination_currentpage - 4;
$show_to = $mfPagination_currentpage + 4;
if($show_from < 1) {
$show_from = 1;
}
if($show_to > $mfPagination_pagecount) {
$show_to = $mfPagination_pagecount + $mfPagination_pagecount_add;
}
for($i = 0; $i < $mfPagination_pagecount + $mfPagination_pagecount_add; $i++) {
if($show_from > 1 && $i == $show_from) {
$mfPagination_pages[$i] = "separator_before";
continue;
}
if($i == $show_to && $show_to < $mfPagination_pagecount) {
$mfPagination_pages[$i] = "separator_after";
continue;
}
$mfPagination_baseurl_params['s'] = $i * $pagination['count'];
if(($i == 0 || $i == $mfPagination_pagecount) || ($i >= $show_from && $i <= $show_to)) {
$log->debug("show_from: $show_from, show_to: $show_to");
$page = [
's' => $i * $pagination['count'],
'url' => $pagination_baseurl."?".http_build_query($mfPagination_baseurl_params),
'current' => ($pagination['start'] == $i*$pagination['count']),
];
$mfPagination_pages[$i] = $page;
}
}
}
?>
<nav>
<ul class="pagination justify-content-center mb-1">
<li class="page-item <?=($pagination['start'] - $pagination['count'] < 0) ? "disabled" : ""?>">
<a class="page-link" href="<?=$this->getUrl($Mod, "Index", ["filter" => $filter])?>" tabindex="-1">Erste</a>
</li>
<li class="page-item <?=($pagination['start'] - $pagination['count'] < 0) ? "disabled" : ""?>">
<a class="page-link" href="<?=$this->getUrl($Mod,"Index",['s' => $pagination['start'] - $pagination['count'], "filter" => $filter])?>" tabindex="-1">Zurück</a>
</li>
<?php foreach($mfPagination_pages as $mfPageIndex => $mfPage):?>
<?php if($mfPage == "separator_before" || $mfPage == "separator_after"): ?>
<li class="page-item disabled font-weight-bold text-secondary"><a class="page-link">...</a></li>
<?php continue; endif; ?>
<li class="page-item <?=($mfPage['current']) ? "disabled font-weight-bold text-secondary" : ""?>"><a class="page-link" href="<?=$mfPage['url']?>"><?=$mfPageIndex+1?></a></li>
<?php endforeach; ?>
<li class="page-item <?=($pagination['maxItems'] / ($pagination['start'] + $pagination['count']) < 1) ? "disabled" : ""?>">
<a class="page-link" href="<?=$this->getUrl($Mod,"Index",['s' => $pagination['start'] + $pagination['count'], "filter" => $filter])?>">Weiter</a>
</li>
<li class="page-item <?=($pagination['maxItems'] / ($pagination['start'] + $pagination['count']) < 1) ? "disabled" : ""?>">
<a class="page-link" href="<?=$this->getUrl($Mod,"Index",['s' => ($pagination['maxItems'] - $pagination['maxItems'] % $pagination['count']), "filter" => $filter])?>">Letzte</a>
</li>
</ul>
</nav>
<?php endif; ?>