aboutsummaryrefslogtreecommitdiff
path: root/templates/shared/pagechooser.php
blob: 618c921934e5b3cf3fcced46f90fac87de3f4240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
    $num_pages = ceil($num_postings / $perPage);
    if ($num_pages <= 1) {
        return;
    }

    $cur_page = $page ?: 1;

    $items = array_unique([1, $cur_page - 2, $cur_page - 1, $cur_page, $cur_page + 1, $cur_page + 2, $num_pages]);
    $items = array_filter($items, function ($item) use ($num_pages) { return $item >= 1 && $item <= $num_pages; });
    sort($items);

    $last_page = reset($items) - 1;
    $random_id = mb_substr(md5(uniqid('pagination', true)), -8);

    $pageparams = $pageparams ?? [];
?>
<p id="pagination-label-<?= $random_id ?>" class="audible">
    <?= _('Blättern') ?>
</p>
<ul class="pagination" role="navigation"
    aria-labelledby="pagination-label-<?= $random_id ?>">
<? if ($cur_page > 1): ?>
    <li class="prev">
        <a class="pagination--link" href="<?= URLHelper::getLink(sprintf($pagelink, $cur_page - 1), $pageparams) ?>" rel="prev" <?= $dialog ?? '' ?>>
            <span class="audible"><?= _('Eine Seite') ?></span>
            <?= _('zurück') ?>
        </a>
    </li>
<? endif; ?>
<? foreach ($items as $item): ?>
<? if ($item != $last_page + 1): ?>
    <li class="divider" data-skipped="<?= $last_page + 1 ?>-<?= $item - 1 ?>">&hellip;</li>
<? endif; ?>
    <li <? if ($item == $cur_page) echo 'class="current"'; ?>>
        <a class="pagination--link" href="<?= URLHelper::getLink(sprintf($pagelink, $item), $pageparams) ?>" <?= $dialog ?? ''?>>
            <span class="audible"><?= _('Seite') ?></span>
            <?= $item ?>
        </a>
    </li>
<?
    $last_page = $item;
    endforeach;
?>
<? if ($cur_page < $num_pages): ?>
    <li class="next">
        <a class="pagination--link" href="<?= URLHelper::getLink(sprintf($pagelink, $cur_page + 1), $pageparams) ?>" rel="next" <?= $dialog ?? ''?>>
            <span class="audible"><?= _('Eine Seite') ?></span>
            <?= _('weiter') ?>
        </a>
    </li>
<? endif; ?>
</ul>