You are here

function search_autocomplete_form_configure in Search Autocomplete 7.2

Same name and namespace in other branches
  1. 6.4 search_autocomplete.form.configure.inc \search_autocomplete_form_configure()
  2. 6.2 search_autocomplete.form.configure.inc \search_autocomplete_form_configure()
  3. 7.4 search_autocomplete.form.configure.inc \search_autocomplete_form_configure()
  4. 7.3 search_autocomplete.form.configure.inc \search_autocomplete_form_configure()

MENU CALLBACK: Define the form to configure the suggestions.

Return value

A rendered form

1 string reference to 'search_autocomplete_form_configure'
search_autocomplete_menu in ./search_autocomplete.admin.inc
Implementation of hook_menu(). Create an administration page to access admin form

File

./search_autocomplete.form.configure.inc, line 20
Search Autocomplete Helper functions to retrive suggestions from database

Code

function search_autocomplete_form_configure($form, &$form_state) {
  $base = "admin/config/search/search_autocomplete";

  // base URL for this module configurations
  // get data from database
  $fid = arg(4);
  $result = db_select('search_autocomplete_forms', 'f')
    ->fields('f')
    ->condition('fid', $fid)
    ->execute()
    ->fetchAllAssoc('fid');
  foreach ($result as $item) {
    $form['fid'] = array(
      '#type' => 'hidden',
      '#value' => $fid,
    );

    // ------------------------------------------------------------------
    // HOW - How to display Search Autocomplete suggestions
    $form['search_autocomplete_how'] = array(
      '#type' => 'fieldset',
      '#title' => t('HOW - How to display Search Autocomplete suggestions?'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );

    // Number of characters before suggestions
    $trigger = array();
    for ($i = 1; $i < 20; $i++) {
      $trigger[$i] = $i . ' ' . t('characters');
    }
    $form['search_autocomplete_how']['min_char'] = array(
      '#type' => 'select',
      '#title' => t('Minimum keyword size that uncouple autocomplete search'),
      '#default_value' => $item->min_char,
      '#options' => $trigger,
      '#multiple' => FALSE,
      '#required' => TRUE,
    );

    // Number of suggestions to display
    $limit = array();
    for ($i = 1; $i < 50; $i++) {
      $limit[$i] = $i . ' ' . t('results');
    }
    $form['search_autocomplete_how']['max_sug'] = array(
      '#type' => 'select',
      '#title' => t('Limit of the autocomplete search result'),
      '#default_value' => $item->max_sug,
      '#options' => $limit,
      '#multiple' => FALSE,
      '#required' => TRUE,
    );

    // ------------------------------------------------------------------
    // WHAT - What to display in Search Autocomplete suggestions
    $form['search_autocomplete_what'] = array(
      '#type' => 'fieldset',
      '#title' => t('WHAT - What to display in Search Autocomplete suggestions?'),
      '#description' => t('Choose which data should be added to autocompletion suggestions.'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#theme' => 'search_autocomplete_form_configuration_fieldset',
    );
    $form['search_autocomplete_what']['#tree'] = TRUE;

    // Built possible suggestions
    $result = db_select('search_autocomplete_suggestions', 's')
      ->fields('s')
      ->condition('sug_fid', $fid)
      ->orderBy('sug_weight')
      ->execute()
      ->fetchAllAssoc('sid');
    foreach ($result as $suggestion) {

      // if the module has no dependencies, or if the dependencies are enabled: activate the suggestion
      if (drupal_strlen($suggestion->sug_dependencies) == 0 || module_exists($suggestion->sug_dependencies)) {
        $activate = TRUE;
        $title = $suggestion->sug_title;
      }
      else {
        $activate = FALSE;
        $title = $suggestion->sug_title . '  ' . t('(require @module module)', array(
          '@module' => $suggestion->sug_dependencies,
        ));
      }
      $sid = $suggestion->sid;
      $form['search_autocomplete_what'][$sid]['sid'] = array(
        '#type' => 'hidden',
        '#value' => $sid,
        '#disabled' => !$activate,
      );
      $form['search_autocomplete_what'][$sid]['sug_title'] = array(
        '#type' => 'item',
        '#title' => $title,
        '#disabled' => !$activate,
      );
      $form['search_autocomplete_what'][$sid]['sug_enabled'] = array(
        '#type' => 'checkbox',
        '#return_value' => 1,
        '#default_value' => $suggestion->sug_enabled,
        '#disabled' => !$activate,
      );
      $form['search_autocomplete_what'][$sid]['sug_prefix'] = array(
        // -> sug_prefix
        '#type' => 'textfield',
        '#default_value' => $suggestion->sug_prefix,
        '#maxlength' => 255,
        '#size' => 35,
        '#disabled' => !$activate,
      );
      $form['search_autocomplete_what'][$sid]['sug_weight'] = array(
        // -> weight of the item in hierarchy
        '#type' => 'weight',
        '#default_value' => $suggestion->sug_weight,
        '#disabled' => !$activate,
      );
      $form['search_autocomplete_what'][$sid]['sug_edit'] = array(
        // -> weight of the item in hierarchy
        '#type' => 'item',
        '#title' => l(t('edit'), "{$base}/suggestion/" . $suggestion->sid . "/edit"),
      );
    }

    // ------------------------------------------------------------------
    // ADVANCED - Advanced options
    $form['search_autocomplete_advanced'] = array(
      '#type' => 'fieldset',
      '#title' => t('ADVANCED - Advanced options'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $form['search_autocomplete_advanced']['selector'] = array(
      '#type' => 'textfield',
      '#title' => t('ID selector for this form'),
      '#description' => t('Please change only if you know what you do, read <a href="http://projects.axiomcafe.fr/search-autocomplete">documentation</a> first.'),
      '#default_value' => $item->selector,
      '#maxlength' => 255,
      '#size' => 35,
    );

    // Add button validation
    $form['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Save configuration'),
    );
  }
  return $form;
}