From 7e52bd7c123e6bca7a3c5fc82e5a4e5304f0cab8 Mon Sep 17 00:00:00 2001 From: dbs Date: Thu, 18 Mar 2010 16:35:26 +0000 Subject: [PATCH] More generic "extra search services" implementation: supports multiple services git-svn-id: svn://svn.open-ils.org/ILS-Contrib/conifer/branches/rel_1_6_0@838 6d9bc8c9-1ec2-4278-b937-99fde70a366f --- web/opac/skin/default/js/result_common.js | 65 +++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/web/opac/skin/default/js/result_common.js b/web/opac/skin/default/js/result_common.js index 2181cc06ac..4edf3884c7 100644 --- a/web/opac/skin/default/js/result_common.js +++ b/web/opac/skin/default/js/result_common.js @@ -5,9 +5,28 @@ var lowHitCount = 4; var isbnList = ''; var googleBooksLink = true; var enableHoldsOnAvailable = false; -var enableEbooksLowHits = false; +var enableExtraSearchesLowHits = false; var localProxyPrefix = ''; +/* an array of the extra services to which we want to direct people, in order of priority: +Properties: + url: will be proxied via localProxyPrefix + description: will be used in the OPAC display + termTransform: a function name that transforms Evergreen compiled searches to the target search format +*/ +var externalSearchServices = [ + { + "url": "http://books.scholarsportal.info/search.html?searchField=All+Fields&limit=full_text&sortBy=relevance&collection=all&searchTerm=", + "description": "Search ScholarsPortal ebooks", + "termTransform": "allKeywords" + }, + { + "url": "http://scholar.google.com/scholar?q=", + "description": "Search Google Scholar", + "termTransform": "allKeywords" + } +]; + var resultFetchAllRecords = false; var resultCompiledSearch = null; @@ -213,8 +232,8 @@ function resultLowHits() { resultSuggestSearchClass(); - if (enableEbooksLowHits) { - resultSuggestEbooks(); + if (enableExtraSearchesLowHits) { + resultSuggestExtraSearches(); } if(getTerm()) resultExpandSearch(); /* advanced search */ @@ -257,8 +276,8 @@ function resultZeroHits() { unHideMe($('result_low_hits')); unHideMe($('result_zero_hits_msg')); - if (enableEbooksLowHits) { - resultSuggestEbooks(); + if (enableExtraSearchesLowHits) { + resultSuggestExtraSearches(); } //if(getTerm()) resultExpandSearch(); /* advanced search */ } @@ -282,17 +301,31 @@ function resultExpandSearch() { } } -/* For now we only generate a link to ScholarsPortal ebook platform */ -function resultSuggestEbooks() { - var ebook_search = localProxyPrefix + 'http://books.scholarsportal.info/search.html?searchField=All+Fields&limit=full_text&sortBy=relevance&collection=all&searchTerm='; - var ebook_terms = ''; - for (var key in resultCompiledSearch.searches) { - ebook_search += resultCompiledSearch.searches[key].term.replace(/ /g, '+') + '+'; - ebook_terms += resultCompiledSearch.searches[key].term + ' '; - } - ebook_search.replace('+$', ''); - ebook_terms.replace(' $', ''); - dojo.place("
Search ScholarsPortal ebooks: " + ebook_terms + "
", "result_low_hits", "child"); +/* Generate links to our extra search services */ +function resultSuggestExtraSearches() { + dojo.forEach(externalSearchServices, function(esItem) { + var extraSearchStuff = this[esItem.termTransform].apply(this, [esItem.url]); + dojo.place("
" + + esItem.description + ": " + extraSearchStuff.displayTerms + "
", "result_low_hits", "child" + ); + }); +} + +/* Transform everything in the Evergreen search to plain old keywords */ +function allKeywords(esUrl) { + var ebook_search = localProxyPrefix + esUrl; + var ebook_terms = ''; + for (var key in resultCompiledSearch.searches) { + ebook_search += resultCompiledSearch.searches[key].term + '+'; + ebook_terms += resultCompiledSearch.searches[key].term + ' '; + } + ebook_search = ebook_search.replace(/ /g, '+'); + ebook_search = ebook_search.replace(/\%20/g, '+'); + ebook_search = ebook_search.replace(/\+$/g, ''); + ebook_terms = ebook_terms.replace(/ $/g, ''); + var extraSuggestion = {"displayTerms": ebook_terms, "searchTerms": ebook_search}; + return extraSuggestion; } function resultSuggestSearchClass() { -- 2.11.0