From 28cda5b67bc9cef793911fa4e65b6aa9b81903e3 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 5 Sep 2012 16:30:05 +0200 Subject: [PATCH] Sorted-Controller-Helper: Hilfsfunktion zum Setzen der Parameter in einer ReportGenerator-Instanz --- SL/Controller/Helper/Sorted.pm | 35 +++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/SL/Controller/Helper/Sorted.pm b/SL/Controller/Helper/Sorted.pm index d8d333533..57fb5e0bc 100644 --- a/SL/Controller/Helper/Sorted.pm +++ b/SL/Controller/Helper/Sorted.pm @@ -2,8 +2,11 @@ package SL::Controller::Helper::Sorted; use strict; +use Carp; + 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); +our @EXPORT = qw(make_sorted get_sort_spec get_current_sort_params set_report_generator_sort_options + _save_current_sort_params _get_models_handler_for_sorted _callback_handler_for_sorted); use constant PRIV => '__sortedhelperpriv'; @@ -72,6 +75,23 @@ sub get_current_sort_params { return %sort_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; + + foreach my $col (@{ $params{sortable_columns} }) { + $params{report}->{columns}->{$col}->{link} = $self->get_callback( + sort_by => $col, + sort_dir => ($current_sort_params{by} eq $col ? 1 - $current_sort_params{dir} : $current_sort_params{dir}), + ); + } + + $params{report}->set_sort_indicator($current_sort_params{by}, 1 - $current_sort_params{dir}); +} + # # private functions # @@ -320,6 +340,19 @@ Returns a hash reference to the sort spec structure given in the call to L after normalization (hash reference construction, applying default parameters etc). +=item C + +This function sets two things in an instance of +L: the sort indicator and the links for those +column headers that are sortable. + +The report generator instance must be passed as the parameter +C. The parameter C must be an array +reference of column names that are sortable. + +The report generator instance must already have its columns set via a +call to its L function. + =back =head1 BUGS -- 2.20.1