Browse Source

EDS Articles block now works and code cleanup

d9
ppound 3 years ago
parent
commit
cc368749d7
  1. 148
      modules/roblib_search_eds/js/eds_results_article.js
  2. 108
      modules/roblib_search_eds/roblib_search_eds.module
  3. 21
      modules/roblib_search_eds/src/Plugin/Block/RoblibSearchEdsArticles.php
  4. 4
      modules/roblib_search_eds/templates/roblib-search-eds-articles.html.twig
  5. 60
      modules/roblib_search_eds/templates/theme.inc

148
modules/roblib_search_eds/js/eds_results_article.js

@ -1,85 +1,89 @@
Drupal.behaviors.roblib_search_eds_articles = {
attach: function (context, settings) {
$url = settings.roblib_search_eds_articles.search_url;
articles_profile = settings.roblib_search_eds_articles.eds_profile;
proxy_url = "https://proxy.library.upei.ca/login?url=";
jQuery.getJSON($url, function (data) {
var items = [];
var numberOfDocs = 0;
try {
numberOfDocs = data.numFound;
} catch (err) {
// do nothing leave docLength at 0
}
if (numberOfDocs < 1) {
jQuery('#' + 'roblib-search-content-eds').empty().append('No Results');
jQuery('.' + 'pane-roblib-search-eds-roblib-search-eds-articles').hide();
} else {
var counter = 0;
var divs = new Array();
var content = new Array();
var queries = [];
jQuery.each(data.queries, function (key7, query) {
queries.push(query.query);
})
var query_str = encodeURI(data.queries[0].query);
var href_str = 'https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&scope=site&type=1&custid=uprince&groupid=main&profile=eds&mode=bool&lang=en&bquery=';
jQuery.each(data.documents, function (key, val) {
id = 'roblib-search-eds-article-' + counter;
divs[counter++] = id;
attach: function (context, settings) {
if (context == document) {
$query = $current_path.replace('roblib_search/', '');
$url = settings.eds_article_search_url + $query;
profile = settings.eds_article_profile;
proxy_url = "https://proxy.library.upei.ca/login?url=";
jQuery.getJSON($url, function (data) {
var items = [];
var numberOfDocs = 0;
try {
numberOfDocs = data.numFound;
} catch (err) {
// do nothing leave docLength at 0
}
if (numberOfDocs < 1) {
jQuery('#' + 'roblib-search-content-eds').empty().append('No Results');
jQuery('.' + 'pane-roblib-search-eds-roblib-search-eds-articles').hide();
} else {
var counter = 0;
var divs = new Array();
var content = new Array();
var queries = [];
jQuery.each(data.queries, function (key7, query) {
queries.push(query.query);
})
var query_str = encodeURI(data.queries[0].query);
var href_str = 'https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&scope=site&type=1&custid=uprince&groupid=main&profile=eds&mode=bool&lang=en&bquery=';
jQuery.each(data.documents, function (key, val) {
id = 'roblib-search-eds-article-' + counter;
divs[counter++] = id;
if (typeof val.Items !== 'undefined') {
items.push('<div class ="roblib-search-row" id="' + id + '">');
if (typeof val.Items.Title !== 'undefined') {
items.push('<div class="roblib-title eds">');
items.push('<a href="' + proxy_url + val.PLink + '&scope=site">' + val.Items.Title.Data + '</a></div>');
}
pubType = val.PubType;
if (typeof val.Items !== 'undefined') {
items.push('<div class ="roblib-search-row" id="' + id + '">');
if (typeof val.Items.Title !== 'undefined') {
items.push('<div class="roblib-title eds">');
items.push('<a href="' + proxy_url + val.PLink + '&scope=site">' + val.Items.Title.Data + '</a></div>');
}
pubType = val.PubType;
pubYear = val.RecordInfo.BibRelationships.IsPartOfRelationships["date"];
!pubYear ? pubYear = " " : pubYear = pubYear[0]["Y"];
pubYear = val.RecordInfo.BibRelationships.IsPartOfRelationships["date"];
!pubYear ? pubYear = " " : pubYear = pubYear[0]["Y"];
items.push('<div class="eds-type"><span class="eds-pubyear">' + pubYear + '</span> - ' + pubType + '</div>');
items.push('<div class="eds-type"><span class="eds-pubyear">' + pubYear + '</span> - ' + pubType + '</div>');
var roblib_authors = [];
jQuery.each(val.RecordInfo.BibRelationships.HasContributorRelationships, function (key3, author) {
roblib_authors.push(author.NameFull);
})
var roblib_authors = [];
jQuery.each(val.RecordInfo.BibRelationships.HasContributorRelationships, function (key3, author) {
roblib_authors.push(author.NameFull);
})
items.push('<div class="eds-sor">');
roblib_authors = roblib_shorten(roblib_authors.join('; '), 50, " ");
items.push(roblib_authors);
items.push('</div>');
items.push('<div class="eds-sor">');
roblib_authors = roblib_shorten(roblib_authors.join('; '), 50, " ");
items.push(roblib_authors);
items.push('</div>');
if (typeof val.Items.TitleSource !== 'undefined') {
items.push('<div class="eds-src"><span class="eds-label">In:</span> ' + val.Items.TitleSource.Data + '</div>');
}
if (typeof val.PLink !== 'undefined' && typeof val.PDF !== 'undefined' && val.PDF == 'pdflink') {
items.push('<div class="eds-db eds-pdf-link"><a href="' + proxy_url + val.PLink + '&scope=site">PDF Full Text</a></div>');
}
if (typeof val.PLink !== 'undefined' && typeof val.HTML !== 'undefined' && val.HTML == '1') {
items.push('<div class="eds-db eds-pdf-link"><a href="' + proxy_url + val.PLink + '&scope=site">HTML Full Text</a></div>');
}
if (typeof val.Items.TitleSource !== 'undefined') {
items.push('<div class="eds-src"><span class="eds-label">In:</span> ' + val.Items.TitleSource.Data + '</div>');
}
if (typeof val.PLink !== 'undefined' && typeof val.PDF !== 'undefined' && val.PDF == 'pdflink') {
items.push('<div class="eds-db eds-pdf-link"><a href="' + proxy_url + val.PLink + '&scope=site">PDF Full Text</a></div>');
}
if (typeof val.PLink !== 'undefined' && typeof val.HTML !== 'undefined' && val.HTML == '1') {
items.push('<div class="eds-db eds-pdf-link"><a href="' + proxy_url + val.PLink + '&scope=site">HTML Full Text</a></div>');
}
items.push('</div>');
} else {
items.push('<div class ="roblib-search-row roblib-eds-unauthorized" id="\' + id + \'">You must login to view this result, <a href="https://proxy.library.upei.ca/login?url=' + href_str + query_str + '" id="eds-unauthorized-result">click here to login</a></div>' );}
});
jQuery('#' + 'roblib-search-content-eds-articles').empty().append(items.join(''));
}
var non_upei_link = '';
var upei_link = '<a href="' + proxy_url + href_str + query_str + '" id="eds-article-see-all-results">SEE ALL (' + data.recordCount + ')</a> ';
if(!data.is_local_ip) {
non_upei_link = '<a href="' + href_str + query_str + '&authtype=ip,guest" id="eds-article-non-upei-see_all_results">[Non-UPEI]</a>';
upei_link = upei_link + non_upei_link;
}
jQuery('#roblib-search-eds-article-more').empty().append(upei_link);
jQuery('#roblib-eds-articles-more-results').empty().append(upei_link);
jQuery('#roblib-eds-articles-toc').empty().append('<a href="' + proxy_url + href_str + query_str + '" id="eds-article-see-all-results-toc">Articles (' + data.recordCount + ')</a>');
items.push('</div>');
} else {
items.push('<div class ="roblib-search-row roblib-eds-unauthorized" id="\' + id + \'">You must login to view this result, <a href="https://proxy.library.upei.ca/login?url=' + href_str + query_str + '" id="eds-unauthorized-result">click here to login</a></div>');
}
});
jQuery('#' + 'roblib-search-content-eds-articles').empty().append(items.join(''));
}
var non_upei_link = '';
var upei_link = '<a href="' + proxy_url + href_str + query_str + '" id="eds-article-see-all-results">SEE ALL (' + data.recordCount + ')</a> ';
if (!data.is_local_ip) {
non_upei_link = '<a href="' + href_str + query_str + '&authtype=ip,guest" id="eds-article-non-upei-see_all_results">[Non-UPEI]</a>';
upei_link = upei_link + non_upei_link;
}
jQuery('#roblib-search-eds-article-more').empty().append(upei_link);
jQuery('#roblib-eds-articles-more-results').empty().append(upei_link);
jQuery('#roblib-eds-articles-toc').empty().append('<a href="' + proxy_url + href_str + query_str + '" id="eds-article-see-all-results-toc">Articles (' + data.recordCount + ')</a>');
});
}
});
}
}
}

