]> wagnertech.de Git - kivitendo-erp.git/blobdiff - SL/Controller/Helper/GetModels/Sorted.pm
paginating im druck gefixt. debugmeldungen aufgerÀumt
[kivitendo-erp.git] / SL / Controller / Helper / GetModels / Sorted.pm
index 9e133b8f6a0a4422bee79510a939e554e96fc6fb..dee86810f16b32700b1690b38b5ee65e6fcd1fe3 100644 (file)
@@ -7,7 +7,7 @@ use Carp;
 use List::MoreUtils qw(uniq);
 
 use Rose::Object::MakeMethods::Generic (
-  scalar => [ qw(by dir specs) ],
+  scalar => [ qw(by dir specs form_data) ],
   'scalar --get_set_init' => [ qw(form_params) ],
 );
 
@@ -37,22 +37,24 @@ sub init {
 
   $self->get_models->register_handlers(
     callback   => sub { shift; $self->_callback_handler_for_sorted(@_) },
-    get_models => sub { shift; $self->_get_models_handler_for_sorted(@_) },
   );
 
 #   $::lxdebug->dump(0, "CONSPEC", \%specs);
 }
 
-sub get_current_sort_params {
+sub read_params {
   my ($self, %params) = @_;
 
+  return %{ $self->form_data } if $self->form_data;
+
   my %sort_params;
   my ($by, $dir) = @{ $self->form_params };
+  my $source = $self->get_models->source;
 
-  if ($::form->{ $by }) {
+  if ($source->{ $by }) {
     %sort_params = (
-      sort_by  => $::form->{$by},
-      sort_dir => defined($::form->{$dir}) ? $::form->{$dir} * 1 : undef,
+      sort_by  => $source->{$by},
+      sort_dir => defined($source->{$dir}) ? $source->{$dir} * 1 : undef,
     );
   } elsif (!$self->by) {
     %sort_params = %params;
@@ -63,15 +65,28 @@ sub get_current_sort_params {
     );
   }
 
+  $self->form_data(\%sort_params);
+
   return %sort_params;
 }
 
+sub finalize {
+  my ($self, %params) = @_;
+
+  my %sort_params     = $self->read_params;
+  my $sort_spec       = $self->specs->{ $sort_params{sort_by} };
+
+  $params{sort_by}    = "SL::DB::Manager::$sort_spec->{model}"->make_sort_string(sort_by => $sort_spec->{model_column}, sort_dir => $sort_params{sort_dir});
+
+  %params;
+}
+
 sub set_report_generator_sort_options {
   my ($self, %params) = @_;
 
   $params{$_} or croak("Missing parameter '$_'") for qw(report sortable_columns);
 
-  my %current_sort_params = $self->get_current_sort_params;
+  my %current_sort_params = $self->read_params;
 
   foreach my $col (@{ $params{sortable_columns} }) {
     $params{report}->{columns}->{$col}->{link} = $self->get_models->get_callback(
@@ -96,7 +111,7 @@ sub set_report_generator_sort_options {
 
 sub _callback_handler_for_sorted {
   my ($self, %params) = @_;
-  my %spec = $self->get_current_sort_params;
+  my %spec = $self->read_params;
 
   if ($spec{sort_by}) {
     $params{ $self->form_params->[0] } = $spec{sort_by};
@@ -108,20 +123,6 @@ sub _callback_handler_for_sorted {
   return %params;
 }
 
-sub _get_models_handler_for_sorted {
-  my ($self, %params) = @_;
-
-  my %sort_params     = $self->get_current_sort_params;
-  my $sort_spec       = $self->specs->{ $sort_params{sort_by} };
-
-  $params{sort_by}    = "SL::DB::Manager::$sort_spec->{model}"->make_sort_string(sort_by => $sort_spec->{model_column}, sort_dir => $sort_params{sort_dir});
-
-  # $::lxdebug->dump(0, "GM handler for sorted; params nach modif:", \%params);
-
-  return %params;
-}
-
-
 sub init_form_params {
   [ qw(sort_by sort_dir) ]
 }