Koha/admin/background_jobs.pl
Jonathan Druart 987a494068 Bug 29149: Add the capability to provide more info to the background job detail view
(Patch extracted from bug 28445 to make it reusable for bug 23678)
We already had the need for that, when bibliographic records are
modified in batch we wanted to add a "Add to list" feature, and so pass
a list of lists/virtual shelves to the template.

Here (in 28445) we will want to pass the infos of the items that have been modified
to display a table.

Test plan:
0. Create at least one list (virtual shelf)
1. batch update biblios
2. Go to the job detail
3. Notice that dropdown list to add the record to a list
=> No regression found!

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-10-01 15:35:36 +02:00

81 lines
2.4 KiB
Perl
Executable file

#! /usr/bin/perl
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Context;
use C4::Auth qw( get_template_and_user );
use C4::Output qw( output_html_with_http_headers );
use Koha::BackgroundJobs;
use Koha::Virtualshelves;
my $input = CGI->new;
my $op = $input->param('op') || 'list';
my @messages;
# The "view" view should be accessible for the user who create this job.
my $flags_required = $op ne 'view' ? { parameters => 'manage_background_jobs' } : undef;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "admin/background_jobs.tt",
query => $input,
type => "intranet",
flagsrequired => $flags_required,
}
);
if ( $op eq 'view' ) {
my $id = $input->param('id');
if ( my $job = Koha::BackgroundJobs->find($id) ) {
if ( $job->borrowernumber ne $loggedinuser
&& !Koha::Patrons->find($loggedinuser)->has_permission( { parameters => 'manage_background_jobs' } ) )
{
push @messages, { code => 'cannot_view_job' };
}
else {
$template->param( job => $job, );
my $report = $job->additional_report() || {};
$template->param( %$report );
}
} else {
$op = 'list';
}
}
if ( $op eq 'cancel' ) {
my $id = $input->param('id');
if ( my $job = Koha::BackgroundJobs->find($id) ) { # FIXME Make sure logged in user can cancel this job
$job->cancel;
}
$op = 'list';
}
if ( $op eq 'list' ) {
my $jobs = Koha::BackgroundJobs->search({}, { order_by => { -desc => 'enqueued_on' }});
$template->param( jobs => $jobs );
}
$template->param(
messages => \@messages,
op => $op,
);
output_html_with_http_headers $input, $cookie, $template->output;