X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/dcef8eb00b07cf85be6fe9f97e233b3e1d4847db..d1d70f4ad540f4d57d1b577b337b6db38074e223:/SL/Controller/Project.pm diff --git a/SL/Controller/Project.pm b/SL/Controller/Project.pm index 0e81e570d..11cdd9c47 100644 --- a/SL/Controller/Project.pm +++ b/SL/Controller/Project.pm @@ -12,6 +12,7 @@ use SL::Controller::Helper::ReportGenerator; use SL::CVar; use SL::DB::Customer; use SL::DB::DeliveryOrder; +use SL::DB::Employee; use SL::DB::Invoice; use SL::DB::Order; use SL::DB::Project; @@ -29,11 +30,12 @@ use Rose::DB::Object::Helpers qw(as_tree); use Rose::Object::MakeMethods::Generic ( scalar => [ qw(project) ], - 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records) ], + 'scalar --get_set_init' => [ qw(models customers project_types project_statuses projects linked_records employees may_edit_invoice_permissions) ], ); __PACKAGE__->run_before('check_auth', except => [ qw(ajax_autocomplete) ]); __PACKAGE__->run_before('load_project', only => [ qw(edit update destroy) ]); +__PACKAGE__->run_before('use_multiselect_js', only => [ qw(new create edit update) ]); # # actions @@ -65,7 +67,7 @@ sub action_list { $self->prepare_report; - $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get, action_bar => 1); + $self->report_generator_list_objects(report => $self->{report}, objects => $self->models->get); } sub action_new { @@ -166,6 +168,8 @@ sub check_auth { sub init_project_statuses { SL::DB::Manager::ProjectStatus->get_all_sorted } sub init_project_types { SL::DB::Manager::ProjectType->get_all_sorted } +sub init_employees { SL::DB::Manager::Employee->get_all_sorted } +sub init_may_edit_invoice_permissions { $::auth->assert('project_edit_view_invoices_permission', 1) } sub init_linked_records { my ($self) = @_; @@ -223,6 +227,10 @@ sub init_customers { return SL::DB::Manager::Customer->get_all_sorted(where => [ or => [ obsolete => 0, obsolete => undef, @customer_id ]]); } +sub use_multiselect_js { + $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side); +} + sub display_form { my ($self, %params) = @_; @@ -246,6 +254,12 @@ sub create_or_update { my $is_new = !$self->project->id; my $params = delete($::form->{project}) || { }; + if (!$self->may_edit_invoice_permissions) { + delete $params->{employee_invoice_permissions}; + } elsif (!$params->{employee_invoice_permissions}) { + $params->{employee_invoice_permissions} = []; + } + delete $params->{id}; $self->project->assign_attributes(%{ $params }); @@ -297,7 +311,7 @@ sub prepare_report { project_type => { sub => sub { $_[0]->project_type->description } }, project_status => { sub => sub { $_[0]->project_status->description }, text => t8('Status') }, customer => { sub => sub { !$_[0]->customer_id ? '' : $_[0]->customer->name }, - raw_data => sub { !$_[0]->customer_id ? '' : $self->presenter->customer($_[0]->customer, display => 'table-cell', callback => $callback) } }, + raw_data => sub { !$_[0]->customer_id ? '' : $_[0]->customer->presenter->customer(display => 'table-cell', callback => $callback) } }, active => { sub => sub { $_[0]->active ? $::locale->text('Active') : $::locale->text('Inactive') }, text => $::locale->text('Active') }, valid => { sub => sub { $_[0]->valid ? $::locale->text('Valid') : $::locale->text('Invalid') }, @@ -422,12 +436,12 @@ sub setup_search_action_bar { for my $bar ($::request->layout->get('actionbar')) { $bar->add( action => [ - t8('Search'), + t8('Update'), submit => [ '#search_form', { action => 'Project/list' } ], accesskey => 'enter', ], link => [ - t8('Add Project'), + t8('Add'), link => $self->url_for(action => 'new'), ], );