Revision 6c0aa046
Von Sven Schöling vor fast 13 Jahren hinzugefügt
SL/DB/Helper/Paginated.pm | ||
---|---|---|
6 | 6 |
our @ISA = qw(Exporter); |
7 | 7 |
our @EXPORT = qw(paginate); |
8 | 8 |
|
9 |
use List::MoreUtils qw(any); |
|
10 |
|
|
9 | 11 |
sub paginate { |
10 | 12 |
my ($self, %params) = @_; |
11 | 13 |
my $page = $params{page} || 1; |
... | ... | |
47 | 49 |
my ($cur, $max) = @_; |
48 | 50 |
return [ |
49 | 51 |
map { |
50 |
active => $_ != $cur, |
|
51 |
page => $_, |
|
52 |
active => $_ != $cur, |
|
53 |
page => $_, |
|
54 |
visible => |
|
52 | 55 |
}, 1 .. $max |
53 | 56 |
]; |
54 | 57 |
} |
55 | 58 |
|
59 |
sub calc_visibility { |
|
60 |
my ($cur, $max, $this) = @_; |
|
61 |
any { $_ } abs($cur - $this) < 5, |
|
62 |
$cur <= 3, |
|
63 |
$cur == $max, |
|
64 |
any { ! abs ($cur - $this) % $_ } 10, 50, 100, 500, 1000, 5000; |
|
65 |
} |
|
66 |
|
|
56 | 67 |
1; |
57 | 68 |
|
58 | 69 |
__END__ |
Auch abrufbar als: Unified diff
Paginating Sanity:
Nur Seiten anzeigen die...
- Erste oder letzte Seite sind
- In der Nähe der aktuellen Seite (+
3)
10,50,100,500,1000,5000 Seiten von der aktuellen entfernt sind