use constant PRIV => '__paginatedhelper_priv';
-my $controller_paginate_spec;
+use List::Util qw(min);
+
+my %controller_paginate_spec;
sub make_paginated {
my ($class, %specs) = @_;
$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);
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 {
: $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 {