| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?php
- /**
- * @file
- * Provides an interface for creating blocks containing information about the
- * current search.
- */
- /**
- * Display current search block only when keywords are entered.
- */
- define('CURRENT_SEARCH_DISPLAY_KEYS', 0);
- /**
- * Display current search block on empty searches where no keywords are entered.
- */
- define('CURRENT_SEARCH_DISPLAY_ALWAYS', 1);
- /**
- * Display current search block only when one or more facet items are active.
- */
- define('CURRENT_SEARCH_DISPLAY_FILTERS', 2);
- /**
- * Display current search block when either keywords are entered one or more
- * facet items are active.
- */
- define('CURRENT_SEARCH_DISPLAY_KEYS_FILTERS', 3);
- // Includes the Block hooks and form alterations.
- require_once dirname(__FILE__) . '/current_search.block.inc';
- /**
- * Implements hook_menu_alter().
- */
- function current_search_menu() {
- $items = array();
- $items['admin/config/search/current_search/item/%current_search_item/delete/%'] = array(
- 'title' => 'Revert current search block configuration',
- 'page callback' => 'drupal_get_form',
- 'page arguments' => array('current_search_delete_item_form', 5, 7),
- 'access arguments' => array('administer search'),
- 'type' => MENU_NORMAL_ITEM,
- 'file' => 'plugins/export_ui/current_search_export_ui.class.php',
- );
- return $items;
- }
- /**
- * Implements hook_menu_alter().
- */
- function current_search_menu_alter(&$items) {
- // Use same access callback as Facet API. We can't define access callbacks in
- // CTools plugins, so we have to alter the menu and define them here.
- $base_path = 'admin/config/search/current_search';
- foreach ($items as $path => $item) {
- if ($base_path == $path || 0 === strpos($path, "$base_path/")) {
- $items[$path]['access callback'] = 'facetapi_access_callback';
- $items[$path]['access arguments'] = array();
- }
- }
- // Ensures that the edit link shows up in contextual links.
- $item = &$items['admin/config/search/current_search/list/%ctools_export_ui/edit'];
- $item['title'] = 'Configure current search items';
- $item['type'] = MENU_LOCAL_ACTION;
- $item['context'] = MENU_CONTEXT_INLINE;
- }
- /**
- * Implements hook_theme().
- */
- function current_search_theme() {
- return array(
- 'current_search_group_title' => array(
- 'arguments' => array('title' => NULL),
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_text' => array(
- 'arguments' => array('text' => NULL, 'wrapper' => NULL, 'element' => NULL, 'css' => NULL, 'class' => array()),
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_link_active' => array(
- 'arguments' => array('text' => NULL, 'path' => NULL, 'options' => array()),
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_keys' => array(
- 'arguments' => array('keys' => NULL, 'adapter' => NULL),
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_deactivate_widget' => array(
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_item_wrapper' => array(
- 'render element' => 'element',
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_group_wrapper' => array(
- 'render element' => 'element',
- 'file' => 'current_search.theme.inc',
- ),
- 'current_search_sort_settings_table' => array(
- 'render element' => 'element',
- 'file' => 'current_search.theme.inc',
- ),
- );
- }
- /**
- * Implements hook_ctools_plugin_api().
- */
- function current_search_ctools_plugin_api($owner, $api) {
- if ('current_search' == $owner && 'current_search' == $api) {
- return array('version' => 1);
- }
- }
- /**
- * Implements hook_ctools_plugin_directory().
- */
- function current_search_ctools_plugin_directory($module, $type) {
- if ('export_ui' == $type) {
- return 'plugins/export_ui';
- }
- }
- /**
- * Implements hook_ctools_plugin_type().
- */
- function current_search_ctools_plugin_type() {
- return array(
- 'items' => array(
- 'use hooks' => TRUE,
- ),
- );
- }
- /**
- * Returns an array of available current search plugins.
- *
- * @return array
- * An associative array keyed by plugin ID to human readable label.
- */
- function current_search_get_plugins() {
- $plugins = &drupal_static(__FUNCTION__, array());
- if (!$plugins) {
- foreach (ctools_get_plugins('current_search', 'items') as $id => $plugin) {
- $plugins[$id] = $plugin['handler']['label'];
- }
- }
- return $plugins;
- }
- /**
- * Returns an array of searcher options.
- *
- * @return
- * An array of options.
- */
- function current_search_get_searcher_options() {
- $options = array();
- foreach (facetapi_get_searcher_info() as $name => $info) {
- $options[$name] = $info['label'];
- }
- return $options;
- }
- /**
- * Returns the settings for a current search block configuration.
- *
- * @param $name
- * The machine readable name of the configuration.
- *
- * @return stdClass
- * An object containing the configuration, FALSE if not defined.
- */
- function current_search_item_load($name) {
- ctools_include('export');
- $result = ctools_export_crud_load('current_search', $name);
- return $result ? $result : FALSE;
- }
- /**
- * Implements hook_current_search_items().
- */
- function current_search_current_search_items() {
- return array(
- 'text' => array(
- 'handler' => array(
- 'label' => t('Custom text'),
- 'class' => 'CurrentSearchItemText',
- ),
- ),
- 'active' => array(
- 'handler' => array(
- 'label' => t('Active items'),
- 'class' => 'CurrentSearchItemActive',
- ),
- ),
- 'group' => array(
- 'handler' => array(
- 'label' => t('Field group'),
- 'class' => 'CurrentSearchGroup',
- ),
- ),
- );
- }
|