X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FBackgroundJob.pm;h=b688297971b088d392a8f0fb332c09bb545d4c5f;hb=3270e88361efc8ceff21314b489732229f0f98f7;hp=57ec5c377bac1876bdcbbddacd12665037ca430b;hpb=f866d16b4e837443b71ffaf3b78c1127ac57717e;p=kivitendo-erp.git diff --git a/SL/Controller/BackgroundJob.pm b/SL/Controller/BackgroundJob.pm index 57ec5c377..b68829797 100644 --- a/SL/Controller/BackgroundJob.pm +++ b/SL/Controller/BackgroundJob.pm @@ -4,14 +4,17 @@ use strict; use parent qw(SL::Controller::Base); +use SL::BackgroundJob::Base; +use SL::Controller::Helper::GetModels; use SL::DB::BackgroundJob; use SL::Helper::Flash; +use SL::Locale::String; use SL::System::TaskServer; use Rose::Object::MakeMethods::Generic ( scalar => [ qw(background_job) ], - 'scalar --get_set_init' => [ qw(task_server) ], + 'scalar --get_set_init' => [ qw(task_server back_to models) ], ); __PACKAGE__->run_before('check_auth'); @@ -27,19 +30,25 @@ sub action_list { $self->render('background_job/list', title => $::locale->text('Background jobs'), - BACKGROUND_JOBS => SL::DB::Manager::BackgroundJob->get_all_sorted); + BACKGROUND_JOBS => $self->models->get, + MODELS => $self->models); } sub action_new { my ($self) = @_; - $self->background_job(SL::DB::BackgroundJob->new(cron_spec => '* * * * *')); - $self->render('background_job/form', title => $::locale->text('Create a new background job')); + $self->background_job(SL::DB::BackgroundJob->new(cron_spec => '* * * * *', package_name => 'Test')); + $self->render('background_job/form', + title => $::locale->text('Create a new background job'), + JOB_CLASSES => [ SL::BackgroundJob::Base->get_known_job_classes ]); } sub action_edit { my ($self) = @_; - $self->render('background_job/form', title => $::locale->text('Edit background job')); + + $self->render('background_job/form', + title => $::locale->text('Edit background job'), + JOB_CLASSES => [ SL::BackgroundJob::Base->get_known_job_classes ]); } sub action_create { @@ -63,12 +72,13 @@ sub action_destroy { flash_later('error', $::locale->text('The background job could not be destroyed.')); } - $self->redirect_to(action => 'list'); + $self->redirect_to($self->back_to); } sub action_save_and_execute { my ($self) = @_; + $self->background_job(SL::DB::BackgroundJob->new) if !$self->background_job; return unless $self->create_or_update; $self->action_execute; } @@ -123,7 +133,7 @@ sub create_or_update { flash_later('info', $is_new ? $::locale->text('The background job has been created.') : $::locale->text('The background job has been saved.')); return if $return; - $self->redirect_to(action => 'list'); + $self->redirect_to($self->back_to); } sub load_background_job { @@ -140,4 +150,27 @@ sub check_task_server { flash('warning', $::locale->text('The task server does not appear to be running.')) if !$self->task_server->is_running; } +sub init_back_to { + my ($self) = @_; + return $::form->{back_to} || $self->url_for(action => 'list'); +} + +sub init_models { + SL::Controller::Helper::GetModels->new( + controller => $_[0], + filtered => 0, + sorted => { + package_name => t8('Package name'), + type => t8('Execution type'), + active => t8('Active'), + cron_spec => t8('Execution schedule'), + last_run_at => t8('Last run at'), + next_run_at => t8('Next run at'), + }, + query => [ + package_name => [ SL::BackgroundJob::Base->get_known_job_classes ], + ], + ); +} + 1;