Fix: GetModels mit Paginated ohne Filtered
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 29 May 2013 13:04:53 +0000 (15:04 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 29 May 2013 13:04:53 +0000 (15:04 +0200)
Die  Erkennung ob die Argumente aus Filtered übernommenw erden sollen war ein
wenig optimistisch.

SL/Controller/Helper/Paginated.pm

index 8d572ec..25c4efa 100644 (file)
@@ -58,10 +58,13 @@ sub get_current_paginate_params {
     per_page            => ($params{per_page} * 1) || $spec->{PER_PAGE},
   );
 
-  my %paginate_args     = ref($spec->{PAGINATE_ARGS}) eq 'CODE' ? %{ $spec->{PAGINATE_ARGS}->($self) }
-                        :     $spec->{PAGINATE_ARGS}  eq '__FILTER__' ? $self->get_current_filter_params
-                        :     $spec->{PAGINATE_ARGS}            ? do { my $sub = $spec->{PAGINATE_ARGS}; %{ $self->$sub() } }
-                        :                                         ();
+  # try to use Filtered if available and nothing else is configured, but don't
+  # blow up if the controller does not use Filtered
+  my %paginate_args     = ref($spec->{PAGINATE_ARGS}) eq 'CODE'       ? %{ $spec->{PAGINATE_ARGS}->($self) }
+                        :     $spec->{PAGINATE_ARGS}  eq '__FILTER__'
+                           && $self->can('get_current_filter_params') ? $self->get_current_filter_params
+                        :     $spec->{PAGINATE_ARGS}  ne '__FILTER__' ? do { my $sub = $spec->{PAGINATE_ARGS}; %{ $self->$sub() } }
+                        :                                               ();
   my $calculated_params = "SL::DB::Manager::$spec->{MODEL}"->paginate(%paginate_params, args => \%paginate_args);
 
   # $::lxdebug->dump(0, "get_current_paginate_params: ", $calculated_params);