From 2299af7eb927ce6f28a41b1126d8fc8368c2402d Mon Sep 17 00:00:00 2001 From: Paul Pound Date: Wed, 18 Jun 2014 14:45:26 -0300 Subject: [PATCH] added more solr targets --- .../solr_site/css/roblib_search_solr_site.css | 0 targets/solr_site/js/solr_site_bestbet.js | 30 ++++ targets/solr_site/js/solr_site_databases.js | 31 ++++ targets/solr_site/js/solr_site_guides.js | 29 ++++ targets/solr_site/js/solr_site_results.js | 55 +++--- .../solr_site/roblib_search_solr_site.info | 0 .../solr_site/roblib_search_solr_site.install | 0 .../solr_site/roblib_search_solr_site.module | 156 +++++++++++++----- ...> roblib-search-solr-site-results.tpl.php} | 8 +- targets/solr_site/theme/theme.inc | 57 +++++-- 10 files changed, 278 insertions(+), 88 deletions(-) mode change 100644 => 100755 targets/solr_site/css/roblib_search_solr_site.css create mode 100755 targets/solr_site/js/solr_site_bestbet.js create mode 100644 targets/solr_site/js/solr_site_databases.js create mode 100644 targets/solr_site/js/solr_site_guides.js mode change 100644 => 100755 targets/solr_site/roblib_search_solr_site.info mode change 100644 => 100755 targets/solr_site/roblib_search_solr_site.install mode change 100644 => 100755 targets/solr_site/roblib_search_solr_site.module rename targets/solr_site/theme/{roblib-search-solr-site.tpl.php => roblib-search-solr-site-results.tpl.php} (71%) mode change 100644 => 100755 targets/solr_site/theme/theme.inc diff --git a/targets/solr_site/css/roblib_search_solr_site.css b/targets/solr_site/css/roblib_search_solr_site.css old mode 100644 new mode 100755 diff --git a/targets/solr_site/js/solr_site_bestbet.js b/targets/solr_site/js/solr_site_bestbet.js new file mode 100755 index 0000000..f0db3e3 --- /dev/null +++ b/targets/solr_site/js/solr_site_bestbet.js @@ -0,0 +1,30 @@ +Drupal.behaviors.roblib_search_solr_site_bestbet = { + attach: function(context, settings) { + $url = settings.roblib_search_solr_site_bestbet.search_url; + jQuery.getJSON($url, function(data) { + var items = []; + var numberOfDocs = 0; + try { + numberOfDocs = data.response.docs.length; + } catch (err) { + // do nothing leave docLength at 0 + } + if (numberOfDocs < 1) { + jQuery('#' + 'roblib-search-content-solr-site-bestbet').empty().append('No Results'); + } else { + + jQuery('#' + 'roblib-search-content-solr-site-bestbet').empty(); + + jQuery.each(data.response.docs, function(key, val) { + items.push('
\n\ +
'); + + }); + jQuery('#' + 'roblib-search-content-solr-site-bestbet').empty().append(items.join('')); + } + }); + } + +} + diff --git a/targets/solr_site/js/solr_site_databases.js b/targets/solr_site/js/solr_site_databases.js new file mode 100644 index 0000000..d0d8496 --- /dev/null +++ b/targets/solr_site/js/solr_site_databases.js @@ -0,0 +1,31 @@ +Drupal.behaviors.roblib_search_solr_site_databases = { + attach: function(context, settings) { + $url = settings.roblib_search_solr_site_databases.search_url; + jQuery.getJSON($url, function(data) { + var items = []; + var numberOfDocs = 0; + try { + numberOfDocs = data.response.docs.length; + } catch (err) { + // do nothing leave docLength at 0 + } + if (numberOfDocs < 1) { + jQuery('#' + 'roblib-search-content-solr-site-databases').empty().append('No Results'); + + } else { + + jQuery('#' + 'roblib-search-content-solr-site-databases').empty(); + + jQuery.each(data.response.docs, function(key, val) { + items.push('
\n\ +
'); + }); + + jQuery('#' + 'roblib-search-content-solr-site-databases').empty().append(items.join('')); + + } + }); + } + +} diff --git a/targets/solr_site/js/solr_site_guides.js b/targets/solr_site/js/solr_site_guides.js new file mode 100644 index 0000000..fe94651 --- /dev/null +++ b/targets/solr_site/js/solr_site_guides.js @@ -0,0 +1,29 @@ +Drupal.behaviors.roblib_search_solr_site_guides = { + attach: function(context, settings) { + $url = settings.roblib_search_solr_site_guides.search_url; + jQuery.getJSON($url, function(data) { + var items = []; + var numberOfDocs = 0; + try { + numberOfDocs = data.response.docs.length; + } catch (err) { + // do nothing leave docLength at 0 + } + if (numberOfDocs < 1) { + jQuery('#' + 'roblib-search-content-solr-site-guides').empty().append('No Results'); + + } else { + + jQuery('#' + 'roblib-search-content-solr-site-guides').empty(); + + jQuery.each(data.response.docs, function(key, val) { + items.push('
\n\ +
'); + }); + jQuery('#' + 'roblib-search-content-solr-site-guides').empty().append(items.join('')); + } + }); + } + +} diff --git a/targets/solr_site/js/solr_site_results.js b/targets/solr_site/js/solr_site_results.js index 85704c1..b507327 100644 --- a/targets/solr_site/js/solr_site_results.js +++ b/targets/solr_site/js/solr_site_results.js @@ -1,37 +1,30 @@ -Drupal.behaviors.roblib_search_solr_site = { - attach: function(context, settings) { - url = settings.roblib_search_solr_site.search_url; - query = settings.roblib_search_solr_site.search_query; - jQuery.getJSON(url, function(data) { - var items = []; - var numberOfDocs = 0; - try { - numberOfDocs = data.response.docs.length; - } catch (err) { - // do nothing leave docLength at 0 - } - if (numberOfDocs < 1) { - jQuery('#' + 'roblib-search-content-solr-site').empty().append('No Results'); - //
+Drupal.behaviors.roblib_search_solr_site_results = { + attach: function(context, settings) { + $url = settings.roblib_search_solr_site_results.search_url; + jQuery.getJSON($url, function(data) { + var items = []; + var numberOfDocs = 0; + try { + numberOfDocs = data.response.docs.length; + } catch (err) { + // do nothing leave docLength at 0 + } + if (numberOfDocs < 1) { + jQuery('#' + 'roblib-search-content-solr-site-results').empty().append('No Results'); - jQuery('.' + 'pane-roblib-search-solr-site-roblib-search-solr-site-results').hide(); - } else { - jQuery.each(data.response.docs, function(key, val) { - items.push('
\n\ -
'); - //items.push('
' + val.teaser + '
') - }); - jQuery('#roblib-search-content-solr-site').empty().append(items.join('')); - var number = data.response.numFound; - var scholarUrl = "http://www.islandscholar.ca/islandora/solr/search/" - jQuery('#' + 'roblib-search-solr-site-more').empty().append('see all ' + number + ' results'); + } else { + jQuery('#' + 'roblib-search-content-solr-site-results').empty(); + + jQuery.each(data.response.docs, function(key, val) { + items.push('
\n\ +
'); - } }); - } + jQuery('#' + 'roblib-search-content-solr-site-results').empty().append(items.join('')); + } + }); + } } - diff --git a/targets/solr_site/roblib_search_solr_site.info b/targets/solr_site/roblib_search_solr_site.info old mode 100644 new mode 100755 diff --git a/targets/solr_site/roblib_search_solr_site.install b/targets/solr_site/roblib_search_solr_site.install old mode 100644 new mode 100755 diff --git a/targets/solr_site/roblib_search_solr_site.module b/targets/solr_site/roblib_search_solr_site.module old mode 100644 new mode 100755 index 0c51a65..00baff3 --- a/targets/solr_site/roblib_search_solr_site.module +++ b/targets/solr_site/roblib_search_solr_site.module @@ -21,23 +21,43 @@ function roblib_search_solr_site_menu() { 'type' => MENU_NORMAL_ITEM, ); - $items['roblib_search/solr_site/ajax/%'] = array( - 'title' => 'solr_site ajax', - 'page callback' => 'roblib_search_solr_site_ajax', + $items['roblib_search/solr_site/bestbet/%'] = array( + 'title' => 'BestBet', + 'page callback' => 'roblib_search_solr_site_bestbet', 'page arguments' => array(3), 'type' => MENU_CALLBACK, 'access arguments' => array('search roblib solr_site'), ); + $items['roblib_search/solr_site/databases/%'] = array( + 'title' => 'solr_site databases', + 'page callback' => 'roblib_search_solr_site_databases', + 'page arguments' => array(3), + 'type' => MENU_CALLBACK, + 'access arguments' => array('search roblib solr_site'), + ); + + $items['roblib_search/solr_site/guides/%'] = array( + 'title' => 'solr_site guides', + 'page callback' => 'roblib_search_solr_site_guides', + 'page arguments' => array(3), + 'type' => MENU_CALLBACK, + 'access arguments' => array('search roblib solr_site'), + ); + + $items['roblib_search/solr_site/results/%'] = array( + 'title' => 'solr_site guides', + 'page callback' => 'roblib_search_solr_site_results', + 'page arguments' => array(3), + 'type' => MENU_CALLBACK, + 'access arguments' => array('search roblib solr_site'), + ); + + return $items; } function roblib_search_solr_site_config_form($form, &$form_state) { - /* - * $url = variable_get('roblib_search_solr_site_url', 'http://137.149.200.52'); - $url_suffix = variable_get('roblib_search_solr_site_suffix', '/opac/extras/sru?version=1.1&operation=searchRetrieve&query='); - $number_of_records = variable_get('roblib_search_solr_site_num_results', '5'); - */ $form['roblib_search_solr_site_url'] = array( '#type' => 'textfield', '#title' => t('Solr url'), @@ -82,20 +102,59 @@ function roblib_search_solr_site_theme() { return array( // results page - 'roblib_search_solr_site' => array( + 'roblib_search_solr_site_bestbet' => array( + 'path' => $path . '/theme', + 'file' => $file, + 'template' => 'roblib-search-solr-site-results', + 'variables' => array('results' => NULL), + ), + 'roblib_search_solr_site_databases' => array( + 'path' => $path . '/theme', + 'file' => $file, + 'template' => 'roblib-search-solr-site-results', + 'variables' => array('results' => NULL), + ), + 'roblib_search_solr_site_guides' => array( 'path' => $path . '/theme', 'file' => $file, - 'template' => 'roblib-search-solr-site', + 'template' => 'roblib-search-solr-site-results', 'variables' => array('results' => NULL), - ) + ), + 'roblib_search_solr_site_results' => array( + 'path' => $path . '/theme', + 'file' => $file, + 'template' => 'roblib-search-solr-site-results', + 'variables' => array('results' => NULL), + ), ); } function roblib_search_solr_site_block_info() { + $blocks['roblib_search_solr_site_bestbet'] = array( + // info: The name of the block. + 'info' => t('Roblib Solr Search Best bets'), + // Block caching options (per role, per user, etc.) + 'cache' => DRUPAL_CACHE_PER_ROLE, // default + ); + + $blocks['roblib_search_solr_site_db'] = array( + // info: The name of the block. + 'info' => t('Roblib Solr Search Databases Block'), + // Block caching options (per role, per user, etc.) + 'cache' => DRUPAL_CACHE_PER_ROLE, // default + ); + + $blocks['roblib_search_solr_site_guides'] = array( + // info: The name of the block. + 'info' => t('Roblib Solr Search Guides Block'), + // Block caching options (per role, per user, etc.) + 'cache' => DRUPAL_CACHE_PER_ROLE, // default + ); + $blocks['roblib_search_solr_site_results'] = array( // info: The name of the block. - 'info' => t('Roblib Solr Search Results block'), + 'info' => t('Roblib Solr Search Results Block'), // Block caching options (per role, per user, etc.) 'cache' => DRUPAL_CACHE_PER_ROLE, // default ); @@ -104,24 +163,47 @@ function roblib_search_solr_site_block_info() { } function roblib_search_solr_site_block_view($delta = '') { - //The $delta parameter tells us which block is being requested. switch ($delta) { + case 'roblib_search_solr_site_bestbet': + $block['subject'] = t('Best Bets'); + $block['content'] = theme('roblib_search_solr_site_bestbet', array('results' => NULL)); + break; + + case 'roblib_search_solr_site_db': + $block['subject'] = t('Databases'); + $block['content'] = theme('roblib_search_solr_site_databases', array('results' => NULL)); + break; + + case 'roblib_search_solr_site_guides': + $block['subject'] = t('Guides'); + $block['content'] = theme('roblib_search_solr_site_guides', array('results' => NULL)); + break; + case 'roblib_search_solr_site_results': - // The subject is displayed at the top of the block. Note that it - // should be passed through t() for translation. The title configured - // for the block using Drupal UI supercedes this one. - $block['subject'] = t('Library Website'); - // The content of the block is typically generated by calling a custom - // function. - $block['content'] = theme('roblib_search_solr_site', array('results' => NULL)); + $block['subject'] = t('Library Site'); + $block['content'] = theme('roblib_search_solr_site_results', array('results' => NULL)); break; } return $block; } -function roblib_search_solr_site_ajax($query) { - $output = roblib_search_solr_site_get_results($query); - print $output; +function roblib_search_solr_site_results($query) { + print roblib_search_solr_site_get_results($query, '-bundle:bestbet OR -budle:guide OR -bundle:database'); + exit(); +} + +function roblib_search_solr_site_bestbet($query) { + print roblib_search_solr_site_get_results($query, 'bundle:bestbet'); + exit(); +} + +function roblib_search_solr_site_databases($query) { + print roblib_search_solr_site_get_results($query, 'bundle:database'); + exit(); +} + +function roblib_search_solr_site_guides($query) { + print roblib_search_solr_site_get_results($query, 'bundle:guide'); exit(); } @@ -131,32 +213,25 @@ function roblib_search_solr_site_ajax($query) { * @return string * json */ -function roblib_search_solr_site_get_results($query) { - $url = roblib_search_solr_site_get_search_url($query); - $results = drupal_http_request($url); - if($results->code != '200'){ - return ""; - } - return $results->data; -} - -/** - * @param $query - * @return string - */ -function roblib_search_solr_site_get_search_url($query){ +function roblib_search_solr_site_get_results($query = NULL, $type ) { $solr_url = variable_get('roblib_search_solr_site_url', 'http://localhost:8983/solr'); $num_results = variable_get('roblib_search_solr_site_num_results', '5'); $data = array( + 'q' => $query, + 'fq' => $type, 'wt' => 'json', - 'q' => $query , - 'fq' => '-bundle:guide OR -bundle:bestbet OR -bundle:database', 'rows' => $num_results, ); $url = url($solr_url . '/select', array('query' => $data)); - return $url; + + $results = drupal_http_request($url); + if ($results->code != '200') { + return ""; + } + return $results->data; } + /** * Implements hook_help(). */ @@ -170,4 +245,3 @@ provides a target for the Roblib search module ); } } - diff --git a/targets/solr_site/theme/roblib-search-solr-site.tpl.php b/targets/solr_site/theme/roblib-search-solr-site-results.tpl.php similarity index 71% rename from targets/solr_site/theme/roblib-search-solr-site.tpl.php rename to targets/solr_site/theme/roblib-search-solr-site-results.tpl.php index 84563b0..71a2dea 100644 --- a/targets/solr_site/theme/roblib-search-solr-site.tpl.php +++ b/targets/solr_site/theme/roblib-search-solr-site-results.tpl.php @@ -9,14 +9,14 @@ * - $base_url: The base url of the current website. eg: http://example.com . * - $user: The user object. * - * + * * - $results: Rendered search results (primary profile) - * + * * * @see template_preprocess_roblib_search_wrapper() */ ?> -
Search all Results
-
+
+
diff --git a/targets/solr_site/theme/theme.inc b/targets/solr_site/theme/theme.inc old mode 100644 new mode 100755 index cc2798c..e96f5b8 --- a/targets/solr_site/theme/theme.inc +++ b/targets/solr_site/theme/theme.inc @@ -1,13 +1,47 @@ array('search_url' => $search_url, - 'search_query' => urlencode($query))), array('type' => 'setting')); - + $variables['type'] = $type; + $search_url = $base_url . '/roblib_search/solr_site/' . $type . '/' . urlencode($query); + drupal_add_js(drupal_get_path('module', 'roblib_search_solr_site') . '/js/solr_site_' . $type . '.js'); + $key = 'roblib_search_solr_site_' . $type; + drupal_add_js(array($key => array('search_url' => $search_url)), array('type' => 'setting')); } -?>