108
modules/roblib_search_eds/roblib_search_eds.module

@ -2,78 +2,9 @@
/**
* @file
* Implementation of Roblib search for searching several targets.
* Implementation of Roblib search for searching EDSAPI (EBSCO) targets.
*/
/**
* Implements hook_menu().
*/
function roblib_search_eds_menu() {
$items = array();
$items['admin/roblib_search/eds_search'] = array(
'title' => 'EDS search Target configuration',
'description' => 'Configuration for the Roblib eds search target',
'page callback' => 'drupal_get_form',
'page arguments' => array('roblib_search_eds_config_form'),
'access arguments' => array('access administration pages'),
'type' => MENU_NORMAL_ITEM,
);
$items['roblib_search/eds/ajax/%'] = array(
'title' => 'eds ajax',
'page callback' => 'roblib_search_eds_ajax',
'page arguments' => array(3),
'type' => MENU_CALLBACK,
'access arguments' => array('search roblib eds'),
);
$items['roblib_search/eds/articles/%'] = array(
'title' => 'eds ajax',
'page callback' => 'roblib_search_eds_articles',
'page arguments' => array(3),
'type' => MENU_CALLBACK,
'access arguments' => array('search roblib eds'),
);
$items['roblib_search/eds/info/%'] = array(
'title' => 'eds info',
'page callback' => 'roblib_search_eds_info',
'page arguments' => array(3),
'type' => MENU_CALLBACK,
'access arguments' => array('search roblib eds'),
);
return $items;
}
function roblib_search_eds_info($type = 'Articles') {
$config = roblib_search_eds_build_config_arr($type);
$eds_api = new EBSCOAPI($config);
$output['type'] = $type;
$output['profile'] = $eds_api->getInfo();
print json_encode($output);
exit();
}
/**
* Implements hook_permission().
*/
/*function roblib_search_eds_permission() {
return array(
'search roblib eds' => array(
'title' => t('Search the eds target'),
'description' => t('Search Roblib eds target. This permission exposes the search blocks and allows you to see search results.'),
),
'administer roblib search eds' => array(
'title' => t('Administer Roblib Search EDS'),
'description' => t('Administer settings for the Roblib eds search client.'),
),
);
}*/
/**
* Implements hook_theme().
*/
@ -91,41 +22,6 @@ function roblib_search_eds_theme($existing, $type, $theme, $path) {
];
}
/*function roblib_search_eds_ajax($query) {
print roblib_search_eds_get_results($query, 'Books');
exit();
}
function roblib_search_eds_articles($query) {
print roblib_search_eds_get_results($query, 'Articles');
exit();
}*/
/**
* For each result query ebsco again to get the detailed record.
*
* and insert a new DetailedRecord element in each record.
*
* @param array $output
* The orginal search results array
* @param string $query
* The orginal query
* @param object $eds_api
* an ebco API PHP object
*/
function roblib_search_eds_get_detailed_result(&$output, $query, &$eds_api) {
foreach ($output['records'] as &$record) {
$db = $record['DbId'];
$an = $record['An'];
$arr = $eds_api->apiRetrieve($an, $db, $query);
$record['DetailedRecord'] = $arr['Items'];
}
}
/**
* Implements hook_help().
*
@ -138,7 +34,7 @@ function roblib_search_eds_help($path, $arg) {
case 'admin/help#roblib_search_eds':
return t(
'<p>
provides a target for the Roblib search module. This target uses javascript
provides a EDSAPI target for the Roblib search module. This target uses javascript
to render the results.
</p>'
);

21
modules/roblib_search_eds/src/Plugin/Block/RoblibSearchEdsArticles.php

@ -15,13 +15,28 @@ use Drupal\Core\Block\BlockBase;
*/
class RoblibSearchEdsArticles extends BlockBase {
/**
/**
* {@inheritdoc}
*/
public function build() {
return [
$host = \Drupal::request()->getSchemeAndHttpHost();
$search_url = $host . '/roblib_search/eds/articles/';
$eds_profile = \Drupal::config('roblib_search_eds.settings')
->get('eds_article_profile');
$settings = [
'eds_article_search_url' => $search_url,
'eds_article_profile' => $eds_profile,
];
return [
'#theme' => 'roblib_search_eds_articles',
'#query' => $query,
'query' => $query,
'spinner_path' => 'test',
'#attached' => [
'library' => [
'roblib_search_eds/eds-article'
],
'drupalSettings' => $settings,
],
];
}
}

4
modules/roblib_search_eds/templates/roblib-search-eds-articles.html.twig

@ -1,10 +1,8 @@
<div class ="roblib-search-more" id="roblib-search-eds-article-more"></div>
<div class ="roblib-search-content eds-article" id="roblib-search-content-eds-articles">
<img src="{{ spinner_path }}"/>
</div>
<div id="roblib-eds-articles-more-results" class="roblib-eds-more-button button"></div>
<div id="roblib-eds-articles-toc" class="roblib-bento-toc moveme-please"></div>

60
modules/roblib_search_eds/templates/theme.inc

@ -1,60 +0,0 @@
<?php
/*
* all we do here is pass a url to some javascript so the results can be
* loaded async
*/
// TODO: combine these two functions and call this function from the preprocessor
function roblib_search_eds_preprocess_roblib_search_eds(&$variables) {
/*global $base_url;
if (!isset($query)) {
if (isset($_GET['roblib_query'])) {
$query = $_GET['roblib_query'];
}
else {
return '';
}
}
$spinner_path = $base_url . '/' . drupal_get_path('module', 'roblib_search') . '/img/' . 'spinner.gif';
$variables['spinner_path'] = $spinner_path;
$search_url = $base_url . '/roblib_search/eds/ajax/' . urlencode($query);
drupal_add_js(drupal_get_path('module', 'roblib_search_eds') . '/js/eds_results.js');
drupal_add_js(array(
'roblib_search_eds' => array(
'search_url' => $search_url,
'eds_profile' =>
variable_get('roblib_search_eds_book_profile', 'apilite')
)
), array('type' => 'setting'));
* */
}
function roblib_search_eds_preprocess_roblib_search_eds_articles(&$variables) {
global $base_url;
if (!isset($query)) {
if (isset($_GET['roblib_query'])) {
$query = $_GET['roblib_query'];
}
else {
return '';
}
}
$spinner_path = $base_url . '/' . drupal_get_path('module', 'roblib_search') . '/img/' . 'spinner.gif';
$variables['spinner_path'] = $spinner_path;
$search_url = $base_url . '/roblib_search/eds/articles/' . urlencode($query);
drupal_add_js(drupal_get_path('module', 'roblib_search_eds') . '/js/eds_results_article.js');
drupal_add_js(array(
'roblib_search_eds_articles' => array(
'search_url' => $search_url,
'eds_profile' =>
variable_get('roblib_search_eds_profile', 'edsapi')
)
), array('type' => 'setting'));
}
?>
Loading…
Cancel
Save