From 98b1dfa9fab13f0f00c432963c1f79a081616e86 Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Wed, 25 May 2011 12:50:37 -0400 Subject: [PATCH] Fix misalignment of SFX results to bib entries Querying at the record level ensures that the async requests don't mess up our attempt to synchronize the SFX results with the bibs to which they belong. Signed-off-by: Dan Scott --- web/opac/skin/algoma/xml/result/result_table.xml | 124 +++++++++++------------ web/opac/skin/default/js/rdetail.js | 2 +- web/opac/skin/default/js/result_common.js | 2 +- web/opac/skin/lul/xml/result/result_table.xml | 124 +++++++++++------------ 4 files changed, 118 insertions(+), 134 deletions(-) diff --git a/web/opac/skin/algoma/xml/result/result_table.xml b/web/opac/skin/algoma/xml/result/result_table.xml index 84acae1bc3..0ad16fdd95 100644 --- a/web/opac/skin/algoma/xml/result/result_table.xml +++ b/web/opac/skin/algoma/xml/result/result_table.xml @@ -85,74 +85,68 @@ - - + - - - - 0) { - try { - var ses = new OpenSRF.ClientSession('open-ils.resolver'); - var req = ses.request('open-ils.resolver.resolve_holdings.raw', 'issn', issn, 'http://sfx.scholarsportal.info/algoma'); - req.oncomplete = function(r) { - var resolverInfo = ""; - dojo.forEach(r.recv().content(), function(entry) { - resolverInfo = entry.public_name + "_" + entry.target_coverage; - if (title_list.indexOf(this_title_id) == -1) { - url_list = ""; - } - if (url_list.indexOf(resolverInfo) == -1) { - var resolverNode = null; - dojo.query('.recid').forEach(function(recinfo) { - if (parseFloat(dojo.trim(BT.textContent(recinfo))) == parseFloat(this_title_id)) { - resolverNode = recinfo; - } - }); - url_list += resolverInfo; - var output = null; - if (resolverNode != null) { - var parent = resolverNode.parentNode; - if (parent) { - parent = parent.parentNode; - } - if (parent) { - dojo.removeClass(parent,'hide_me'); + var this_title_id; + + dojo.query('datafield[tag="901"] subfield[code="c"]', item).forEach(function (item) { + this_title_id = dojo.trim(BT.textContent(item)); + }); + + dojo.query('datafield[tag="022"] subfield', item).forEach(function(item) { + var issn = ''; + issn = BT.textContent(item) + ''; + issn = issn.replace(/^(\s|.)*?(\d{4}).(\d{3,4}[xX]?)(\s|.)*/, "$2-$3"); + if (issn.length > 0) { + try { + var ses = new OpenSRF.ClientSession('open-ils.resolver'); + var req = ses.request('open-ils.resolver.resolve_holdings.raw', + 'issn', issn, 'http://sfx.scholarsportal.info/algoma'); + req.oncomplete = function(r) { + var resolverInfo = ""; + dojo.forEach(r.recv().content(), function(entry) { + resolverInfo = entry.public_name + "_" + entry.target_coverage; + if (title_list.indexOf(this_title_id) == -1) { + url_list = ""; + } + if (url_list.indexOf(resolverInfo) == -1) { + var resolverNode = null; + dojo.query('.recid').forEach(function(recinfo) { + if (parseFloat(dojo.trim(BT.textContent(recinfo))) == parseFloat(this_title_id)) { + resolverNode = recinfo; + } + }); + url_list += resolverInfo; + var output = null; + if (resolverNode != null) { + var parent = resolverNode.parentNode; + if (parent) { + parent = parent.parentNode; + } + if (parent) { + dojo.removeClass(parent,'hide_me'); + } + output = dojo.create('div',{"style":"background-color:#EEFFEE;"},resolverNode,"last"); + dojo.addClass(output,"result_table_sfx_cell"); + title_list += this_title_id; + var link = dojo.create('a', {"style": "margin-left: 1em;", "class":"search_link", "href": entry.target_url}); + var link_text = dojo.doc.createTextNode( entry.public_name); + link.appendChild(link_text); + output.appendChild(link); + var coverage_text = dojo.doc.createTextNode(' - ' + entry.target_coverage + + (entry.target_embargo ? (' / ' + entry.target_embargo) : '')); + output.appendChild(coverage_text); + resolved[this_title_id] = true; } - output = dojo.create('div',{"style":"background-color:#EEFFEE;"},resolverNode,"last"); - dojo.addClass(output,"result_table_sfx_cell"); - title_list += this_title_id; - var link = dojo.create('a', {"style": "margin-left: 1em;", "class":"search_link", "href": entry.target_url}); - var link_text = dojo.doc.createTextNode( entry.public_name); - link.appendChild(link_text); - output.appendChild(link); - var coverage_text = dojo.doc.createTextNode(' - ' + entry.target_coverage - + (entry.target_embargo ? (' / ' + entry.target_embargo) : '')); - output.appendChild(coverage_text); - resolved[this_title_id] = true; } - } - }); - }; - req.send(); - } catch (err) { alert(err.message);} - } + }); + }; + req.send(); + } catch (err) { alert(err.message);} + } + }); ]]> + @@ -226,7 +220,6 @@ var output = dojo.create('span'); dojo.query('volumes volume uris uri', item).forEach(function(xitem) { - var this_title_id = curr_title_id; if (resolved[this_title_id]) { return; } var uri = new Object; uri.href = xitem.getAttribute('href'); @@ -392,7 +385,6 @@ config.names.result.format_pic = 'format_pic' var url_list = ""; var title_list = ""; - var curr_title_id = ""; var resolved = {}; diff --git a/web/opac/skin/default/js/rdetail.js b/web/opac/skin/default/js/rdetail.js index facce536f3..9619f4fd6a 100644 --- a/web/opac/skin/default/js/rdetail.js +++ b/web/opac/skin/default/js/rdetail.js @@ -1145,7 +1145,7 @@ function rdetailCheckForGBPreview() { function searchForGBPreview( isbn ) { dojo.require("dojo.io.script"); dojo.io.script.get({"url": "https://www.google.com/jsapi"}); - dojo.io.script.get({"url": "http://books.google.com/books", "content": { "bibkeys": isbn, "jscmd": "viewapi", "callback": "GBPreviewCallback"}}); + dojo.io.script.get({"url": "https://books.google.com/books", "content": { "bibkeys": isbn, "jscmd": "viewapi", "callback": "GBPreviewCallback"}}); } /** diff --git a/web/opac/skin/default/js/result_common.js b/web/opac/skin/default/js/result_common.js index 11bb9208c2..6b617459ca 100644 --- a/web/opac/skin/default/js/result_common.js +++ b/web/opac/skin/default/js/result_common.js @@ -719,7 +719,7 @@ function fetchGoogleBooksLink () { var scriptElement = document.createElement("script"); scriptElement.setAttribute("id", "jsonScript"); scriptElement.setAttribute("src", - "http://books.google.com/books?bibkeys=" + + "https://books.google.com/books?bibkeys=" + escape(isbnList) + "&jscmd=viewapi&callback=unhideGoogleBooksLink"); scriptElement.setAttribute("type", "text/javascript"); // make the request to Google Book Search diff --git a/web/opac/skin/lul/xml/result/result_table.xml b/web/opac/skin/lul/xml/result/result_table.xml index 4d65a3438b..c1a5e772a1 100644 --- a/web/opac/skin/lul/xml/result/result_table.xml +++ b/web/opac/skin/lul/xml/result/result_table.xml @@ -85,74 +85,68 @@ - - + - - - - 0) { - try { - var ses = new OpenSRF.ClientSession('open-ils.resolver'); - var req = ses.request('open-ils.resolver.resolve_holdings.raw', 'issn', issn); - req.oncomplete = function(r) { - var resolverInfo = ""; - dojo.forEach(r.recv().content(), function(entry) { - resolverInfo = entry.public_name + "_" + entry.target_coverage; - if (title_list.indexOf(this_title_id) == -1) { - url_list = ""; - } - if (url_list.indexOf(resolverInfo) == -1) { - var resolverNode = null; - dojo.query('.recid').forEach(function(recinfo) { - if (parseFloat(dojo.trim(BT.textContent(recinfo))) == parseFloat(this_title_id)) { - resolverNode = recinfo; - } - }); - url_list += resolverInfo; - var output = null; - if (resolverNode != null) { - var parent = resolverNode.parentNode; - if (parent) { - parent = parent.parentNode; - } - if (parent) { - dojo.removeClass(parent,'hide_me'); + var this_title_id; + + dojo.query('datafield[tag="901"] subfield[code="c"]', item).forEach(function (item) { + this_title_id = dojo.trim(BT.textContent(item)); + }); + + dojo.query('datafield[tag="022"] subfield', item).forEach(function(item) { + var issn = ''; + issn = BT.textContent(item) + ''; + issn = issn.replace(/^(\s|.)*?(\d{4}).(\d{3,4}[xX]?)(\s|.)*/, "$2-$3"); + if (issn.length > 0) { + try { + var ses = new OpenSRF.ClientSession('open-ils.resolver'); + var req = ses.request('open-ils.resolver.resolve_holdings.raw', + 'issn', issn, 'http://sfx.scholarsportal.info/laurentian'); + req.oncomplete = function(r) { + var resolverInfo = ""; + dojo.forEach(r.recv().content(), function(entry) { + resolverInfo = entry.public_name + "_" + entry.target_coverage; + if (title_list.indexOf(this_title_id) == -1) { + url_list = ""; + } + if (url_list.indexOf(resolverInfo) == -1) { + var resolverNode = null; + dojo.query('.recid').forEach(function(recinfo) { + if (parseFloat(dojo.trim(BT.textContent(recinfo))) == parseFloat(this_title_id)) { + resolverNode = recinfo; + } + }); + url_list += resolverInfo; + var output = null; + if (resolverNode != null) { + var parent = resolverNode.parentNode; + if (parent) { + parent = parent.parentNode; + } + if (parent) { + dojo.removeClass(parent,'hide_me'); + } + output = dojo.create('div',{"style":"background-color:#EEFFEE;"},resolverNode,"last"); + dojo.addClass(output,"result_table_sfx_cell"); + title_list += this_title_id; + var link = dojo.create('a', {"style": "margin-left: 1em;", "class":"search_link", "href": entry.target_url}); + var link_text = dojo.doc.createTextNode( entry.public_name); + link.appendChild(link_text); + output.appendChild(link); + var coverage_text = dojo.doc.createTextNode(' - ' + entry.target_coverage + + (entry.target_embargo ? (' / ' + entry.target_embargo) : '')); + output.appendChild(coverage_text); + resolved[this_title_id] = true; } - output = dojo.create('div',{"style":"background-color:#EEFFEE;"},resolverNode,"last"); - dojo.addClass(output,"result_table_sfx_cell"); - title_list += this_title_id; - var link = dojo.create('a', {"style": "margin-left: 1em;", "class":"search_link", "href": entry.target_url}); - var link_text = dojo.doc.createTextNode( entry.public_name); - link.appendChild(link_text); - output.appendChild(link); - var coverage_text = dojo.doc.createTextNode(' - ' + entry.target_coverage - + (entry.target_embargo ? (' / ' + entry.target_embargo) : '')); - output.appendChild(coverage_text); - resolved[this_title_id] = true; } - } - }); - }; - req.send(); - } catch (err) { alert(err.message);} - } + }); + }; + req.send(); + } catch (err) { alert(err.message);} + } + }); ]]> + @@ -226,7 +220,6 @@ var output = dojo.create('span'); dojo.query('volumes volume uris uri', item).forEach(function(xitem) { - var this_title_id = curr_title_id; if (resolved[this_title_id]) { return; } var uri = new Object; uri.href = xitem.getAttribute('href'); @@ -392,7 +385,6 @@ config.names.result.format_pic = 'format_pic' var url_list = ""; var title_list = ""; - var curr_title_id = ""; var resolved = {}; -- 2.11.0