X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/1a254be1009a000fbe872878088da9c8b69208f8..3f214c128c8eb8a7ebf44a5a9d37c6a4e0fe5209:/SL/DB/Helper/Paginated.pm diff --git a/SL/DB/Helper/Paginated.pm b/SL/DB/Helper/Paginated.pm index a5a07d067..a24d4d7e0 100644 --- a/SL/DB/Helper/Paginated.pm +++ b/SL/DB/Helper/Paginated.pm @@ -4,7 +4,9 @@ use strict; require Exporter; our @ISA = qw(Exporter); -our @EXPORT = qw(paginate); +our @EXPORT = qw(paginate disable_paginating); + +use List::MoreUtils qw(any); sub paginate { my ($self, %params) = @_; @@ -47,12 +49,28 @@ sub make_common_pages { my ($cur, $max) = @_; return [ map { - active => $_ != $cur, - page => $_, + active => $_ != $cur, + page => $_, + visible => calc_visibility($cur, $max, $_), }, 1 .. $max ]; } +sub calc_visibility { + my ($cur, $max, $this) = @_; + any { $_ } abs($cur - $this) < 5, + $this <= 3, + $this == $max, + any { abs ($cur - $this) == $_ } 10, 50, 100, 500, 1000, 5000; +} + +sub disable_paginating { + my ($self, %params) = @_; + + delete $params{args}{page}; + delete $params{args}{per_page}; +} + 1; __END__