You are here

function google_appliance_menu in Google Search Appliance 6.2

Same name and namespace in other branches
  1. 5 google_appliance.module \google_appliance_menu()
  2. 7 google_appliance.module \google_appliance_menu()

Implementation of hook_menu().

File

./google_appliance.module, line 86
Google Search Appliance (GSA) / Google Mini integration

Code

function google_appliance_menu() {

  // Get settings.
  $settings = google_appliance_get_settings();
  $google_appliance_name = $settings['google_appliance_name'];
  $default_client = $settings['default_client'];
  $default_collection = $settings['default_collection'];
  $tabs_array = $settings['tabs_array'];
  $default_tab = $settings['default_tab'];
  $default_search_path = $settings['default_search_path'];
  $search_module_disabled = !array_key_exists('search', module_list());
  $items = array();
  $items['admin/settings/google-appliance'] = array(
    'title' => t('Google Appliance Settings'),
    'description' => t('Configuration for the @name search', array(
      '@name' => $google_appliance_name,
    )),
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'google_appliance_admin_settings',
    ),
    'access arguments' => array(
      'administer google appliance search',
    ),
    'type' => MENU_NORMAL_ITEM,
  );

  // If the search module is not enabled, duplicate its base menu item.
  if ($search_module_disabled) {
    $items['search'] = array(
      'title' => t('Search'),
      'load arguments' => array(
        '%map',
        '%index',
      ),
      'page callback' => 'google_appliance_search_view',
      'page arguments' => array(
        'search/' . $default_search_path,
        $default_client,
        $default_collection,
        NULL,
      ),
      'access arguments' => array(
        'search google appliance',
      ),
      'type' => MENU_CALLBACK,
    );
  }

  // Base callback for the "google-appliance/*" search tabs.
  $items['google-appliance'] = array(
    'title' => t($google_appliance_name),
    'load arguments' => array(
      '%map',
      '%index',
    ),
    'page callback' => 'google_appliance_search_view',
    'page arguments' => array(
      'google-appliance',
      $default_client,
      $default_collection,
      1,
    ),
    'access arguments' => array(
      'search google appliance',
    ),
    'type' => MENU_CALLBACK,
  );

  // Support arbitrary client/collection combinations.
  $items['google-appliance/%google_appliance_client/%google_appliance_collection/%google_appliance_menu_tail'] = array(
    'title callback' => 'google_appliance_catch_all_task_title',
    'title arguments' => array(
      2,
    ),
    // Use the collection as a title
    'load arguments' => array(
      '%map',
      '%index',
    ),
    'page callback' => 'google_appliance_search_view',
    'page arguments' => array(
      'google-appliance',
      1,
      2,
      3,
    ),
    'access callback' => 'google_appliance_catch_all_task_access',
    'access arguments' => array(
      'search any google appliance client/collection',
      1,
      2,
    ),
    'type' => MENU_LOCAL_TASK,
  );

  // Add the (optional) additional search tabs.
  foreach ($tabs_array as $this_tab) {
    $tab = _google_appliance_explode_tab($this_tab);

    // Google Appliance module tabs.
    $is_default = $tab['client'] == $default_client && $tab['collection'] == $default_collection;
    $client_arg = google_appliance_client_to_arg($tab['client']);
    $collection_arg = google_appliance_collection_to_arg($tab['collection']);
    $path_base = 'google-appliance/' . $client_arg . '/' . $collection_arg;
    $item = array(
      'title' => t($tab['title']),
      'load arguments' => array(
        '%map',
        '%index',
      ),
      'page callback' => 'google_appliance_search_view',
      'page arguments' => array(
        $path_base,
        $tab['client'],
        $tab['collection'],
        3,
      ),
      'access arguments' => array(
        'search google appliance',
      ),
      'type' => MENU_LOCAL_TASK,
      'parent' => 'google-appliance',
    );
    google_appliance_local_task($items, $path_base, 'google-appliance', $item);

    // Search module (or our equivalent) tabs.
    $path_base = 'search/' . $tab['path'];
    $item = array(
      'title' => t($tab['title']),
      'load arguments' => array(
        '%map',
        '%index',
      ),
      'page callback' => 'google_appliance_search_view',
      'page arguments' => array(
        $path_base,
        $tab['client'],
        $tab['collection'],
        2,
      ),
      'access arguments' => array(
        'search google appliance',
      ),
      'type' => MENU_LOCAL_TASK,
    );
    google_appliance_local_task($items, $path_base, 'search', $item);
  }
  return $items;
}