Bugzilla – Attachment 32944 Details for
Bug 9580
Cover image from Coce, a remote image URL cache
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 9580 Cover images from Coce, a remote image URL cache
Bug-9580-Cover-images-from-Coce-a-remote-image-URL.patch (text/plain), 15.82 KB, created by
Frédéric Demians
on 2014-10-29 20:52:59 UTC
(
hide
)
Description:
Bug 9580 Cover images from Coce, a remote image URL cache
Filename:
MIME Type:
Creator:
Frédéric Demians
Created:
2014-10-29 20:52:59 UTC
Size:
15.82 KB
patch
obsolete
>From d6456b193b12f3cd57b8dd84e495106dad92a84d Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Demians?= <f.demians@tamil.fr> >Date: Thu, 7 Feb 2013 09:55:29 +0100 >Subject: [PATCH] Bug 9580 Cover images from Coce, a remote image URL cache > >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: 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. >--- > C4/ShelfBrowser.pm | 2 + > installer/data/mysql/sysprefs.sql | 2 + > installer/data/mysql/updatedatabase.pl | 15 ++++++++ > .../admin/preferences/enhanced_content.pref | 9 +++++ > .../bootstrap/en/includes/opac-bottom.inc | 9 +++++ > .../bootstrap/en/includes/shelfbrowser.inc | 6 ++- > .../opac-tmpl/bootstrap/en/modules/opac-detail.tt | 14 +++++++ > .../opac-tmpl/bootstrap/en/modules/opac-results.tt | 10 +++++ > .../bootstrap/en/modules/svc/shelfbrowser.tt | 1 + > koha-tmpl/opac-tmpl/bootstrap/js/coce.js | 43 ++++++++++++++++++++++ > 10 files changed, 110 insertions(+), 1 deletion(-) > create mode 100644 koha-tmpl/opac-tmpl/bootstrap/js/coce.js > >diff --git a/C4/ShelfBrowser.pm b/C4/ShelfBrowser.pm >index 763b406..f06a12b 100644 >--- a/C4/ShelfBrowser.pm >+++ b/C4/ShelfBrowser.pm >@@ -73,6 +73,7 @@ to take into account. > print $_->{browser_normalized_upc}; > print $_->{browser_normalized_oclc}; > print $_->{browser_normalized_isbn}; >+ print $_->{browser_normalized_ean}; > } > > # This is the information required to scroll the browser to the next left >@@ -228,6 +229,7 @@ sub GetShelfInfo { > $item->{'browser_normalized_upc'} = GetNormalizedUPC($this_record,$marcflavour); > $item->{'browser_normalized_oclc'} = GetNormalizedOCLCNumber($this_record,$marcflavour); > $item->{'browser_normalized_isbn'} = GetNormalizedISBN(undef,$this_record,$marcflavour); >+ $item->{'browser_normalized_ean'} = GetNormalizedEAN($this_record,$marcflavour); > push @valid_items, $item; > } > return @valid_items; >diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql >index e881086..0223c76 100644 >--- a/installer/data/mysql/sysprefs.sql >+++ b/installer/data/mysql/sysprefs.sql >@@ -86,6 +86,8 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` > ('CircAutocompl','1',NULL,'If ON, autocompletion is enabled for the Circulation input','YesNo'), > ('CircAutoPrintQuickSlip','qslip',NULL,'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window, Display a print slip window or Clear the screen.','Choice'), > ('CircControl','ItemHomeLibrary','PickupLibrary|PatronLibrary|ItemHomeLibrary','Specify the agency that controls the circulation and fines policy','Choice'), >+('CoceHost', NULL, NULL, 'Coce server URL', 'Free'), >+('CoceProviders', NULL, NULL, 'Coce providers, for example aws,gb', 'Free'), > ('COinSinOPACResults','1','','If ON, use COinS in OPAC search results page. NOTE: this can slow down search response time significantly','YesNo'), > ('ConfirmFutureHolds','0','','Number of days for confirming future holds','Integer'), > ('CurrencyFormat','US','US|FR','Determines the display format of currencies. eg: \'36000\' is displayed as \'360 000,00\' in \'FR\' or \'360,000.00\' in \'US\'.','Choice'), >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 5064c40..11ac656 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -8891,6 +8891,21 @@ if ( CheckVersion($DBversion) ) { > SetVersion($DBversion); > } > >+$DBversion = "3.17.00.XXX"; >+if ( CheckVersion($DBversion) ) { >+ $dbh->do(q{ >+ INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) >+ VALUES('CoceHost', NULL, 'Coce server URL', NULL,'Free') >+ }); >+ $dbh->do(q{ >+ INSERT IGNORE INTO systempreferences (variable, value, explanation, options, type) >+ VALUES('CoceProviders', NULL, 'Coce Providers, for example: aws,gb', NULL,'Free') >+ }); >+ print "Upgrade to $DBversion done (Bug 9580 - Cover image from Coce, a remote image URL cache)\n"; >+ SetVersion($DBversion); >+} >+ >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref >index 627f095..cf639aa 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref >@@ -337,3 +337,12 @@ Enhanced Content: > - "Show items from the OverDrive catalog of library #" > - pref: OverDriveLibraryID > - . >+ Coce Cover images cache: >+ - >+ - Coce server URL >+ - pref: CoceHost >+ class: url >+ - >+ - Providers >+ - pref: CoceProviders >+ - 'separated by comma, for example: aws,gb. Leave empty not to activate this service.' >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc >index 596341a..90abca1 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-bottom.inc >@@ -166,6 +166,15 @@ $.widget.bridge('uitooltip', $.ui.tooltip); > //]]> > </script> > [% END %] >+[% IF Koha.Preference('CoceProviders') %] >+ <script type="text/javascript" src="[% interface %]/[% theme %]/js/coce.js"></script> >+ <script type="text/javascript"> >+ //<![CDATA[ >+ var NO_COCE_JACKET = _("No cover image available"); >+ //]]> >+ </script> >+[% END %] >+ > [% IF OpenLibraryCovers %] > <script type="text/javascript" src="[% interface %]/[% theme %]/js/openlibrary.js"></script> > <script type="text/javascript"> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc >index bc5ef2c..9140199 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/shelfbrowser.inc >@@ -53,6 +53,10 @@ > <span class="no-image">No cover image available</span> > [% END %] > [% END %] >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ [% coce_id = item.browser_normalized_ean || item.browser_normalized_isbn %] >+ <div title="[% item.biblionumber |url %]" class="[% coce_id %]" id="coce-thumbnail-preview-[% coce_id %]"></div> >+ [% END %] > [% IF ( BakerTaylorEnabled ) %] > [% IF ( item.browser_normalized_isbn ) %] > <img alt="See Baker & Taylor" src="[% BakerTaylorImageURL |html %][% item.browser_normalized_isbn %]" /> >@@ -83,4 +87,4 @@ > </table> > </div> > [% END # /IF OpenOPACShelfBrowser %] >-[% END # end of shelfbrowser block %] >\ No newline at end of file >+[% END # end of shelfbrowser block %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >index e641d76..8efbb58 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt >@@ -79,6 +79,10 @@ > [% IF ( GoogleJackets ) %] > <div title="[% biblionumber |url %]" class="[% normalized_isbn %]" id="gbs-thumbnail-preview"></div> > [% END %] >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ [% coce_id = normalized_ean || normalized_isbn %] >+ <div style="block" title="[% biblionumber |url %]" class="[% coce_id %]" id="coce-thumbnail-preview"></div> >+ [% END %] > [% IF OpenLibraryCovers %] > <div title="[% biblionumber |url %]" class="[% normalized_isbn %]" id="openlibrary-thumbnail-preview"></div> > [% END %] >@@ -1430,6 +1434,10 @@ > [% IF ( GoogleJackets ) %] > KOHA.Google.GetCoverFromIsbn([% covernewwindow %]); > [% END %] >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ KOHA.coce.getURL('[% Koha.Preference('CoceHost') %]', '[% Koha.Preference('CoceProviders') %]',[% covernewwindow %]); >+ [% END %] >+ > [% IF OpenLibraryCovers %] > KOHA.OpenLibrary.GetCoverFromIsbn(); > [% END %] >@@ -1487,6 +1495,9 @@ > [% IF ( GoogleJackets ) %] > KOHA.Google.GetCoverFromIsbn([% covernewwindow %]); > [% END %] >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ KOHA.coce.getURL('[% Koha.Preference('CoceHost') %]', '[% Koha.Preference('CoceProviders') %]',[% covernewwindow %]); >+ [% END %] > [% IF OpenLibraryCovers %] > KOHA.OpenLibrary.GetCoverFromIsbn(); > [% END %] >@@ -1510,6 +1521,9 @@ > [% IF ( GoogleJackets ) %] > KOHA.Google.GetCoverFromIsbn([% covernewwindow %]); > [% END %] >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ KOHA.coce.getURL('[% Koha.Preference('CoceHost') %]', '[% Koha.Preference('CoceProviders') %]',[% covernewwindow %]); >+ [% END %] > [% IF OpenLibraryCovers %] > KOHA.OpenLibrary.GetCoverFromIsbn(); > [% END %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >index 72a3a89..a5a8611 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-results.tt >@@ -257,6 +257,15 @@ > [% END %] > [% END %] > >+ [% IF ( Koha.Preference('CoceProviders') ) %] >+ [% coce_id = SEARCH_RESULT.normalized_ean || SEARCH_RESULT.normalized_isbn %] >+ [% IF ( coce_id ) %] >+ <span style="block" title="[% SEARCH_RESULT.biblionumber |url %]" class="[% coce_id %]" id="coce-thumbnail[% loop.count %]"></span> >+ [% ELSE %] >+ <span class="no-image">No cover image available</span> >+ [% END %] >+ [% END %] >+ > [% IF OpenLibraryCovers %] > [% IF SEARCH_RESULT.normalized_isbn %] > <span style="block" title="[% SEARCH_RESULT.biblionumber %]" class="[% SEARCH_RESULT.normalized_isbn %]" id="openlibrary-thumbnail[% loop.count %]"></span> >@@ -908,6 +917,7 @@ $(document).ready(function(){ > [% IF OpenLibraryCovers %]KOHA.OpenLibrary.GetCoverFromIsbn();[% END %] > [% IF OPACLocalCoverImages %]KOHA.LocalCover.GetCoverFromBibnumber(false);[% END %] > [% IF ( GoogleJackets ) %]KOHA.Google.GetCoverFromIsbn();[% END %] >+[% IF ( Koha.Preference('CoceProviders') ) %]KOHA.coce.getURL('[% Koha.Preference('CoceHost') %]', '[% Koha.Preference('CoceProviders') %]');[% END %] > > [% IF ( DidYouMean ) %] > $("#didyoumean").load("/cgi-bin/koha/svc/suggestion?render=stub&q=[% querystring |uri %]", >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt >index 50e2b40..6af6d66 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/svc/shelfbrowser.tt >@@ -1,2 +1,3 @@ >+[% USE Koha %] > [% PROCESS 'shelfbrowser.inc' %] > [% INCLUDE shelfbrowser %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/js/coce.js b/koha-tmpl/opac-tmpl/bootstrap/js/coce.js >new file mode 100644 >index 0000000..95669a0 >--- /dev/null >+++ b/koha-tmpl/opac-tmpl/bootstrap/js/coce.js >@@ -0,0 +1,43 @@ >+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); >+ }); >+ } >+ } >+ }); >+ } >+ >+}; >-- >2.1.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 9580
:
15203
|
16778
|
21162
|
24071
|
24145
|
32794
|
32795
|
32801
|
32808
|
32809
|
32857
|
32891
|
32929
|
32942
|
32944
|
33201
|
34678
|
34679
|
37409
|
37410