X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/aae0ac792d23a44a894fe876fed5159ca593d550..1260ff14707708ae886d5054d74e6eeff484b5d3:/SL/Controller/Helper/Sorted.pm diff --git a/SL/Controller/Helper/Sorted.pm b/SL/Controller/Helper/Sorted.pm index 959dff9bd..d8d333533 100644 --- a/SL/Controller/Helper/Sorted.pm +++ b/SL/Controller/Helper/Sorted.pm @@ -5,12 +5,14 @@ use strict; use Exporter qw(import); our @EXPORT = qw(make_sorted get_sort_spec get_current_sort_params _save_current_sort_params _get_models_handler_for_sorted _callback_handler_for_sorted); -my ($controller_sort_spec, $current_sort_by, $current_sort_dir); +use constant PRIV => '__sortedhelperpriv'; + +my $controller_sort_spec; sub make_sorted { my ($class, %specs) = @_; - $specs{MODEL} ||= $class->_controller_name; + $specs{MODEL} ||= $class->controller_name; $specs{MODEL} =~ s{ ^ SL::DB:: (?: .* :: )? }{}x; while (my ($column, $spec) = each %specs) { @@ -56,8 +58,9 @@ sub get_current_sort_params { my $sort_spec = $self->get_sort_spec; if (!$params{sort_by}) { - $params{sort_by} = $current_sort_by; - $params{sort_dir} = $current_sort_dir; + my $priv = $self->{PRIV()} || {}; + $params{sort_by} = $priv->{by}; + $params{sort_dir} = $priv->{dir}; } my $by = $params{sort_by} || $sort_spec->{DEFAULT_BY}; @@ -74,22 +77,25 @@ sub get_current_sort_params { # sub _save_current_sort_params { - my ($self) = @_; + my ($self) = @_; - my $sort_spec = $self->get_sort_spec; - $current_sort_by = $::form->{ $sort_spec->{FORM_PARAMS}->[0] }; - $current_sort_dir = !!$::form->{ $sort_spec->{FORM_PARAMS}->[1] } * 1; + my $sort_spec = $self->get_sort_spec; + $self->{PRIV()} = { + by => $::form->{ $sort_spec->{FORM_PARAMS}->[0] }, + dir => !!$::form->{ $sort_spec->{FORM_PARAMS}->[1] } * 1, + }; - # $::lxdebug->message(0, "saving current sort params to $current_sort_by / $current_sort_dir"); + # $::lxdebug->message(0, "saving current sort params to " . $self->{PRIV()}->{by} . ' / ' . $self->{PRIV()}->{dir}); } sub _callback_handler_for_sorted { my ($self, %params) = @_; - if ($current_sort_by) { + my $priv = $self->{PRIV()} || {}; + if ($priv->{by}) { my $sort_spec = $self->get_sort_spec; - $params{ $sort_spec->{FORM_PARAMS}->[0] } = $current_sort_by; - $params{ $sort_spec->{FORM_PARAMS}->[1] } = $current_sort_dir; + $params{ $sort_spec->{FORM_PARAMS}->[0] } = $priv->{by}; + $params{ $sort_spec->{FORM_PARAMS}->[1] } = $priv->{dir}; } # $::lxdebug->dump(0, "CB handler for sorted; params nach modif:", \%params); @@ -144,7 +150,7 @@ In a controller: sub action_list { my ($self) = @_; - my $sorted_models = $self->get_sorted; + my $sorted_models = $self->get_models; $self->render('controller/list', ENTRIES => $sorted_models); } @@ -271,6 +277,9 @@ Required. A user-displayable title to be used by functions like the layout helper's C. Does not have a default value. +Note that this string must be the untranslated English version of the +string. The titles will be translated whenever they're requested. + =item * C Optional. The name of a Rose database model this sort index refers