[Koha-patches] [PATCH] [SIGNED-OFF] Bug 5522 - allow google preview to open in a new window

Nicole Engard nengard at bywatersolutions.com
Fri Dec 17 04:34:13 CET 2010


From: Robin Sheat <robin at catalyst.net.nz>

If the OPACURLOpenInNewWindow system is set, then google preview links
will obey it.

Signed-off-by: Nicole Engard <nengard at bywatersolutions.com>
---
 koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js   |   65 +++++++++++---------
 .../opac-tmpl/prog/en/modules/opac-detail.tmpl     |    2 +-
 opac/opac-detail.pl                                |    8 +++
 3 files changed, 44 insertions(+), 31 deletions(-)

diff --git a/koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js b/koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js
index 45a4bb8..f7aa897 100644
--- a/koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js
+++ b/koha-tmpl/opac-tmpl/prog/en/js/google-jackets.js
@@ -17,13 +17,14 @@ KOHA.Google = {
      * The result is asynchronously returned by Google and catched by
      * gbsCallBack().
      */
-    GetCoverFromIsbn: function() {
+    GetCoverFromIsbn: function(newWindow) {
         var bibkeys = [];
         $("div [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",
             "http://books.google.com/books?bibkeys=" + escape(bibkeys) +
@@ -38,33 +39,37 @@ KOHA.Google = {
      * and link to preview if div id is gbs-thumbnail-preview
      */
     gbsCallBack: function(booksInfo) {
-        for (id in booksInfo) {
-            var book = booksInfo[id];
-            $("."+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).append(img);
-                    var re = /^gbs-thumbnail-preview/;
-                    if ( re.exec($(this).attr("id")) ) {
-                        $(this).append(
-                            '<div style="margin-bottom:5px; margin-top:-5px;font-size:9px">' +
-                            '<a href="' + 
-                            book.info_url + 
-                            '"><img src="' +
-                            'http://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_GOOGLE_JACKET);
-					$(this).append(message);
-				}
-            });
-        }
-    }
+         var target = '';
+         if (this.openInNewWindow) {
+            target = 'target="_blank" ';
+         }
+         for (id in booksInfo) {
+             var book = booksInfo[id];
+             $("."+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).append(img);
+                     var re = /^gbs-thumbnail-preview/;
+                     if ( re.exec($(this).attr("id")) ) {
+                         $(this).append(
+                             '<div style="margin-bottom:5px; margin-top:-5px;font-size:9px">' +
+                             '<a '+target+'href="' +
+                             book.info_url +
+                             '"><img src="' +
+                             'http://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_GOOGLE_JACKET);
+                     $(this).append(message);
+                 }
+             });
+         }
+     }
 };
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
index e83ea3a..8725f91 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-detail.tmpl
@@ -22,7 +22,7 @@
             widgets : ['zebra'],
             sortList: [[0,0]]
         });<!-- TMPL_IF NAME="GoogleJackets" -->
-        KOHA.Google.GetCoverFromIsbn();<!-- /TMPL_IF --><!-- TMPL_IF NAME="TagsEnabled" -->
+        KOHA.Google.GetCoverFromIsbn(<!-- TMPL_VAR name="covernewwindow" -->);<!-- /TMPL_IF --><!-- TMPL_IF NAME="TagsEnabled" -->
         $(".tagbutton").click(KOHA.Tags.add_tag_button);<!-- /TMPL_IF -->
 		<!-- TMPL_IF NAME="opacbookbag" -->$("a.print").parent().after("<li><a class=\"addtocart\" href=\"#\" onclick=\"addRecord('"+$("input[name=bib]").val()+"'); return false;\">"+_("Add to Your Cart")+"<\/a><\/li>");
 <!-- /TMPL_IF -->});
diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl
index cf5edf7..309f01d 100755
--- a/opac/opac-detail.pl
+++ b/opac/opac-detail.pl
@@ -582,6 +582,14 @@ if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->pref
 								'sort'=>'-weight', limit=>$tag_quantity}));
 }
 
+if (C4::Context->preference("OPACURLOpenInNewWindow")) {
+    # These values are going to be read by Javascript, at least in the case
+    # of the google covers
+    $template->param(covernewwindow => 'true');
+} else {
+    $template->param(covernewwindow => 'false');
+}
+
 #Search for title in links
 my $marccontrolnumber   = GetMarcControlnumber   ($record, $marcflavour);
 
-- 
1.5.6.5



More information about the Koha-patches mailing list