Frédéric Demians
9570439c50
Add to Koha support for displaying Book cover requested to Coce, a remote image URL cache: https://github.com/fredericd/coce With this enhancement, cover images are not fetched directly from Amazon, Google, and so on. Their URL are requested via a web service to Coce which manages a cache of URLs. Three cover image providers are now available: Google Books (gb), Amazon (aws), and Open Library (ol). Two system preferences enable this service: - CoceHost - URL of Coce server - CoceProviders - Ordered list of requested providers. For example gb,aws,ol, will return the first available URL from those providers. Several advantages to this architecture: - If a book cover is not available from a provider, but is available from another one, Koha will be able to display a book cover, which isn't the case now - Since URLs are cached, it isn't necessary for each book cover to request, again and again, the provider, and several of them if necessary. - Amazon book covers are retrieved with Amazon Product Advertising API, which means that more covers are retrieved (ISBN13). Test plan: - Apply this patch, and test with 'Bootstrap' themes - You can verify that nothing has changed on OPAC result and detail page, since new syspref haven't been filled - Install Code: https://github.com/fredericd/coce Or ask me directly for the URL of a Coce server - In sysprefs, tab Enhanced content, modify: CoceHost -- enter the URL of your Coce server CoceProviders -- fill with: gb,aws,ol - Do a search. On result page, and detail page, you will see cover images originating from the 3 providers: fly over the image to see its URL. Try to compare with a Koha with just GoogleJacket or Amazon cover to confirm that you have more images. Verify that it's quick, and even quicker for cached images URLs. - Check that Browse Shelf functionnality works properly. - The ID sent to Coce is EAN or ISBN. Try with various type of biblios. DVD have often EAN, but no ISBN. - You can try with those sysprefs: CoceProviders: aws,gb CoceHost: http://coce.tamil.fr:8080 and this EAN (or ISBN): 3333297517744 => OPACAmazonCoverImages enabled doesn't display a cover because, it's a DVD => Coce find and display the DVD cover. Signed-off-by: Mark Tompsett <mtompset@hotmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Amended patch: replaced 1 tab with spaces in C4/Shelfbrowser.pm Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
if (KOHA === undefined || !KOHA) { var KOHA = {}; }
|
|
|
|
|
|
/**
|
|
* A namespace for Coce cover images cache
|
|
*/
|
|
KOHA.coce = {
|
|
|
|
/**
|
|
* Search all:
|
|
* <div title="biblionumber" id="isbn" class="coce-thumbnail"></div>
|
|
* or
|
|
* <div title="biblionumber" id="isbn" class="coce-thumbnail-preview"></div>
|
|
* and run a search with all collected isbns to coce cover service.
|
|
* The result is asynchronously returned, and used to append <img>.
|
|
*/
|
|
getURL: function(host,provider,newWindow) {
|
|
var ids = [];
|
|
$("[id^=coce-thumbnail]").each(function(i) {
|
|
var id = $(this).attr("class"); // id=isbn
|
|
if ( id !== '' ) { ids.push(id); }
|
|
});
|
|
if (ids.length == 0) return;
|
|
ids = ids.join(',');
|
|
var coceURL = host + '/cover?id=' + ids + '&provider=' + provider;
|
|
$.ajax({
|
|
url: coceURL,
|
|
dataType: 'jsonp',
|
|
success: function(urlPerID){
|
|
for (var id in urlPerID) {
|
|
var url = urlPerID[id];
|
|
$("[id^=coce-thumbnail]."+id).each(function() {
|
|
var img = document.createElement("img");
|
|
img.src = url;
|
|
img.title = url; //FIXME: to delete
|
|
$(this).html(img);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
};
|