/** * 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']; } } }