+ SL::Controller::Helper::GetModels->new(
+ controller => $self,
+ sorted => {
+ _default => {
+ by => 'projectnumber',
+ dir => 1,
+ },
+ customer => t8('Customer'),
+ description => t8('Description'),
+ projectnumber => t8('Project Number'),
+ project_type => t8('Project Type'),
+ project_status => t8('Project Status'),
+ customer_and_description => 1,
+ },
+ with_objects => [ 'customer', 'project_status', 'project_type' ],
+ );
+}
+
+sub make_filter_summary {
+ my ($self) = @_;
+
+ my $filter = $::form->{filter} || {};
+ my @filter_strings;
+
+ my @filters = (
+ [ $filter->{"projectnumber:substr::ilike"}, t8('Project Number') ],
+ [ $filter->{"description:substr::ilike"}, t8('Description') ],
+ [ $filter->{customer}{"name:substr::ilike"}, t8('Customer') ],
+ [ $filter->{"project_type_id"}, t8('Project Type'), sub { SL::DB::Manager::ProjectType->find_by(id => $filter->{"project_type_id"})->description } ],
+ [ $filter->{"project_status_id"}, t8('Project Status'), sub { SL::DB::Manager::ProjectStatus->find_by(id => $filter->{"project_status_id"})->description } ],
+ );
+
+ my @flags = (
+ [ $filter->{active} eq 'active', $::locale->text('Active') ],
+ [ $filter->{active} eq 'inactive', $::locale->text('Inactive') ],
+ [ $filter->{valid} eq 'valid', $::locale->text('Valid') ],
+ [ $filter->{valid} eq 'invalid', $::locale->text('Invalid') ],
+ [ $filter->{orphaned}, $::locale->text('Orphaned') ],
+ );
+
+ for (@flags) {
+ push @filter_strings, "$_->[1]" if $_->[0];
+ }
+ for (@filters) {
+ push @filter_strings, "$_->[1]: " . ($_->[2] ? $_->[2]->() : $_->[0]) if $_->[0];
+ }
+
+ $self->{filter_summary} = join ', ', @filter_strings;
+}
+
+sub setup_edit_action_bar {
+ my ($self, %params) = @_;
+
+ my $is_new = !$self->project->id;
+
+ for my $bar ($::request->layout->get('actionbar')) {
+ $bar->add(
+ combobox => [
+ action => [
+ t8('Save'),
+ submit => [ '#form', { action => 'Project/' . ($is_new ? 'create' : 'update') } ],
+ accesskey => 'enter',
+ ],
+ action => [
+ t8('Save as new'),
+ submit => [ '#form', { action => 'Project/create' }],
+ disabled => $is_new ? t8('The object has not been saved yet.') : undef,
+ ],
+ ], # end of combobox "Save"
+
+ action => [
+ t8('Delete'),
+ submit => [ '#form', { action => 'Project/destroy' } ],
+ confirm => $::locale->text('Do you really want to delete this object?'),
+ disabled => $is_new ? t8('This object has not been saved yet.')
+ : $self->project->is_used ? t8('This object has already been used.')
+ : undef,
+ ],
+
+ link => [
+ t8('Abort'),
+ link => $params{callback} || $self->url_for(action => 'list'),
+ ],
+ );
+ }
+}
+
+sub setup_search_action_bar {
+ my ($self, %params) = @_;
+
+ for my $bar ($::request->layout->get('actionbar')) {
+ $bar->add(
+ action => [
+ t8('Update'),
+ submit => [ '#search_form', { action => 'Project/list' } ],
+ accesskey => 'enter',
+ ],
+ link => [
+ t8('Add'),
+ link => $self->url_for(action => 'new'),
+ ],
+ );
+ }