Browse Source

EDS Articles block now works and code cleanup

d9
ppound 3 years ago
parent
commit
cc368749d7
  1. 12
      modules/roblib_search_eds/js/eds_results_article.js
  2. 108
      modules/roblib_search_eds/roblib_search_eds.module
  3. 17
      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

12
modules/roblib_search_eds/js/eds_results_article.js

@ -1,7 +1,9 @@
Drupal.behaviors.roblib_search_eds_articles = { Drupal.behaviors.roblib_search_eds_articles = {
attach: function (context, settings) { attach: function (context, settings) {
$url = settings.roblib_search_eds_articles.search_url; if (context == document) {
articles_profile = settings.roblib_search_eds_articles.eds_profile; $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="; proxy_url = "https://proxy.library.upei.ca/login?url=";
jQuery.getJSON($url, function (data) { jQuery.getJSON($url, function (data) {
var items = []; var items = [];
@ -65,13 +67,14 @@ Drupal.behaviors.roblib_search_eds_articles = {
items.push('</div>'); items.push('</div>');
} else { } 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>' );} 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('')); jQuery('#' + 'roblib-search-content-eds-articles').empty().append(items.join(''));
} }
var non_upei_link = ''; 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> '; 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) { 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>'; 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; upei_link = upei_link + non_upei_link;
} }
@ -81,5 +84,6 @@ Drupal.behaviors.roblib_search_eds_articles = {
}); });
} }
}
} }

108
modules/roblib_search_eds/roblib_search_eds.module

@ -2,78 +2,9 @@
/** /**
* @file * @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(). * 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(). * Implements hook_help().
* *
@ -138,7 +34,7 @@ function roblib_search_eds_help($path, $arg) {
case 'admin/help#roblib_search_eds': case 'admin/help#roblib_search_eds':
return t( return t(
'<p> '<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. to render the results.
</p>' </p>'
); );

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

@ -19,9 +19,24 @@ class RoblibSearchEdsArticles extends BlockBase {
* {@inheritdoc} * {@inheritdoc}
*/ */
public function build() { public function build() {
$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 [ return [
'#theme' => 'roblib_search_eds_articles', '#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-more" id="roblib-search-eds-article-more"></div>
<div class ="roblib-search-content eds-article" id="roblib-search-content-eds-articles"> <div class ="roblib-search-content eds-article" id="roblib-search-content-eds-articles">
<img src="{{ spinner_path }}"/>
</div> </div>
<div id="roblib-eds-articles-more-results" class="roblib-eds-more-button button"></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> <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