X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FProject.pm;h=7d66f35937c90779b892bff27da9a470806a602a;hb=d5cb059bfa6c56fb74bf2a89c5625cb0b442e48e;hp=386d7552b937cf6c33f162c7494cebf7524c2613;hpb=7647d46acbc2a8253c0afeac5c706c3eb76995d5;p=kivitendo-erp.git diff --git a/SL/Controller/Project.pm b/SL/Controller/Project.pm index 386d7552b..7d66f3593 100644 --- a/SL/Controller/Project.pm +++ b/SL/Controller/Project.pm @@ -9,6 +9,7 @@ use Clone qw(clone); use SL::Controller::Helper::GetModels; use SL::Controller::Helper::Paginated; use SL::Controller::Helper::Sorted; +use SL::Controller::Helper::Filtered; use SL::Controller::Helper::ParseFilter; use SL::Controller::Helper::ReportGenerator; use SL::CVar; @@ -23,16 +24,20 @@ use SL::Locale::String; use Rose::Object::MakeMethods::Generic ( - scalar => [ qw(project db_args flat_filter linked_records) ], + scalar => [ qw(project linked_records) ], ); __PACKAGE__->run_before('check_auth'); __PACKAGE__->run_before('load_project', only => [ qw(edit update destroy) ]); -__PACKAGE__->get_models_url_params('flat_filter'); +__PACKAGE__->make_filtered( + MODEL => 'Project', + LAUNDER_TO => 'filter', + ONLY => [ qw(list) ], +); __PACKAGE__->make_paginated( MODEL => 'Project', - PAGINATE_ARGS => 'db_args', +# PAGINATE_ARGS => 'db_args', ONLY => [ qw(list) ], ); @@ -71,15 +76,15 @@ sub action_search { sub action_list { my ($self) = @_; - $self->setup_db_args_from_filter; - $self->flat_filter({ map { $_->{key} => $_->{value} } $::form->flatten_variables('filter') }); # $self->make_filter_summary; - $self->prepare_report; + my $projects = $self->get_models( + with_objects => [ 'customer' ], + ); - $self->{projects} = $self->get_models(%{ $self->db_args }); + $self->prepare_report; - $self->list_objects; + $self->report_generator_list_objects(report => $self->{report}, objects => $projects); } sub action_new { @@ -149,8 +154,6 @@ sub display_form { $params{CUSTOM_VARIABLES} = CVar->get_custom_variables(module => 'Projects', trans_id => $self->project->id); CVar->render_inputs(variables => $params{CUSTOM_VARIABLES}) if @{ $params{CUSTOM_VARIABLES} }; - $::request->{layout}->focus('#projectnumber'); - $self->render('project/form', %params); } @@ -204,35 +207,6 @@ sub setup_db_args_from_filter { $self->db_args(\%args); } -# unfortunately ParseFilter can't handle compount filters. -# so we clone the original filter (still need that for serializing) -# rip out the options we know an replace them with the compound options. -# ParseFilter will take care of the prefixing then. -sub _pre_parse_filter { - my ($self, $orig_filter, $launder_to) = @_; - - return undef unless $orig_filter; - - my $filter = clone($orig_filter); - - $launder_to->{active} = delete $filter->{active}; - if ($orig_filter->{active} ne 'both') { - push @{ $filter->{and} }, $orig_filter->{active} eq 'active' ? (active => 1) : (or => [ active => 0, active => undef ]); - } - - $launder_to->{valid} = delete $filter->{valid}; - if ($orig_filter->{valid} ne 'both') { - push @{ $filter->{and} }, $orig_filter->{valid} eq 'valid' ? (valid => 1) : (or => [ valid => 0, valid => undef ]); - } - - $launder_to->{status} = delete $filter->{status}; - if ($orig_filter->{status} ne 'all') { - push @{ $filter->{and} }, SL::DB::Manager::Project->is_not_used_filter; - } - - return $filter; -} - sub prepare_report { my ($self) = @_; @@ -274,31 +248,6 @@ sub prepare_report { $self->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable); $self->disable_pagination if $report->{options}{output_format} =~ /^(pdf|csv)$/i; - - $self->{report_data} = { - column_defs => \%column_defs, - columns => \@columns, - }; -} - -sub list_objects { - my ($self) = @_; - my $column_defs = $self->{report_data}->{column_defs}; - - for my $obj (@{ $self->{projects} || [] }) { - my %data = map { - $_ => { - data => $column_defs->{$_}{sub} ? $column_defs->{$_}{sub}->($obj) - : $obj->can($_) ? $obj->$_ - : $obj->{$_}, - link => $column_defs->{$_}{obj_link} ? $column_defs->{$_}{obj_link}->($obj) : '', - }, - } @{ $self->{report_data}{columns} || {} }; - - $self->{report}->add_data(\%data); - } - - return $self->{report}->generate_with_headers; } 1;