afac4d335aa473b76c48a4499b543c1ceca227c4
[koha_ffzg] / koha-tmpl / opac-tmpl / prog / en / js / openlibrary.js
1 if (typeof KOHA == "undefined" || !KOHA) {
2     var KOHA = {};
3 }
4
5 /**
6  * A namespace for OpenLibrary related functions.
7  */
8 KOHA.OpenLibrary = {
9
10
11     /**
12      * Search all:
13      *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail"></div>
14      * or
15      *    <div title="biblionumber" id="isbn" class="openlibrary-thumbnail-preview"></div>
16      * and run a search with all collected isbns to Open Library Book Search.
17      * The result is asynchronously returned by OpenLibrary and catched by
18      * olCallBack().
19      */
20     GetCoverFromIsbn: function() {
21         var bibkeys = [];
22         $("div [id^=openlibrary-thumbnail]").each(function(i) {
23             bibkeys.push("ISBN:" + $(this).attr("class")); // id=isbn
24         });
25         bibkeys = bibkeys.join(',');
26         var scriptElement = document.createElement("script");
27         scriptElement.setAttribute("id", "jsonScript");
28         scriptElement.setAttribute("src",
29             "http://openlibrary.org/api/books?bibkeys=" + escape(bibkeys) +
30             "&callback=KOHA.OpenLibrary.olCallBack&jscmd=data");
31         scriptElement.setAttribute("type", "text/javascript");
32         document.documentElement.firstChild.appendChild(scriptElement);
33
34     },
35
36
37
38     /**
39      * Add cover pages <div
40      * and link to preview if div id is gbs-thumbnail-preview
41      */
42     olCallBack: function(booksInfo) {
43     for (id in booksInfo) {
44        var book = booksInfo[id];
45        var isbn = id.substring(5);
46        $("."+isbn).each(function() {
47        var is_opacdetail = /openlibrary-thumbnail-preview/.exec($(this).attr("id"));
48            var a = document.createElement("a");
49            a.href = booksInfo.url;
50            if (book.cover) {
51                var img = document.createElement("img");
52                if (is_opacdetail) {
53         img.src = book.cover.medium;
54         $(this).append(img);
55                 $(this).append(
56                        '<div class="results_summary">' + '<a href="' + book.url + '">Preview</a></div>'
57                    );
58                } else {
59             img.src = book.cover.small;
60             $(this).append(img);
61         }
62            } else {
63                var message =  document.createElement("span");
64                $(message).attr("class","no-image");
65                $(message).html(NO_OL_JACKET);
66                $(this).append(message);
67            }
68        });
69    }
70  }
71 };