Koha/svc/cover_images
Tomas Cohen Arazi ab362b93a7 Bug 7813: Ability to delete local cover images
This patch adds the ability to delete local cover images from the
detail page. It adds an 'X' button to trigger the deletion. It occurs
using a new SVC script called cover_images that accepts the following
parameters:

 - action
 - biblionumber (used for checking imagenumber validity)
 - imagenumber (repeatable)

It then deletes all valid images passed and returns a JSON object
containing the imagenumbers and the deletion status (1/0). The operation
is triggered using jQuery.ajax, and with the response the corresponding
images get deleted.

Note: currently one image is deleted at a time, but the code is there to
be used.

To test:
- Open the detail page fr a biblionumber containing one or more cover
  images, go to its images tab.
- Apply the patch, reload the page, go to the images tab.
- Thumbnails should look better than before ;-)
- An 'X' button should show below each cover.
- Clicking the 'X' button should trigger an alert message asking for
  confirmation.
 a) Cancel: nothing happens, reload the page and check nothing got
    deleted.
 b) Accept: the deleted image should be gone, reload the page to check
    it doesn't exist anymore and is not a browser/DOM manipulation trick.
- Signoff

Note: check having more cover images than those that fit the width and
see it wraps fine.

P.S. I chose not to implement every possible action on the svc script, but
another bug could be filled for more improvements.

Sponsored-by: Universidad Nacional de Cordoba
Signed-off-by: David Cook <dcook@prosentient.com.au>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2013-09-21 18:08:51 +00:00

77 lines
2.1 KiB
Perl
Executable file

#!/usr/bin/perl
# Copyright 2013 Universidad Nacional de Cordoba
# Tomas Cohen Arazi
#
# 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 2 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, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
use Modern::Perl;
use CGI;
use C4::Auth qw/check_cookie_auth/;
use C4::Images;
use JSON qw/to_json/;
my $input = new CGI;
my ( $auth_status, $sessionID ) =
check_cookie_auth(
$input->cookie('CGISESSID'),
{ tools => 'upload_local_cover_images' } );
if ( $auth_status ne "ok" ) {
exit 0;
}
my $action = $input->param('action');
my $biblionumber = $input->param('biblionumber');
my @imagenumbers = $input->param('imagenumber');
# Array to store the reponse JSON
my $response = [];
if ( $action eq "delete" ) {
# Build a hash of valid imagenumbers fr the given biblionumber
my %valid_imagenumbers = map {$_ => 1} ListImagesForBiblio($biblionumber);
foreach my $imagenumber ( @imagenumbers ) {
if ( exists( $valid_imagenumbers{ $imagenumber } ) ) {
DelImage($imagenumber);
push @$response, {
imagenumber => $imagenumber,
deleted => 1
};
} else {
push @$response, {
imagenumber => $imagenumber,
deleted => 0,
error => "MSG_INVALID_IMAGENUMBER"
};
}
}
} else {
# invalid action
exit 0;
}
binmode STDOUT, ":encoding(UTF-8)";
print $input->header(
-type => 'application/json',
-charset => 'UTF-8'
);
print to_json( $response );