Sortierung im BackgroundJob-Controller
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 31 Aug 2012 15:10:37 +0000 (17:10 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 31 Aug 2012 15:10:37 +0000 (17:10 +0200)
SL/Controller/BackgroundJob.pm
templates/webpages/background_job/form.html
templates/webpages/background_job/list.html

index 57ec5c3..dc97e18 100644 (file)
@@ -4,6 +4,8 @@ use strict;
 
 use parent qw(SL::Controller::Base);
 
+use SL::Controller::Helper::GetModels;
+use SL::Controller::Helper::Sorted;
 use SL::DB::BackgroundJob;
 use SL::Helper::Flash;
 use SL::System::TaskServer;
@@ -11,13 +13,24 @@ 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) ],
 );
 
 __PACKAGE__->run_before('check_auth');
 __PACKAGE__->run_before('check_task_server');
 __PACKAGE__->run_before('load_background_job', only => [ qw(edit update destroy execute) ]);
 
+__PACKAGE__->make_sorted(
+  ONLY         => [ qw(list) ],
+
+  package_name => $::locale->text('Package name'),
+  type         => $::locale->text('Execution type'),
+  active       => $::locale->text('Active'),
+  cron_spec    => $::locale->text('Execution schedule'),
+  last_run_at  => $::locale->text('Last run at'),
+  next_run_at  => $::locale->text('Next run at'),
+);
+
 #
 # actions
 #
@@ -27,7 +40,7 @@ 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->get_models);
 }
 
 sub action_new {
@@ -63,7 +76,7 @@ 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 {
@@ -123,7 +136,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 +153,9 @@ 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');
+}
+
 1;
index a4753bb..e7e3640 100644 (file)
@@ -37,6 +37,7 @@
 
   <p>
    [% L.hidden_tag("id", SELF.background_job.id) %]
+   [% L.hidden_tag("back_to", SELF.back_to) %]
    [% L.hidden_tag("action", "BackgroundJob/dispatch") %]
    [% L.submit_tag("action_" _  (SELF.background_job.id ? "update" : "create"), LxERP.t8('Save')) %]
    [%- IF SELF.background_job.id %]
index 6ccef1c..060c35d 100644 (file)
    <table id="background_job_list" width="100%">
     <thead>
      <tr class="listheading">
-      <th>[%- LxERP.t8('Package name') %]</th>
-      <th>[%- LxERP.t8('Execution type') %]</th>
-      <th>[%- LxERP.t8('Active') %]</th>
-      <th>[%- LxERP.t8('Execution schedule') %]</th>
-      <th>[%- LxERP.t8('Last run at') %]</th>
-      <th>[%- LxERP.t8('Next run at') %]</th>
+      <th>[% L.sortable_table_header('package_name') %]</th>
+      <th>[% L.sortable_table_header('type') %]</th>
+      <th>[% L.sortable_table_header('active') %]</th>
+      <th>[% L.sortable_table_header('cron_spec') %]</th>
+      <th>[% L.sortable_table_header('last_run_at') %]</th>
+      <th>[% L.sortable_table_header('next_run_at') %]</th>
      </tr>
     </thead>
 
@@ -28,7 +28,7 @@
     [%- FOREACH background_job = BACKGROUND_JOBS %]
     <tr class="listrow[% loop.count % 2 %]" id="background_job_id_[% background_job.id %]">
      <td>
-      <a href="[% SELF.url_for(action => 'edit', id => background_job.id) %]">
+      <a href="[% SELF.url_for(action => 'edit', id => background_job.id, back_to => SELF.get_callback) %]">
        [%- HTML.escape(background_job.package_name) %]
       </a>
      </td>
@@ -67,7 +67,7 @@
   <hr size="3" noshade>
 
   <p>
-   <a href="[% SELF.url_for(action => 'new') %]">[%- LxERP.t8('Create new background job') %]</a>
+   <a href="[% SELF.url_for(action => 'new', back_to => SELF.get_callback) %]">[%- LxERP.t8('Create new background job') %]</a>
    |
    <a href="[% SELF.url_for(controller => 'BackgroundJobHistory', action => 'list') %]">[%- LxERP.t8('View background job history') %]</a>
    |