Index: modules/field/field.api.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.api.php,v
retrieving revision 1.46
diff -u -p -r1.46 field.api.php
--- modules/field/field.api.php 23 Oct 2009 22:24:13 -0000 1.46
+++ modules/field/field.api.php 28 Oct 2009 13:08:38 -0000
@@ -632,11 +632,15 @@ function hook_field_widget_info_alter(&$
* Array of default values for this field.
* @param $delta
* The order of this item in the array of subelements (0, 1, 2, etc).
+ * @param $element
+ * A form element array containing basic properties for the widget: #title,
+ * #description, #required, #field, #field_instance, #field_name, #delta,
+ * #columns.
* @return
* The form item for a single element for this field.
*/
-function hook_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = 0) {
- $element = array(
+function hook_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $element += array(
'#type' => $instance['widget']['type'],
'#default_value' => isset($items[$delta]) ? $items[$delta] : '',
);
Index: modules/field/field.form.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.form.inc,v
retrieving revision 1.29
diff -u -p -r1.29 field.form.inc
--- modules/field/field.form.inc 15 Oct 2009 12:44:34 -0000 1.29
+++ modules/field/field.form.inc 28 Oct 2009 12:45:26 -0000
@@ -57,18 +57,19 @@ function field_default_form($obj_type, $
$delta = isset($get_delta) ? $get_delta : 0;
$function = $instance['widget']['module'] . '_field_widget';
if (function_exists($function)) {
- if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta)) {
- $defaults = array(
- '#required' => $get_delta > 0 ? FALSE : $instance['required'],
- '#columns' => array_keys($field['columns']),
- '#title' => check_plain(t($instance['label'])),
- '#description' => field_filter_xss($instance['description']),
- '#delta' => $delta,
- '#field_name' => $field['field_name'],
- '#bundle' => $instance['bundle'],
- '#object_type' => $instance['object_type'],
- );
- $element = array_merge($element, $defaults);
+ $element = array(
+ '#title' => check_plain(t($instance['label'])),
+ '#description' => field_filter_xss($instance['description']),
+ '#required' => $get_delta > 0 ? FALSE : $instance['required'],
+ '#field' => $field,
+ '#field_instance' => $instance,
+ '#field_name' => $field['field_name'],
+ // @todo #delta cannot be rebuilt by the widget, but #columns is
+ // contained in #field.
+ '#delta' => $delta,
+ '#columns' => array_keys($field['columns']),
+ );
+ if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
// If we're processing a specific delta value for a field where the
// field module handles multiples, set the delta in the result.
// For fields that handle their own processing, we can't make assumptions
@@ -84,14 +85,6 @@ function field_default_form($obj_type, $
}
if ($form_element) {
- $defaults = array(
- '#field_name' => $field['field_name'],
- '#tree' => TRUE,
- '#weight' => $instance['widget']['weight'],
- );
-
- $form_element = array_merge($form_element, $defaults);
-
// Add the field form element as a child keyed by language code to match the
// field data structure: $object->{$field_name}[$langcode][$delta][$column].
// The '#language' key can be used to access the field's form element when
@@ -99,7 +92,7 @@ function field_default_form($obj_type, $
// form element.
$addition[$field['field_name']] = array(
'#tree' => TRUE,
- '#weight' => $form_element['#weight'],
+ '#weight' => $instance['widget']['weight'],
'#language' => $langcode,
$langcode => $form_element,
);
@@ -153,26 +146,29 @@ function field_multiple_value_form($fiel
'#prefix' => '
',
'#suffix' => '
',
'#max_delta' => $max,
+ '#field_name' => $field['field_name'],
);
$function = $instance['widget']['module'] . '_field_widget';
if (function_exists($function)) {
for ($delta = 0; $delta <= $max; $delta++) {
- if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta)) {
- $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
- $defaults = array(
- // For multiple fields, title and description are handled by the wrapping table.
- '#title' => $multiple ? '' : $title,
- '#description' => $multiple ? '' : $description,
- '#required' => $delta == 0 && $instance['required'],
- '#weight' => $delta,
- '#delta' => $delta,
- '#columns' => array_keys($field['columns']),
- '#field_name' => $field_name,
- '#object_type' => $instance['object_type'],
- '#bundle' => $instance['bundle'],
- );
-
+ $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
+ $element = array(
+ // For multiple fields, title and description are handled by the wrapping table.
+ '#title' => $multiple ? '' : $title,
+ '#description' => $multiple ? '' : $description,
+ // Only the first widget should be required.
+ '#required' => $delta == 0 && $instance['required'],
+ '#weight' => $delta,
+ '#field' => $field,
+ '#field_instance' => $instance,
+ '#field_name' => $field_name,
+ // @todo #delta cannot be rebuilt by the widget, but #columns is
+ // contained in #field.
+ '#delta' => $delta,
+ '#columns' => array_keys($field['columns']),
+ );
+ if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
// Input field for the delta (drag-n-drop reordering).
if ($multiple) {
// We name the element '_weight' to avoid clashing with elements
@@ -185,14 +181,12 @@ function field_multiple_value_form($fiel
'#weight' => 100,
);
}
-
- $form_element[$delta] = array_merge($element, $defaults);
+ $form_element[$delta] = $element;
}
}
// Add 'add more' button, if not working with a programmed form.
if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed'])) {
-
$form_element[$field_name . '_add_more'] = array(
'#type' => 'submit',
'#name' => $field_name . '_add_more',
Index: modules/field/modules/number/number.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.module,v
retrieving revision 1.23
diff -u -p -r1.23 number.module
--- modules/field/modules/number/number.module 23 Oct 2009 22:24:13 -0000 1.23
+++ modules/field/modules/number/number.module 28 Oct 2009 12:39:49 -0000
@@ -252,8 +252,8 @@ function theme_field_formatter_number_un
*/
function theme_field_formatter_number($variables) {
$element = $variables['element'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$value = $element['#item']['value'];
$settings = $element['#settings'];
$formatter_type = $element['#formatter'];
@@ -313,37 +313,9 @@ function number_element_info() {
/**
* Implement hook_field_widget().
- *
- * Attach a single form element to the form. It will be built out and
- * validated in the callback(s) listed in hook_element_info(). We build it
- * out in the callbacks rather than here in hook_widget so it can be
- * plugged into any module that can provide it with valid
- * $field information.
- *
- * Field module will set the weight, field name and delta values
- * for each form element.
- *
- * If there are multiple values for this field, the Field module will
- * call this function as many times as needed.
- *
- * @param $form
- * the entire form array, $form['#node'] holds node information
- * @param $form_state
- * the form_state, $form_state['values'] holds the form values.
- * @param $field
- * The field structure.
- * @param $instance
- * the field instance array
- * @param $langcode
- * The language associated to $items.
- * @param $delta
- * the order of this item in the array of subelements (0, 1, 2, etc)
- *
- * @return
- * the form item for a single element for this field
*/
-function number_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = 0) {
- $element = array(
+function number_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $element += array(
'#type' => $instance['widget']['type'],
'#default_value' => isset($items[$delta]) ? $items[$delta] : NULL,
);
@@ -367,9 +339,9 @@ function number_field_widget_error($elem
*/
function number_elements_process($element, $form_state, $form) {
$field_name = $element['#field_name'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
- $field_key = $element['#columns'][0];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
+ $field_key = $element['#columns'][0];
$value = isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : '';
if ($field['type'] == 'number_decimal') {
@@ -389,9 +361,9 @@ function number_elements_process($elemen
'#title' => $element['#title'],
'#description' => $element['#description'],
'#required' => $element['#required'],
+ '#field' => $element['#field'],
+ '#field_instance' => $element['#field_instance'],
'#field_name' => $element['#field_name'],
- '#object_type' => $element['#object_type'],
- '#bundle' => $element['#bundle'],
'#delta' => $element['#delta'],
'#columns' => $element['#columns'],
);
@@ -428,8 +400,8 @@ function number_elements_process($elemen
* FAPI validation of an individual float element.
*/
function number_float_validate($element, &$form_state) {
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
$value = $element['#value'][$field_key];
@@ -450,8 +422,8 @@ function number_float_validate($element,
* FAPI validation of an individual integer element.
*/
function number_integer_validate($element, &$form_state) {
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
$value = $element['#value'][$field_key];
@@ -472,8 +444,8 @@ function number_integer_validate($elemen
* FAPI validation of an individual decimal element.
*/
function number_decimal_validate($element, &$form_state) {
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
$value = $element['#value'][$field_key];
Index: modules/field/modules/options/options.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/options/options.module,v
retrieving revision 1.14
diff -u -p -r1.14 options.module
--- modules/field/modules/options/options.module 23 Oct 2009 22:24:13 -0000 1.14
+++ modules/field/modules/options/options.module 28 Oct 2009 12:48:56 -0000
@@ -94,8 +94,8 @@ function options_element_info() {
/**
* Implement hook_field_widget().
*/
-function options_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = NULL) {
- $element = array(
+function options_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $element += array(
'#type' => $instance['widget']['type'],
'#default_value' => !empty($items) ? $items : array(),
);
@@ -119,9 +119,9 @@ function options_field_widget_error($ele
* The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
*/
function options_buttons_elements_process($element, &$form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
- $field_key = $element['#columns'][0];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
+ $field_key = $element['#columns'][0];
// See if this element is in the database format or the transformed format,
// and transform it if necessary.
@@ -183,9 +183,9 @@ function options_buttons_elements_proces
* The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
*/
function options_select_elements_process($element, &$form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
- $field_key = $element['#columns'][0];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
+ $field_key = $element['#columns'][0];
// See if this element is in the database format or the transformed format,
// and transform it if necessary.
@@ -224,9 +224,9 @@ function options_select_elements_process
* note that $element['#value'] is already set.
*/
function options_onoff_elements_process($element, &$form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
- $field_key = $element['#columns'][0];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
+ $field_key = $element['#columns'][0];
// See if this element is in the database format or the transformed format,
// and transform it if necessary.
@@ -289,9 +289,9 @@ function options_validate($element, &$fo
* transformation is needed.
*/
function options_data2form($element, $items, $field) {
- $field_key = $element['#columns'][0];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
+ $field_key = $element['#columns'][0];
$options = options_options($field, $instance);
$items_transposed = options_transpose_array_rows_cols($items);
@@ -317,9 +317,9 @@ function options_data2form($element, $it
* transformation is needed.
*/
function options_form2data($element, $field) {
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
$items = (array) $element[$field_key]['#value'];
$options = options_options($field, $instance);
Index: modules/field/modules/text/text.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v
retrieving revision 1.34
diff -u -p -r1.34 text.module
--- modules/field/modules/text/text.module 23 Oct 2009 22:24:13 -0000 1.34
+++ modules/field/modules/text/text.module 28 Oct 2009 12:52:15 -0000
@@ -317,8 +317,8 @@ function theme_field_formatter_text_plai
*/
function theme_field_formatter_text_trimmed($variables) {
$element = $variables['element'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
return text_summary($element['#item']['safe'], $instance['settings']['text_processing'] ? $element['#item']['format'] : NULL);
}
@@ -330,8 +330,8 @@ function theme_field_formatter_text_trim
*/
function theme_field_formatter_text_summary_or_trimmed($variables) {
$element = $variables['element'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
if (!empty($element['#item']['safe_summary'])) {
return $element['#item']['safe_summary'];
@@ -563,40 +563,9 @@ function text_element_info() {
/**
* Implement hook_field_widget().
- *
- * Attach a single form element to the form. It will be built out and
- * validated in the callback(s) listed in hook_element_info(). We build it
- * out in the callbacks rather than here in hook_field_widget so it can be
- * plugged into any module that can provide it with valid
- * $field information.
- *
- * Field module will set the weight, field name and delta values
- * for each form element.
- *
- * If there are multiple values for this field, the field module will
- * call this function as many times as needed.
- *
- * @param $form
- * the entire form array, $form['#node'] holds node information
- * @param $form_state
- * the form_state, $form_state['values'][$field['field_name']]
- * holds the field's form values.
- * @param $field
- * The field structure.
- * @param $instance
- * the field instance array
- * @param $langcode
- * The language associated to $items.
- * @param $items
- * array of default values for this field
- * @param $delta
- * the order of this item in the array of subelements (0, 1, 2, etc)
- *
- * @return
- * the form item for a single element for this field
*/
-function text_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = 0) {
- $element = array(
+function text_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $element += array(
'#type' => $instance['widget']['type'],
'#default_value' => isset($items[$delta]) ? $items[$delta] : '',
);
@@ -638,8 +607,8 @@ function text_field_widget_error($elemen
* extracted in hook_field_widget() above.
*/
function text_textfield_elements_process($element, $form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
$delta = $element['#delta'];
@@ -674,8 +643,8 @@ function text_textfield_elements_process
* The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
*/
function text_textarea_elements_process($element, $form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$field_key = $element['#columns'][0];
$delta = $element['#delta'];
@@ -707,8 +676,8 @@ function text_textarea_elements_process(
* The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
*/
function text_textarea_with_summary_process($element, $form_state, $form) {
- $field = $form['#fields'][$element['#field_name']]['field'];
- $instance = $form['#fields'][$element['#field_name']]['instance'];
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$delta = $element['#delta'];
$field_key = $element['#columns'][1];
@@ -721,7 +690,6 @@ function text_textarea_with_summary_proc
'#weight' => 0,
'#title' => t('Summary'),
'#description' => t('Leave blank to use trimmed value of full text as the summary.'),
- '#required' => $element['#required'],
'#display' => $display,
'#attached' => array('js' => array(drupal_get_path('module', 'text') . '/text.js')),
'#attributes' => array('class' => array('text-textarea-summary')),
@@ -738,7 +706,6 @@ function text_textarea_with_summary_proc
'#title' => $display ? t('Full text') : $element['#title'],
'#description' => $element['#description'],
'#required' => $element['#required'],
- '#required' => $instance['required'],
'#attributes' => array('class' => array('text-full-textarea')),
'#prefix' => '',
'#suffix' => '
',
Index: modules/file/file.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.field.inc,v
retrieving revision 1.7
diff -u -p -r1.7 file.field.inc
--- modules/file/file.field.inc 15 Oct 2009 12:44:36 -0000 1.7
+++ modules/file/file.field.inc 28 Oct 2009 13:01:05 -0000
@@ -429,7 +429,7 @@ function file_field_widget_settings_form
/**
* Implementation of hook_field_widget().
*/
-function file_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = 0) {
+function file_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$form['#attributes'] = array('enctype' => 'multipart/form-data');
$defaults = array(
@@ -461,27 +461,21 @@ function file_field_widget(&$form, &$for
// Essentially we use the managed_file type, extended with some enhancements.
$element_info = element_info('managed_file');
- $element = array(
+ $element += array(
'#type' => 'managed_file',
'#default_value' => isset($items[$delta]) ? $items[$delta] : $defaults,
- '#required' => $instance['required'],
'#upload_location' => file_field_widget_uri($field, $instance),
'#upload_validators' => file_field_widget_upload_validators($field, $instance),
'#value_callback' => 'file_field_widget_value',
'#process' => array_merge($element_info['#process'], array('file_field_widget_process')),
// Allows this field to return an array instead of a single value.
'#extended' => TRUE,
- // Add extra Field properties.
- '#field_name' => $field['field_name'],
- '#bundle' => $instance['bundle'],
- '#object_type' => $instance['object_type'],
);
if ($field['cardinality'] == 1) {
// If there's only one field, return it as delta 0.
- $element['#title'] = $instance['label'];
if (empty($element['#default_value']['fid'])) {
- $element['#description'] = theme('file_upload_help', array('description' => $instance['description'], 'upload_validators' => $element['#upload_validators']));
+ $element['#description'] = theme('file_upload_help', array('description' => $element['#description'], 'upload_validators' => $element['#upload_validators']));
}
$elements = array($element);
}
@@ -499,7 +493,7 @@ function file_field_widget(&$form, &$for
$elements[$delta] = $element;
$elements[$delta]['#default_value'] = $defaults;
$elements[$delta]['#weight'] = $delta;
- $elements[$delta]['#required'] = ($instance['required'] && $delta == 0);
+ $elements[$delta]['#required'] = ($element['#required'] && $delta == 0);
}
// The group of elements all-together need some extra functionality
// after building up the full list (like draggable table rows).
@@ -508,8 +502,11 @@ function file_field_widget(&$form, &$for
$elements['#theme_wrappers'] = array('fieldset');
$elements['#attributes']['class'] = array('file-widget');
$elements['#process'] = array('file_field_widget_process_multiple');
- $elements['#title'] = $instance['label'];
- $elements['#description'] = $instance['description'];
+ $elements['#title'] = $element['#title'];
+ $elements['#description'] = $element['#description'];
+ $elements['#field'] = $element['#field'];
+ $elements['#field_instance'] = $element['#field_instance'];
+ $elements['#field_name'] = $element['#field_name'];
// Add some properties that will eventually be added to the file upload
// field. These are added here so that they may be referenced easily through
@@ -577,7 +574,7 @@ function file_field_widget_value($elemen
if ($input) {
// Checkboxes lose their value when empty.
// If the display field is present make sure its unchecked value is saved.
- $field = field_info_field($element['#field_name']);
+ $field = $element['#field'];
if (empty($input['display'])) {
$input['display'] = $field['settings']['display_field'] ? 0 : 1;
}
@@ -605,8 +602,8 @@ function file_field_widget_process($elem
$item = $element['#value'];
$item['fid'] = $element['fid']['#value'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$settings = $instance['widget']['settings'];
$element['#theme'] = 'file_widget';
@@ -717,8 +714,8 @@ function theme_file_widget($variables) {
function theme_file_widget_multiple($variables) {
$element = $variables['element'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
// Get our list of widgets in order.
$widgets = array();
Index: modules/image/image.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.field.inc,v
retrieving revision 1.2
diff -u -p -r1.2 image.field.inc
--- modules/image/image.field.inc 17 Oct 2009 02:14:52 -0000 1.2
+++ modules/image/image.field.inc 28 Oct 2009 13:01:57 -0000
@@ -305,8 +305,8 @@ function image_field_widget_settings_for
/**
* Implementation of hook_field_widget().
*/
-function image_field_widget(&$form, &$form_state, $field, $instance, $items, $delta = 0) {
- $elements = file_field_widget($form, $form_state, $field, $instance, $items, $delta);
+function image_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $elements = file_field_widget($form, $form_state, $field, $instance, $langcode, $items, $delta, $element);
$settings = $instance['settings'];
foreach (element_children($elements) as $delta) {
@@ -346,8 +346,8 @@ function image_field_widget_process($ele
$item = $element['#value'];
$item['fid'] = $element['fid']['#value'];
- $field = field_info_field($element['#field_name']);
- $instance = field_info_instance($element['#object_type'], $element['#field_name'], $element['#bundle']);
+ $field = $element['#field'];
+ $instance = $element['#field_instance'];
$settings = $instance['settings'];
$widget_settings = $instance['widget']['settings'];
Index: modules/simpletest/tests/field_test.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/field_test.module,v
retrieving revision 1.35
diff -u -p -r1.35 field_test.module
--- modules/simpletest/tests/field_test.module 24 Oct 2009 17:02:51 -0000 1.35
+++ modules/simpletest/tests/field_test.module 28 Oct 2009 13:03:52 -0000
@@ -489,40 +489,12 @@ function field_test_field_widget_info()
/**
* Implement hook_field_widget().
- *
- * Attach a single form element to the form. It will be built out and
- * validated in the callback(s) listed in hook_element_info(). We build it
- * out in the callbacks rather than here in hook_widget so it can be
- * plugged into any module that can provide it with valid
- * $field information.
- *
- * If there are multiple values for this field, the field module will
- * call this function as many times as needed.
- *
- * @param $form
- * the entire form array, $form['#node'] holds node information
- * @param $form_state
- * the form_state, $form_state['values'][$field['field_name']]
- * holds the field's form values.
- * @param $field
- * The field structure.
- * @param $instance
- * the instance array
- * @param $items
- * array of default values for this field
- * @param $delta
- * the order of this item in the array of subelements (0, 1, 2, etc)
- *
- * @return
- * the form item for a single element for this field
*/
-function field_test_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = 0) {
+function field_test_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$element = array(
- 'value' => array(
- '#title' => $instance['label'],
+ 'value' => $element + array(
'#type' => 'textfield',
'#default_value' => isset($items[$delta]['value']) ? $items[$delta]['value'] : '',
- '#required' => $instance['required'],
),
);
return $element;
Index: modules/taxonomy/taxonomy.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v
retrieving revision 1.530
diff -u -p -r1.530 taxonomy.module
--- modules/taxonomy/taxonomy.module 24 Oct 2009 05:13:44 -0000 1.530
+++ modules/taxonomy/taxonomy.module 28 Oct 2009 13:07:09 -0000
@@ -1211,8 +1211,8 @@ function taxonomy_term_title($term) {
/**
* Implement hook_field_widget().
*/
-function taxonomy_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta = NULL) {
- $element = array(
+function taxonomy_field_widget(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
+ $element += array(
'#type' => $instance['widget']['type'],
'#default_value' => !empty($items) ? $items : array(),
);