]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/DB/Helper/Paginated.pm
Paginating Helper: Funktion um paginating nachträglich zu deaktivieren
[kivitendo-erp.git] / SL / DB / Helper / Paginated.pm
index a5a07d0679a1d5cff2fc07f0fd187265305c484d..a24d4d7e065d14f7babcc30f1b0d9b0dfc8f611c 100644 (file)
@@ -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__