From b7c81e5de19a28c8d71a8061cfd1a8d9cab35e2e Mon Sep 17 00:00:00 2001 From: Jenny Way <jwayway@hotmail.com> Date: Thu, 18 Jan 2018 21:04:23 +0000 Subject: [PATCH] Bug-15595: Google cover staff search and detail Test plan: 1. Apply patch 2. In system preferences enable GoogleJacketsIntra 3. Cover images from Google should show in results page and detail page 4. If the record doesn't have a cover, it should display "No cover image available" 4. Disabling the GoogleJacketIntra will cause the cover images not to show 5. Without patch there is no GoogleJacketsIntra syspref --- .../bug_15595_GoogleJacketsIntra_syspref.sql | 1 + installer/data/mysql/sysprefs.sql | 1 + .../admin/preferences/enhanced_content.pref | 9 +++ .../prog/en/modules/catalogue/.detail.tt.swo | Bin 0 -> 16384 bytes .../prog/en/modules/catalogue/.results.tt.swp | Bin 0 -> 16384 bytes .../prog/en/modules/catalogue/detail.tt | 13 +++- .../prog/en/modules/catalogue/results.tt | 13 +++- koha-tmpl/intranet-tmpl/prog/js/google-jackets.js | 76 +++++++++++++++++++++ .../bootstrap/en/modules/.opac-detail.tt.swp | Bin 0 -> 16384 bytes 9 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_15595_GoogleJacketsIntra_syspref.sql create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.detail.tt.swo create mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.results.tt.swp create mode 100644 koha-tmpl/intranet-tmpl/prog/js/google-jackets.js create mode 100644 koha-tmpl/opac-tmpl/bootstrap/en/modules/.opac-detail.tt.swp diff --git a/installer/data/mysql/atomicupdate/bug_15595_GoogleJacketsIntra_syspref.sql b/installer/data/mysql/atomicupdate/bug_15595_GoogleJacketsIntra_syspref.sql new file mode 100644 index 0000000..f65bd9c --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_15595_GoogleJacketsIntra_syspref.sql @@ -0,0 +1 @@ +INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`,`type`) VALUES ('GoogleJacketsIntra', '0', NULL, 'Add cover images from Google Books to search results and item detail pages in the staff client.','YesNo'); diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 23cefb8..f407474 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -175,6 +175,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('gist','0','','Default Goods and Services tax rate NOT in %, but in numeric form (0.12 for 12%), set to 0 to disable GST','Integer'), ('GoogleIndicTransliteration','0','','GoogleIndicTransliteration on the OPAC.','YesNo'), ('GoogleJackets','0',NULL,'if ON, displays jacket covers from Google Books API','YesNo'), +('GoogleJacketsIntra', '0', NULL, 'Add cover images from Google Books to search results and item detail pages in the staff client.','YesNo'), ('GoogleOpenIDConnect', '0', NULL, 'if ON, allows the use of Google OpenID Connect for login', 'YesNo'), ('GoogleOAuth2ClientID', '', NULL, 'Client ID for the web app registered with Google', 'Free'), ('GoogleOAuth2ClientSecret', '', NULL, 'Client Secret for the web app registered with Google', 'Free'), 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 f62882d..a57272d 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 @@ -123,6 +123,15 @@ Enhanced Content: yes: Add no: "Don't add" - cover images from Google Books to search results and item detail pages on the OPAC. + + Google: + - + - pref: GoogleJacketsIntra + choices: + yes: Add + no: "Don't add" + - cover images from Google Books to search results and item detail pages on the staff client. + Open Library: - - pref: OpenLibraryCovers diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.detail.tt.swo b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.detail.tt.swo new file mode 100644 index 0000000000000000000000000000000000000000..57462c8e786c73f7e85ee344fa643e774b356e2d GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.results.tt.swp b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/.results.tt.swp new file mode 100644 index 0000000000000000000000000000000000000000..767950c1ea3560c501ce88bb3b70e05c6bb0701a GIT binary patch literal 16384 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 D{bK5F literal 0 HcmV?d00001 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 be5932b..09a9370 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -64,7 +64,7 @@ <span class="Z3988" title="[% ocoins %]"></span> [% END %] - [% IF ( AmazonCoverImages || LocalCoverImages ) %] + [% IF ( AmazonCoverImages || LocalCoverImages || Koha.Preference('GoogleJacketsIntra') ) %] [% IF ( XSLTDetailsDisplay ) %] <div class="yui-gc"> <div id="catalogue_detail_biblio" class="yui-u first"> @@ -125,8 +125,15 @@ </span> [% END %] - [% IF ( AmazonCoverImages || LocalCoverImages ) %] + [% IF ( AmazonCoverImages || LocalCoverImages || Koha.Preference('GoogleJacketsIntra') ) %] </div><div class="yui-u" id="bookcoverimg"> + [% IF ( Koha.Preference('GoogleJacketsIntra') ) %] + [% IF ( normalized_isbn ) %] + <div style="display:block;" title="Click to view in Google Books" class="[% normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div> + [% ELSE %] + <a href="http://books.google.com/books?q=[% SEARCH_RESULT.title |url %]"><span class="no-image">No cover image available</span></a> + [% END %] + [% END %] [% IF ( LocalCoverImages ) %] <div title="[% biblionumber |url %]" class="[% biblionumber %]" id="local-thumbnail-preview"></div> [% END %] @@ -849,6 +856,7 @@ [% MACRO jsinclude BLOCK %] [% INCLUDE 'catalog-strings.inc' %] <script type="text/javascript" src="[% interface %]/[% theme %]/js/catalog.js"></script> + <script type="text/javascript" src="[% interface %]/[% theme %]/js/google-jackets.js"></script> [% INCLUDE 'greybox.inc' %] <script type="text/javascript"> // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html @@ -1034,6 +1042,7 @@ [% IF ( AmazonCoverImages || LocalCoverImages ) %]$(window).load(function() { verify_images(); });[% END %] + [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]KOHA.Google.GetCoverFromIsbn();[% END %] </script> [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectProfile') && ( normalized_isbn || normalized_upc ) ) %] <script type="text/javascript" src="https://imageserver.ebscohost.com/novelistselect/ns2init.js"></script> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt index 87ed564..0ea1e4b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt @@ -356,7 +356,7 @@ [% SET MaxSearchResultsItemsPerRecordStatusCheck = Koha.Preference('MaxSearchResultsItemsPerRecordStatusCheck') %] [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %] <tr> - [% IF ( AmazonCoverImages || LocalCoverImages ) %] + [% IF AmazonCoverImages || LocalCoverImages || Koha.Preference('GoogleJacketsIntra') %] <td> [% IF ( LocalCoverImages) %] <a class="p1" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]"> @@ -373,6 +373,14 @@ [% END %] </a> [% END %] + [% IF ( Koha.Preference('GoogleJacketsIntra') ) %] + [% IF ( SEARCH_RESULT.normalized_isbn ) %] + <div style="display:block;" title="Click to view in Google Books" class="[% SEARCH_RESULT.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div> + [% ELSE %] + <a href="http://books.google.com/books?q=[% SEARCH_RESULT.title |url %]"><span class="no-image">No cover image available</span></a> + [% END %] + [% END %] + </td> [% END %] <td> @@ -624,6 +632,7 @@ <![endif]--> <script type="text/javascript" src="[% interface %]/js/browser.js"></script> <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.fixFloat.js"></script> + <script type="text/javascript" src="[% interface %]/[% theme %]/js/google-jackets.js"></script> <script type="text/javascript"> var MSG_NO_ITEM_SELECTED = _("Nothing is selected."); var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be placed on hold."); @@ -746,6 +755,8 @@ KOHA.LocalCover.LoadResultsCovers(); [% END %] + [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]KOHA.Google.GetCoverFromIsbn();[% END %] + $("#select_all").on("click",function(e){ e.preventDefault(); selectAll(); diff --git a/koha-tmpl/intranet-tmpl/prog/js/google-jackets.js b/koha-tmpl/intranet-tmpl/prog/js/google-jackets.js new file mode 100644 index 0000000..3ba42ee --- /dev/null +++ b/koha-tmpl/intranet-tmpl/prog/js/google-jackets.js @@ -0,0 +1,76 @@ +if (typeof KOHA == "undefined" || !KOHA) { + var KOHA = {}; +} + +/** + * A namespace for Google related functions. + */ +KOHA.Google = { + + + /** + * Search all: + * <div title="biblionumber" id="isbn" class="gbs-thumbnail"></div> + * or + * <div title="biblionumber" id="isbn" class="gbs-thumbnail-preview"></div> + * and run a search with all collected isbns to Google Book Search. + * The result is asynchronously returned by Google and catched by + * gbsCallBack(). + */ + GetCoverFromIsbn: function(newWindow) { + var bibkeys = []; + $("[id^=gbs-thumbnail]").each(function(i) { + bibkeys.push($(this).attr("class")); // id=isbn + }); + bibkeys = bibkeys.join(','); + var scriptElement = document.createElement("script"); + this.openInNewWindow=newWindow; + scriptElement.setAttribute("id", "jsonScript"); + scriptElement.setAttribute("src", + "https://books.google.com/books?bibkeys=" + escape(bibkeys) + + "&jscmd=viewapi&callback=KOHA.Google.gbsCallBack"); + scriptElement.setAttribute("type", "text/javascript"); + document.documentElement.firstChild.appendChild(scriptElement); + + }, + + /** + * Add cover pages <div + * and link to preview if div id is gbs-thumbnail-preview + */ + gbsCallBack: function(booksInfo) { + var target = ''; + if (this.openInNewWindow) { + target = 'target="_blank" rel="noreferrer" '; + } + for (id in booksInfo) { + var book = booksInfo[id]; + $("[id^=gbs-thumbnail]."+book.bib_key).each(function() { + var a = document.createElement("a"); + a.href = book.info_url; + if (typeof(book.thumbnail_url) != "undefined") { + var img = document.createElement("img"); + img.src = book.thumbnail_url; + $(this).empty().append(img); + var re = /^gbs-thumbnail-preview/; + if ( re.exec($(this).attr("id")) ) { + $(this).append( + '<div class="google-books-preview">' + + '<a '+target+'href="' + + book.info_url + + '"><img src="' + + 'https://books.google.com/intl/en/googlebooks/images/gbs_preview_sticker1.gif' + + '"></a></div>' + ); + } + } else { + var message = document.createElement("span"); + $(message).attr("class","no-image"); + $(message).html("No cover image available"); + $(this).empty().append(message); + } + }); + } + + } +}; diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/.opac-detail.tt.swp b/koha-tmpl/opac-tmpl/bootstrap/en/modules/.opac-detail.tt.swp new file mode 100644 index 0000000000000000000000000000000000000000..d63d3bdf131e3dfaa4e1cb35b48f9a2e087a9cbb GIT binary patch literal 16384 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 SO(1>Vm0>KUFj%K@{l5W=75Wqa literal 0 HcmV?d00001 -- 2.1.4