/**
  * Helper method for altering a textfield form element to use autocompletion.
  */
 public function alterElement(array &$element, array $fields = array())
 {
     if (search_api_autocomplete_access($this)) {
         // Add option defaults (in case of updates from earlier versions).
         $options = $this->options + array('submit_button_selector' => ':submit', 'autosubmit' => TRUE, 'min_length' => 1);
         $fields_string = $fields ? implode(' ', $fields) : '-';
         $module_path = drupal_get_path('module', 'search_api_autocomplete');
         $autocomplete_path = 'search_api_autocomplete/' . $this->machine_name . '/' . $fields_string;
         $element['#attached']['css'][] = $module_path . '/search_api_autocomplete.css';
         $element['#attached']['js'][] = $module_path . '/search_api_autocomplete.js';
         $js_settings = array();
         if ($options['submit_button_selector'] != ':submit') {
             $js_settings['selector'] = $options['submit_button_selector'];
         }
         if (($delay = variable_get('search_api_autocomplete_delay')) !== NULL) {
             $js_settings['delay'] = $delay;
         }
         // Allow overriding of the default handler with a custom script.
         $path_overrides = variable_get('search_api_autocomplete_scripts', array());
         if (!empty($path_overrides[$this->machine_name])) {
             $autocomplete_path = NULL;
             $override = $path_overrides[$this->machine_name];
             if (is_scalar($override)) {
                 $autocomplete_path = url($override, array('absolute' => TRUE, 'query' => array('machine_name' => $this->machine_name)));
             } elseif (!empty($override['#callback']) && is_callable($override['#callback'])) {
                 $autocomplete_path = call_user_func($override['#callback'], $this, $element, $override);
             }
             if (!$autocomplete_path) {
                 return;
             }
             $js_settings['custom_path'] = TRUE;
         }
         if ($js_settings) {
             $element['#attached']['js'][] = array('type' => 'setting', 'data' => array('search_api_autocomplete' => array($this->machine_name => $js_settings)));
         }
         $element['#autocomplete_path'] = $autocomplete_path;
         $element += array('#attributes' => array());
         $element['#attributes'] += array('class' => array());
         if ($options['autosubmit']) {
             $element['#attributes']['class'][] = 'auto_submit';
         }
         $element['#attributes']['data-search-api-autocomplete-search'] = $this->machine_name;
         if ($options['min_length'] > 1) {
             $element['#attributes']['data-min-autocomplete-length'] = $options['min_length'];
         }
     }
 }
 /**
  * Helper method for altering a textfield form element to use autocompletion.
  */
 public function alterElement(array &$element, array $fields = array())
 {
     if (search_api_autocomplete_access($this)) {
         $fields_string = $fields ? implode(' ', $fields) : '-';
         $element['#attached']['css'][] = drupal_get_path('module', 'search_api_autocomplete') . '/search_api_autocomplete.css';
         $element['#attached']['js'][] = drupal_get_path('module', 'search_api_autocomplete') . '/search_api_autocomplete.js';
         $element['#autocomplete_path'] = 'search_api_autocomplete/' . $this->machine_name . '/' . $fields_string;
         $element += array('#attributes' => array());
         $element['#attributes'] += array('class' => array());
         $element['#attributes']['class'][] = 'auto_submit';
     }
 }
 /**
  * Helper method for altering a textfield form element to use autocompletion.
  */
 public function alterElement(array &$element, array $fields = array())
 {
     if (search_api_autocomplete_access($this)) {
         $fields_string = $fields ? implode(' ', $fields) : '-';
         $module_path = drupal_get_path('module', 'search_api_autocomplete');
         $element['#attached']['css'][] = $module_path . '/search_api_autocomplete.css';
         $element['#attached']['js'][] = $module_path . '/search_api_autocomplete.js';
         if (isset($this->options['submit_button_selector'])) {
             $element['#attached']['js'][] = array('type' => 'setting', 'data' => array('search_api_autocomplete' => array('selector' => $this->options['submit_button_selector'])));
         }
         $element['#autocomplete_path'] = 'search_api_autocomplete/' . $this->machine_name . '/' . $fields_string;
         $element += array('#attributes' => array());
         $element['#attributes'] += array('class' => array());
         $element['#attributes']['class'][] = 'auto_submit';
         $options = $this->options + array('min_length' => 1);
         if ($options['min_length'] > 1) {
             $element['#attributes']['data-min-autocomplete-length'] = $options['min_length'];
         }
     }
 }