diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
index 9d4446cac7..308e3a02b2 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
+++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css
@@ -1398,6 +1398,10 @@ li.email {
margin : auto;
}
+.thumbnails > li {
+ list-style-type: none;
+}
+
#searchresults ul li {
font-size : 90%;
list-style : url(../../img/item-bullet.gif);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
index a9c042dba7..903f1ad156 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt
@@ -52,11 +52,36 @@ function verify_images() {
});
}
- $(document).ready(function() {
+ function removeLocalImage(imagenumber) {
+
+ $.ajax({
+ url: "/cgi-bin/koha/svc/cover_images?action=delete&biblionumber=" + [% biblionumber %] + "&imagenumber=" + imagenumber,
+ success: function(data) {
+ $(data).each( function(i) {
+ if ( this.deleted == 1 ) {
+ $('#imagenumber-' + this.imagenumber).remove();
+ }
+ });
+ }
+ });
+
+ }
+
+ $(document).ready(function() {
$('#bibliodetails').tabs();
$('#search-form').focus();
+ $('.thumbnails > li > a > span').click(function() {
+ var result = confirm(_("Are you sure you want to delete this cover image?"));
+
+ if ( result == true ) {
+ var imagenumber = $(this).parent().parent().attr('id').split('-')[1];
+ removeLocalImage(imagenumber);
+ }
+
+ return false;
+ });
+ });
- });
[% IF ( AmazonCoverImages ) %]$(window).load(function() {
verify_images();
});[% END %]
@@ -697,15 +722,22 @@ function verify_images() {
[% IF ( LocalCoverImages ) %]
[% IF ( localimages.0 ) %]
-
Click on an image to view it in the image viewer
+
Click on an image to view it in the image viewer
+
[% FOREACH image IN localimages %]
-[% IF image %]
-
-[% END %]
+ [% IF image %]
+ -
+
+
+ ×
+
+
+ [% END %]
[% END %]
+
[% ELSE %]
[% IF ( CAN_user_tools_upload_local_cover_images ) %]
-
No images have been uploaded for this bibliographic record yet. Please upload one.
+
No images have been uploaded for this bibliographic record yet. Please upload one.
[% END %]
[% END %]
diff --git a/svc/cover_images b/svc/cover_images
new file mode 100755
index 0000000000..d3a3c45983
--- /dev/null
+++ b/svc/cover_images
@@ -0,0 +1,77 @@
+#!/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 );