ActsAsList: add_to_list() auch aufrufen können, wenn 'position' noch gesetzt ist
[kivitendo-erp.git] / SL / Controller / Helper / Paginated.pm
index d3da20d..15997b8 100644 (file)
@@ -7,7 +7,9 @@ our @EXPORT = qw(make_paginated get_paginate_spec get_current_paginate_params _s
 
 use constant PRIV => '__paginatedhelper_priv';
 
-my $controller_paginate_spec;
+use List::Util qw(min);
+
+my %controller_paginate_spec;
 
 sub make_paginated {
   my ($class, %specs)       = @_;
@@ -20,7 +22,7 @@ sub make_paginated {
   $specs{ONLY}              = [ $specs{ONLY} ] if !ref $specs{ONLY};
   $specs{ONLY_MAP}          = @{ $specs{ONLY} } ? { map { ($_ => 1) } @{ $specs{ONLY} } } : { '__ALL__' => 1 };
 
-  $controller_paginate_spec = \%specs;
+  $controller_paginate_spec{$class} = \%specs;
 
   my %hook_params           = @{ $specs{ONLY} } ? ( only => $specs{ONLY} ) : ();
   $class->run_before('_save_current_paginate_params', %hook_params);
@@ -38,7 +40,7 @@ sub make_paginated {
 sub get_paginate_spec {
   my ($class_or_self) = @_;
 
-  return $controller_paginate_spec;
+  return $controller_paginate_spec{ref($class_or_self) || $class_or_self};
 }
 
 sub get_current_paginate_params {
@@ -59,15 +61,10 @@ sub get_current_paginate_params {
                         :     $spec->{PAGINATE_ARGS}            ? do { my $sub = $spec->{PAGINATE_ARGS}; %{ $self->$sub() } }
                         :                                         ();
   my $calculated_params = "SL::DB::Manager::$spec->{MODEL}"->paginate(%paginate_params, args => \%paginate_args);
-  %paginate_params      = (
-    %paginate_params,
-    num_pages    => $calculated_params->{max},
-    common_pages => $calculated_params->{common},
-  );
 
-  # $::lxdebug->dump(0, "get_current_paginate_params: ", \%paginate_params);
+  # $::lxdebug->dump(0, "get_current_paginate_params: ", $calculated_params);
 
-  return %paginate_params;
+  return %{ $calculated_params };
 }
 
 sub disable_pagination {