diff --git a/apachesolr_search.module b/apachesolr_search.module index 63f30d7..78988cb 100644 --- a/apachesolr_search.module +++ b/apachesolr_search.module @@ -441,6 +441,14 @@ function apachesolr_search_block_info() { 'info' => t('Apache Solr Core: Sorting'), 'cache' => DRUPAL_NO_CACHE, ); + + // Add an Apachesolr search form block for each search page + foreach (apachesolr_search_load_all_search_pages() as $page_id => $search_page) { + $blocks['search_form_' . $page_id] = array( + 'info' => t('Apachesolr search form : @page_label', array('@page_label' => $search_page['label'])), + 'cache' => DRUPAL_NO_CACHE, + ); + } return $blocks; } @@ -531,6 +539,27 @@ function apachesolr_search_block_view($delta = '') { } return $suggestions; } + + // Search form cases + foreach (apachesolr_search_load_all_search_pages() as $page_id => $search_page) { + if ($delta === 'search_form_' . $page_id) { + $search_page = apachesolr_search_page_load($page_id); + $menu_item = menu_get_item(); + if ($menu_item['page_callback'] === 'apachesolr_search_custom_page') { + $parts = explode('/', $search_page['search_path']); + $keys_pos = count($parts); + $keys = rawurldecode($menu_item['page_arguments'][$keys_pos]); + } + else { + $keys = ''; + module_load_include('pages.inc', 'apachesolr_search'); + } + return array( + 'subject' => t($search_page['page_title']), + 'content' => drupal_get_form('apachesolr_search_custom_page_search_form', $search_page, $keys), + ); + } + } } /**