157 lines
4.3 KiB
Plaintext
157 lines
4.3 KiB
Plaintext
<?php
|
|
|
|
/**
|
|
* Implements hook_element_info().
|
|
*/
|
|
function elements_element_info() {
|
|
$types['emailfield'] = array(
|
|
'#input' => TRUE,
|
|
'#size' => 60,
|
|
'#maxlength' => 128,
|
|
'#autocomplete_path' => FALSE,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'emailfield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
$types['searchfield'] = array(
|
|
'#input' => TRUE,
|
|
'#size' => 60,
|
|
'#maxlength' => 128,
|
|
'#autocomplete_path' => FALSE,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'searchfield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
$types['telfield'] = array(
|
|
'#input' => TRUE,
|
|
'#size' => 20,
|
|
'#maxlength' => 64,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'telfield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
$types['urlfield'] = array(
|
|
'#input' => TRUE,
|
|
'#size' => 80,
|
|
'#maxlength' => 128,
|
|
'#autocomplete_path' => FALSE,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'urlfield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
$types['numberfield'] = array(
|
|
'#input' => TRUE,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'numberfield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
$types['rangefield'] = array(
|
|
'#input' => TRUE,
|
|
'#process' => array('ajax_process_form'),
|
|
'#theme' => 'rangefield',
|
|
'#theme_wrappers' => array('form_element'),
|
|
);
|
|
|
|
return $types;
|
|
}
|
|
|
|
/**
|
|
* Implements hook_element_info_alter().
|
|
*/
|
|
function elements_element_info_alter(&$types) {
|
|
// Add placeholder support to textfields and textareas.
|
|
foreach (array_keys($types) as $type) {
|
|
switch ($type) {
|
|
case 'textfield':
|
|
case 'textarea':
|
|
$types[$type]['#process'][] = 'form_process_placeholder';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_theme().
|
|
*/
|
|
function elements_theme() {
|
|
return array(
|
|
'emailfield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
'searchfield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
'telfield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
'urlfield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
'numberfield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
'rangefield' => array(
|
|
'arguments' => array('element' => NULL),
|
|
'render element' => 'element',
|
|
'file' => 'elements.theme.inc',
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Return the autocompletion HTML for a form element.
|
|
*
|
|
* @param $element
|
|
* The renderable element to process for autocompletion.
|
|
*
|
|
* @return
|
|
* The rendered autocompletion element HTML, or an empty string if the field
|
|
* has no autocompletion enabled.
|
|
*/
|
|
function elements_add_autocomplete(&$element) {
|
|
$extra = '';
|
|
|
|
if (!empty($element['#autocomplete_path']) && drupal_valid_path($element['#autocomplete_path'])) {
|
|
drupal_add_library('system', 'drupal.autocomplete');
|
|
$element['#attributes']['class'][] = 'form-autocomplete';
|
|
|
|
$attributes = array();
|
|
$attributes['type'] = 'hidden';
|
|
$attributes['id'] = $element['#attributes']['id'] . '-autocomplete';
|
|
$attributes['value'] = url($element['#autocomplete_path'], array('absolute' => TRUE));
|
|
$attributes['disabled'] = 'disabled';
|
|
$attributes['class'][] = 'autocomplete';
|
|
$extra = '<input' . drupal_attributes($attributes) . ' />';
|
|
}
|
|
|
|
return $extra;
|
|
}
|
|
|
|
/**
|
|
* Element process callback; adds support for the HTML5 placeholder attribute.
|
|
*
|
|
* @param $element
|
|
* An associative array containing the properties of the element.
|
|
*
|
|
* @return
|
|
* The processed element.
|
|
*/
|
|
function form_process_placeholder($element) {
|
|
if (isset($element['#placeholder']) && !isset($element['#attributes']['placeholder'])) {
|
|
// If the placeholder FAPI property is set, simply add it to the form's
|
|
// attributes so it will be output in the HTML tag.
|
|
$element['#attributes']['placeholder'] = $element['#placeholder'];
|
|
}
|
|
return $element;
|
|
}
|