View | Details | Raw Unified | Return to bug 15595
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_15595_GoogleJacketsIntra_syspref.sql (+1 lines)
Line 0 Link Here
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');
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 175-180 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
175
('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'),
175
('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'),
176
('GoogleIndicTransliteration','0','','GoogleIndicTransliteration on the OPAC.','YesNo'),
176
('GoogleIndicTransliteration','0','','GoogleIndicTransliteration on the OPAC.','YesNo'),
177
('GoogleJackets','0',NULL,'if ON, displays jacket covers from Google Books API','YesNo'),
177
('GoogleJackets','0',NULL,'if ON, displays jacket covers from Google Books API','YesNo'),
178
('GoogleJacketsIntra', '0', NULL, 'Add cover images from Google Books to search results and item detail pages in the staff client.','YesNo'),
178
('GoogleOpenIDConnect', '0', NULL, 'if ON, allows the use of Google OpenID Connect for login', 'YesNo'),
179
('GoogleOpenIDConnect', '0', NULL, 'if ON, allows the use of Google OpenID Connect for login', 'YesNo'),
179
('GoogleOAuth2ClientID', '', NULL, 'Client ID for the web app registered with Google', 'Free'),
180
('GoogleOAuth2ClientID', '', NULL, 'Client ID for the web app registered with Google', 'Free'),
180
('GoogleOAuth2ClientSecret', '', NULL, 'Client Secret for the web app registered with Google', 'Free'),
181
('GoogleOAuth2ClientSecret', '', NULL, 'Client Secret for the web app registered with Google', 'Free'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/enhanced_content.pref (+9 lines)
Lines 123-128 Enhanced Content: Link Here
123
                  yes: Add
123
                  yes: Add
124
                  no: "Don't add"
124
                  no: "Don't add"
125
            - cover images from Google Books to search results and item detail pages on the OPAC.
125
            - cover images from Google Books to search results and item detail pages on the OPAC.
126
  
127
    Google:
128
        -
129
            - pref: GoogleJacketsIntra
130
              choices:
131
                  yes: Add
132
                  no: "Don't add"
133
            - cover images from Google Books to search results and item detail pages on the staff client.
134
126
    Open Library:
135
    Open Library:
127
        -
136
        -
128
            - pref: OpenLibraryCovers
137
            - pref: OpenLibraryCovers
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt (-2 / +11 lines)
Lines 64-70 Link Here
64
        <span class="Z3988" title="[% ocoins %]"></span>
64
        <span class="Z3988" title="[% ocoins %]"></span>
65
    [% END %]
65
    [% END %]
66
66
67
    [% IF ( AmazonCoverImages  || LocalCoverImages ) %]
67
    [% IF ( AmazonCoverImages  || LocalCoverImages ||  Koha.Preference('GoogleJacketsIntra')  ) %]
68
        [% IF ( XSLTDetailsDisplay ) %]
68
        [% IF ( XSLTDetailsDisplay ) %]
69
            <div class="yui-gc">
69
            <div class="yui-gc">
70
            <div id="catalogue_detail_biblio" class="yui-u first">
70
            <div id="catalogue_detail_biblio" class="yui-u first">
Lines 125-132 Link Here
125
            </span>
125
            </span>
126
        [% END %]
126
        [% END %]
127
127
128
        [% IF ( AmazonCoverImages  || LocalCoverImages ) %]
128
        [% IF ( AmazonCoverImages  || LocalCoverImages || Koha.Preference('GoogleJacketsIntra') ) %]
129
        </div><div class="yui-u" id="bookcoverimg">
129
        </div><div class="yui-u" id="bookcoverimg">
130
        [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]
131
            [% IF ( normalized_isbn ) %]
132
                <div style="display:block;" title="Click to view in Google Books" class="[% normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>
133
            [% ELSE %]
134
                <a href="http://books.google.com/books?q=[% SEARCH_RESULT.title |url %]"><span class="no-image">No cover image available</span></a>
135
            [% END %]
136
        [% END %]
130
        [% IF ( LocalCoverImages ) %]
137
        [% IF ( LocalCoverImages ) %]
131
            <div title="[% biblionumber |url %]" class="[% biblionumber %]" id="local-thumbnail-preview"></div>
138
            <div title="[% biblionumber |url %]" class="[% biblionumber %]" id="local-thumbnail-preview"></div>
132
        [% END %]
139
        [% END %]
Lines 849-854 Link Here
849
[% MACRO jsinclude BLOCK %]
856
[% MACRO jsinclude BLOCK %]
850
    [% INCLUDE 'catalog-strings.inc' %]
857
    [% INCLUDE 'catalog-strings.inc' %]
851
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/catalog.js"></script>
858
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/catalog.js"></script>
859
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/google-jackets.js"></script>
852
    [% INCLUDE 'greybox.inc' %]
860
    [% INCLUDE 'greybox.inc' %]
853
    <script type="text/javascript">
861
    <script type="text/javascript">
854
        // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
862
        // http://www.oreillynet.com/pub/a/javascript/2003/10/21/amazonhacks.html
Lines 1034-1039 Link Here
1034
        [% IF ( AmazonCoverImages || LocalCoverImages ) %]$(window).load(function() {
1042
        [% IF ( AmazonCoverImages || LocalCoverImages ) %]$(window).load(function() {
1035
            verify_images();
1043
            verify_images();
1036
        });[% END %]
1044
        });[% END %]
1045
        [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
1037
    </script>
1046
    </script>
1038
    [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectProfile') && ( normalized_isbn || normalized_upc ) ) %]
1047
    [% IF ( Koha.Preference('NovelistSelectStaffEnabled') && Koha.Preference('NovelistSelectProfile') && ( normalized_isbn || normalized_upc ) ) %]
1039
        <script type="text/javascript" src="https://imageserver.ebscohost.com/novelistselect/ns2init.js"></script>
1048
        <script type="text/javascript" src="https://imageserver.ebscohost.com/novelistselect/ns2init.js"></script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/results.tt (-1 / +12 lines)
Lines 356-362 Link Here
356
                        [% SET MaxSearchResultsItemsPerRecordStatusCheck = Koha.Preference('MaxSearchResultsItemsPerRecordStatusCheck') %]
356
                        [% SET MaxSearchResultsItemsPerRecordStatusCheck = Koha.Preference('MaxSearchResultsItemsPerRecordStatusCheck') %]
357
                        [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
357
                        [% FOREACH SEARCH_RESULT IN SEARCH_RESULTS %]
358
                            <tr>
358
                            <tr>
359
                            [% IF ( AmazonCoverImages || LocalCoverImages ) %]
359
                            [% IF AmazonCoverImages || LocalCoverImages || Koha.Preference('GoogleJacketsIntra') %]
360
                                <td>
360
                                <td>
361
                                    [% IF ( LocalCoverImages) %]
361
                                    [% IF ( LocalCoverImages) %]
362
                                        <a class="p1" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
362
                                        <a class="p1" href="/cgi-bin/koha/catalogue/[% DetailPage %]?biblionumber=[% SEARCH_RESULT.biblionumber |url %]">
Lines 373-378 Link Here
373
                                        [% END %]
373
                                        [% END %]
374
                                        </a>
374
                                        </a>
375
                                    [% END %]
375
                                    [% END %]
376
                                    [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]
377
                                        [% IF ( SEARCH_RESULT.normalized_isbn ) %]
378
                                            <div style="display:block;" title="Click to view in Google Books" class="[% SEARCH_RESULT.normalized_isbn %]" id="gbs-thumbnail[% loop.count %]"></div>
379
                                        [% ELSE %]
380
                                            <a href="http://books.google.com/books?q=[% SEARCH_RESULT.title |url %]"><span class="no-image">No cover image available</span></a>
381
                                        [% END %]
382
                                    [% END %]
383
376
                                </td>
384
                                </td>
377
                            [% END %]
385
                            [% END %]
378
                            <td>
386
                            <td>
Lines 624-629 Link Here
624
    <![endif]-->
632
    <![endif]-->
625
    <script type="text/javascript" src="[% interface %]/js/browser.js"></script>
633
    <script type="text/javascript" src="[% interface %]/js/browser.js"></script>
626
    <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
634
    <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
635
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/google-jackets.js"></script>
627
    <script type="text/javascript">
636
    <script type="text/javascript">
628
        var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
637
        var MSG_NO_ITEM_SELECTED = _("Nothing is selected.");
629
        var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be placed on hold.");
638
        var MSG_NON_RESERVES_SELECTED = _("One or more selected items cannot be placed on hold.");
Lines 746-751 Link Here
746
                KOHA.LocalCover.LoadResultsCovers();
755
                KOHA.LocalCover.LoadResultsCovers();
747
            [% END %]
756
            [% END %]
748
757
758
            [% IF ( Koha.Preference('GoogleJacketsIntra') ) %]KOHA.Google.GetCoverFromIsbn();[% END %]
759
749
            $("#select_all").on("click",function(e){
760
            $("#select_all").on("click",function(e){
750
                e.preventDefault();
761
                e.preventDefault();
751
                selectAll();
762
                selectAll();
(-)a/koha-tmpl/intranet-tmpl/prog/js/google-jackets.js (+76 lines)
Line 0 Link Here
1
if (typeof KOHA == "undefined" || !KOHA) {
2
    var KOHA = {};
3
}
4
5
/**
6
 * A namespace for Google related functions.
7
 */
8
KOHA.Google = {
9
10
11
    /**
12
     * Search all:
13
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail"></div>
14
     * or
15
     *    <div title="biblionumber" id="isbn" class="gbs-thumbnail-preview"></div>
16
     * and run a search with all collected isbns to Google Book Search.
17
     * The result is asynchronously returned by Google and catched by
18
     * gbsCallBack().
19
     */
20
    GetCoverFromIsbn: function(newWindow) {
21
        var bibkeys = [];
22
        $("[id^=gbs-thumbnail]").each(function(i) {
23
            bibkeys.push($(this).attr("class")); // id=isbn
24
        });
25
        bibkeys = bibkeys.join(',');
26
        var scriptElement = document.createElement("script");
27
        this.openInNewWindow=newWindow;
28
        scriptElement.setAttribute("id", "jsonScript");
29
        scriptElement.setAttribute("src",
30
            "https://books.google.com/books?bibkeys=" + escape(bibkeys) +
31
            "&jscmd=viewapi&callback=KOHA.Google.gbsCallBack");
32
        scriptElement.setAttribute("type", "text/javascript");
33
        document.documentElement.firstChild.appendChild(scriptElement);
34
35
    },
36
37
    /**
38
     * Add cover pages <div
39
     * and link to preview if div id is gbs-thumbnail-preview
40
     */
41
    gbsCallBack: function(booksInfo) {
42
         var target = '';
43
         if (this.openInNewWindow) {
44
            target = 'target="_blank" rel="noreferrer" ';
45
         }
46
         for (id in booksInfo) {
47
             var book = booksInfo[id];
48
             $("[id^=gbs-thumbnail]."+book.bib_key).each(function() {
49
                 var a = document.createElement("a");
50
                 a.href = book.info_url;
51
                 if (typeof(book.thumbnail_url) != "undefined") {
52
                     var img = document.createElement("img");
53
                     img.src = book.thumbnail_url;
54
                     $(this).empty().append(img);
55
                     var re = /^gbs-thumbnail-preview/;
56
                     if ( re.exec($(this).attr("id")) ) {
57
                         $(this).append(
58
                             '<div class="google-books-preview">' +
59
                             '<a '+target+'href="' +
60
                             book.info_url +
61
                             '"><img src="' +
62
                             'https://books.google.com/intl/en/googlebooks/images/gbs_preview_sticker1.gif' +
63
                             '"></a></div>'
64
                             );
65
                     }
66
                 } else {
67
                     var message = document.createElement("span");
68
                     $(message).attr("class","no-image");
69
                     $(message).html("No cover image available");
70
                     $(this).empty().append(message);
71
                 }
72
             });
73
         }
74
75
     }
76
};

Return to bug 15595