X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=mkdru.module;h=e477eabe93cfaf3ce4fc5d75781a723a03e5bc29;hb=294a6b92a83414b55fb6619bb74074e7ecae1a08;hp=f9b89ed0e4516534b8451ad35536063604809fbc;hpb=c20ac0b526bfe83bc97f039dd4a10b16c963cae0;p=mkdru-moved-to-drupal.org.git diff --git a/mkdru.module b/mkdru.module index f9b89ed..e477eab 100644 --- a/mkdru.module +++ b/mkdru.module @@ -10,15 +10,53 @@ function mkdru_node_info() { return array( 'mkdru' => array( - 'name' => t("Pazpar2 metasearch interface"), - 'base' => 'mkdru', + 'name' => t("Pazpar2 metasearch interface"), + 'base' => 'mkdru', 'description' => t("Metasearch interface for Z39.50/SRU and other targets via a Pazpar2/Service Proxy backend"), ) ); } -function mkdru_ting_search_show($params) { - $path = drupal_get_path('module', 'mkdru'); +/** + * Implements hook_search_info() + */ +function mkdru_search_info() { + return array( + 'title' => 'Meta search', + 'path' => 'meta', + 'conditions_callback' => 'mkdru_search_conditions_callback', + ); +} + +/** + * Implements hook_search_page() + */ +function mkdru_search_page($results) { + $output['prefix']['#markup'] = theme('mkdru_results'); + $output['suffix']['#markup'] = ''; + return $output; +} + +/** + * Implements hook_ding_facetbrowser() + */ +function mkdru_ding_facetbrowser() { + $results = new stdClass(); + $results->facets = array(); + $results->show_empty = TRUE; # Show an empty facetbrowser block, even if search didn't return any results + return $results; +} + +/** + * Search callback function that is invoked by search_view() + */ +function mkdru_search_conditions_callback($keys) {} + +/** + * Implement hook_search_execute() + */ +function mkdru_search_execute($keys = NULL, $conditions = NULL) { + $path = drupal_get_path('module', 'mkdru'); // Include client library. drupal_add_js(variable_get('pz2_js_path', 'pazpar2/js') . '/pz2.js', array('type' => 'file', 'scope' => 'footer')); @@ -27,11 +65,17 @@ function mkdru_ting_search_show($params) { array('type' => 'file', 'scope' => 'footer')); drupal_add_js($path . '/mkdru.client.js', array('type' => 'file', 'scope' => 'footer')); - $html = theme('mkdru_results'); - drupal_add_js(array('mkdru' => - array('use_sessions' => '1', 'query' => $params['keys'] - )), 'setting'); - return array("content" => $html); + drupal_add_js(array('mkdru' => + array( + 'use_sessions' => variable_get('use_sessions', '1'), + 'pz2_path' => variable_get('pz2_path', '/pazpar2/search.pz2'), + 'sp_user' => variable_get('sp_user', ''), + 'sp_pass' => variable_get('sp_pass', ''), + 'query' => $keys, + ) + ), 'setting'); + + return array(); } /** @@ -245,7 +289,7 @@ function mkdru_node_revision_delete($node) { function mkdru_delete($node) { // Deleting by nid covers all revisions. db_delete('mkdru') - ->condition('nid', $nid->nid) + ->condition('nid', $node->nid) ->execute(); } @@ -298,7 +342,7 @@ function theme_mkdru_js(&$variables) { drupal_add_js(variable_get('pz2_js_path', 'pazpar2/js') . '/pz2.js', array( 'type' => 'file', 'scope' => 'footer', 'defer' => TRUE, 'preprocess' => FALSE)); // jQuery plugin for query string/history manipulation. - drupal_add_library('overlay', 'jquery-bbq'); + drupal_add_library('system', 'jquery.bbq'); drupal_add_js($path . '/mkdru.theme.js', array( 'type' => 'file', 'scope' => 'footer', 'defer' => TRUE, 'preprocess' => FALSE)); drupal_add_js($path . '/mkdru.client.js', array( @@ -334,13 +378,13 @@ function mkdru_view($node, $view_mode) { * Implements hook_block_info() */ function mkdru_block_info() { - // NB: block caching is redundant for static content - $blocks['mkdru_sources']['info'] = t('mkdru - source facets'); - $blocks['mkdru_sources']['cache'] = DRUPAL_NO_CACHE; - $blocks['mkdru_subjects']['info'] = t('mkdru - subject facets'); - $blocks['mkdru_subjects']['cache'] = DRUPAL_NO_CACHE; - $blocks['mkdru_authors']['info'] = t('mkdru - author facets'); - $blocks['mkdru_authors']['cache'] = DRUPAL_NO_CACHE; + // facet blocks + $facets = variable_get('mkdru_facets'); + foreach ($facets as $facet) { + // NB: block caching is redundant for static content + $blocks['mkdru_facet_' . $facet]['info'] = "mkdru - $facet " . t('facet'); + $blocks['mkdru_facet_' . $facet]['cache'] = DRUPAL_NO_CACHE; + } // search blocks $result = db_query("SELECT title, nid FROM {node} WHERE type = 'mkdru';"); @@ -349,6 +393,7 @@ function mkdru_block_info() { t('mkdru - search box for "' . $node->title . '"'); $blocks['mkdru_sources']['cache'] = DRUPAL_NO_CACHE; }; + return $blocks; } @@ -356,24 +401,14 @@ function mkdru_block_info() { * Implements hook_block_view() */ function mkdru_block_view($delta) { - switch ($delta) { - case 'mkdru_sources': - $block['subject'] = t('Source'); - $block['content'] = theme('mkdru_block_facet', - array('class' => 'mkdru-facet-source')); - return $block; - case 'mkdru_subjects': - $block['subject'] = t('Subject'); - $block['content'] = theme('mkdru_block_facet', - array('class' => 'mkdru-facet-subject')); - return $block; - case 'mkdru_authors': - $block['subject'] = t('Author'); - $block['content'] = theme('mkdru_block_facet', - array('class' => 'mkdru-facet-author')); - return $block; - } - if (substr($delta, 0, 13) == 'mkdru_search_') { + if (substr($delta, 0, 12) == 'mkdru_facet_') { + $facet = substr($delta, 12); + $block['subject'] = t(ucwords($facet)); + $block['content'] = theme('mkdru_block_facet', + array('class' => 'mkdru-facet-' . $facet)); + return $block; + } + elseif (substr($delta, 0, 13) == 'mkdru_search_') { $nid = substr($delta, 13); $block['content'] = theme('mkdru_block_search', array('nid' => $nid, 'path' => '/node/' . $nid));