Index: modules/field/modules/number/number.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/number/number.module,v
retrieving revision 1.6
diff -u -p -r1.6 number.module
--- modules/field/modules/number/number.module	12 Apr 2009 02:18:51 -0000	1.6
+++ modules/field/modules/number/number.module	15 Apr 2009 20:00:35 -0000
@@ -235,6 +235,11 @@ function number_elements() {
       '#input' => TRUE,
       '#columns' => array('value'), '#delta' => 0,
       '#process' => array('number_process'),
+      '#number_type' => 'decimal',
+      '#precision' => 10,
+      '#scale' => 2,
+      '#decimal_point' => '.',
+      
     ),
   );
 }
@@ -269,10 +274,24 @@ function number_elements() {
  *   the form item for a single element for this field
  */
 function number_field_widget(&$form, &$form_state, $field, $instance, $items, $delta = 0) {
+  $type = explode('_', $field['type'], 2);
   $element = array(
     '#type' => $instance['widget']['type'],
     '#default_value' => isset($items[$delta]) ? $items[$delta] : NULL,
+    '#number_type' => $type[1],
+    '#precision' => $field['settings']['precision'],
+    '#decimal_point' => $field['settings']['decimal'],
+    '#scale' => $field['settings']['scale'],
   );
+  if (!empty($instance['settings']['prefix'])) {
+    $prefixes = explode('|', $instance['settings']['prefix']);
+    $element['#field_prefix'] = array_pop($prefixes);
+  }
+  if (!empty($instance['settings']['suffix'])) {
+    $suffixes = explode('|', $instance['settings']['suffix']);
+    $element['#field_suffix'] = array_pop($suffixes);
+  }
+
   return $element;
 }
 
@@ -289,17 +308,13 @@ function number_field_widget_error($elem
  * Build the form element. When creating a form using FAPI #process,
  * note that $element['#value'] is already set.
  *
- * The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
  */
 function number_process($element, $form_state, $form) {
-  $field_name = $element['#field_name'];
-  $field = field_info_field($element['#field_name']);
-  $instance = field_info_instance($element['#field_name'], $element['#bundle']);
   $field_key  = $element['#columns'][0];
 
   $value = isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : '';
-  if ($field['type'] == 'number_decimal') {
-    $value = str_replace('.', $field['settings']['decimal'], $value);
+  if ($element['#number_type'] == 'decimal') {
+    $value = str_replace('.', $element['#decimal_point'], $value);
   }
 
   $element[$field_key] = array(
@@ -307,41 +322,33 @@ function number_process($element, $form_
     '#default_value' => $value,
     // Need to allow a slightly larger size that the field length to allow
     // for some configurations where all characters won't fit in input field.
-    '#size' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] + 2 : 12,
-    '#maxlength' => $field['type'] == 'number_decimal' ? $field['settings']['precision'] : 10,
+    '#size' => $element['#number_type'] == 'decimal' ? $element['#precision'] + 2 : 12,
+    '#maxlength' => $element['#number_type'] == 'decimal' ? $element['#precision'] : 10,
     '#attributes' => array('class' => 'number'),
-    // The following values were set by the Field module and need
-    // to be passed down to the nested element.
+    // The following values need to be passed down to the nested element.
     '#title' => $element['#title'],
     '#description' => $element['#description'],
     '#required' => $element['#required'],
-    '#field_name' => $element['#field_name'],
-    '#bundle' => $element['#bundle'],
-    '#delta' => $element['#delta'],
-    '#columns' => $element['#columns'],
   );
-
-  if (!empty($instance['settings']['prefix'])) {
-    $prefixes = explode('|', $instance['settings']['prefix']);
-    $element[$field_key]['#field_prefix'] = array_pop($prefixes);
+  if (!empty($element['#field_prefix'])) {
+    $element[$field_key]['#field_prefix'] = $element['#field_prefix'];
   }
-  if (!empty($instance['settings']['suffix'])) {
-    $suffixes = explode('|', $instance['settings']['suffix']);
-    $element[$field_key]['#field_suffix'] = array_pop($suffixes);
+  if (!empty($element['#field_suffix'])) {
+    $element[$field_key]['#field_suffix'] = $element['#field_suffix'];
   }
 
   // Make sure we don't wipe out element validation added elsewhere.
   if (empty($element['#element_validate'])) {
     $element['#element_validate'] = array();
   }
-  switch ($field['type']) {
-    case 'number_float':
+  switch ($element['#number_type']) {
+    case 'float':
       $element['#element_validate'][] = 'number_float_validate';
       break;
-    case 'number_integer':
+    case 'integer':
       $element['#element_validate'][] = 'number_integer_validate';
       break;
-    case 'number_decimal':
+    case 'decimal':
       $element['#element_validate'][] = 'number_decimal_validate';
       break;
   }
@@ -353,8 +360,6 @@ function number_process($element, $form_
  * 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['#field_name'], $element['#bundle']);
   $field_key = $element['#columns'][0];
   $value = $element['#value'][$field_key];
 
@@ -363,7 +368,7 @@ function number_float_validate($element,
     $value = preg_replace('@[^-0-9\.]@', '', $value);
     if ($start != $value) {
       $error_field = implode('][', $element['#parents']) . '][' . $field_key;
-      form_set_error($error_field, t('Only numbers and decimals are allowed in %field.', array('%field' => t($instance['label']))));
+      form_set_error($error_field, t('Only numbers and decimals are allowed in %field.', array('%field' => $element['#title'])));
     }
     else {
       form_set_value($element[$field_key], $value, $form_state);
@@ -375,8 +380,6 @@ 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['#field_name'], $element['#bundle']);
   $field_key = $element['#columns'][0];
   $value = $element['#value'][$field_key];
 
@@ -385,7 +388,7 @@ function number_integer_validate($elemen
     $value = preg_replace('@[^-0-9]@', '', $value);
     if ($start != $value) {
       $error_field = implode('][', $element['#parents']) . '][' . $field_key;
-      form_set_error($error_field, t('Only numbers are allowed in %field.', array('%field' => t($instance['label']))));
+      form_set_error($error_field, t('Only numbers are allowed in %field.', array('%field' => $element['#title'])));
     }
     else {
       form_set_value($element[$field_key], $value, $form_state);
@@ -397,21 +400,19 @@ 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['#field_name'], $element['#bundle']);
   $field_key = $element['#columns'][0];
   $value = $element['#value'][$field_key];
 
   if (($element[$field_key]['#required'] || !empty($value))) {
     $start = $value;
-    $value = preg_replace('@[^-0-9\\' . $field['settings']['decimal'] . ']@', '', $value);
+    $value = preg_replace('@[^-0-9\\' . $element['#decimal_point'] . ']@', '', $value);
     if ($start != $value) {
       $error_field = implode('][', $element['#parents']) . '][' . $field_key;
-      form_set_error($error_field, t('Only numbers and the decimal character (%decimal) are allowed in %field.', array('%decimal' => $field['settings']['decimal'], '%field' => t($instance['label']))));
+      form_set_error($error_field, t('Only numbers and the decimal character (%decimal) are allowed in %field.', array('%decimal' => $element['#decimal_point'], '%field' => $element['#title'])));
     }
     else {
-      $value = str_replace($field['settings']['decimal'], ' .', $value);
-      $value = round($value, $field['settings']['scale']);
+      $value = str_replace($element['#decimal_point'], ' .', $value);
+      $value = round($value, $element['#scale']);
       form_set_value($element[$field_key], $value, $form_state);
     }
   }
Index: modules/field/modules/text/text.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.module,v
retrieving revision 1.6
diff -u -p -r1.6 text.module
--- modules/field/modules/text/text.module	12 Apr 2009 02:18:51 -0000	1.6
+++ modules/field/modules/text/text.module	15 Apr 2009 20:00:35 -0000
@@ -234,13 +234,16 @@ function text_elements() {
       '#input' => TRUE,
       '#columns' => array('value'), '#delta' => 0,
       '#process' => array('text_textfield_process'),
+      '#size' => 60,
+      '#text_processing' => FALSE,
       '#autocomplete_path' => FALSE,
       ),
     'text_textarea' => array(
       '#input' => TRUE,
       '#columns' => array('value', 'format'), '#delta' => 0,
+      '#rows' => 5,
+      '#text_processing' => FALSE,
       '#process' => array('text_textarea_process'),
-      '#filter_value' => FILTER_FORMAT_DEFAULT,
       ),
   );
 }
@@ -281,7 +284,15 @@ function text_field_widget(&$form, &$for
   $element = array(
     '#type' => $instance['widget']['type'],
     '#default_value' => isset($items[$delta]) ? $items[$delta] : '',
+    '#text_processing' => ($instance['settings']['text_processing'] == 1),
   );
+  if ($instance['widget']['type'] == 'text_textfield') {
+    $element['#size'] = $instance['widget']['settings']['size'];
+    $element['#max_length'] = $field['settings']['max_length'];
+  }
+  elseif ($instance['widget']['type'] == 'text_textarea') {
+    $element['#rows'] = $instance['widget']['settings']['rows'];
+  }
   return $element;
 }
 
@@ -293,21 +304,13 @@ function text_field_widget_error($elemen
 }
 
 /**
- * Process an individual element.
- *
+ * Process an individual element. 
+*
  * Build the form element. When creating a form using FAPI #process,
  * note that $element['#value'] is already set.
  *
- * The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
- *
- * TODO: For widgets to be actual FAPI 'elements', reusable outside of a
- * 'field' context, they shoudn't rely on $field and $instance. The bits of
- * information needed to adjust the behavior of the 'element' should be
- * extracted in hook_field_widget() above.
  */
 function text_textfield_process($element, $form_state, $form) {
-  $field = $form['#fields'][$element['#field_name']]['field'];
-  $instance = $form['#fields'][$element['#field_name']]['instance'];
   $field_key = $element['#columns'][0];
   $delta = $element['#delta'];
 
@@ -315,23 +318,19 @@ function text_textfield_process($element
     '#type' => 'textfield',
     '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
     '#autocomplete_path' => $element['#autocomplete_path'],
-    '#size' => $instance['widget']['settings']['size'],
+    '#size' => $element['#size'],
     '#attributes' => array('class' => 'text'),
     // The following values were set by the field module and need
     // to be passed down to the nested element.
     '#title' => $element['#title'],
     '#description' => $element['#description'],
     '#required' => $element['#required'],
-    '#field_name' => $element['#field_name'],
-    '#bundle' => $element['#bundle'],
-    '#delta' => $element['#delta'],
-    '#columns' => $element['#columns'],
   );
 
-  $element[$field_key]['#maxlength'] = !empty($field['settings']['max_length']) ? $field['settings']['max_length'] : NULL;
+  $element[$field_key]['#maxlength'] = !empty($element['#max_length']) ? $element['#max_length'] : NULL;
 
-  if (!empty($instance['settings']['text_processing'])) {
-    $filter_key = $element['#columns'][1];
+  if ($element['#text_processing']) {
+    $filter_key = (count($element['#columns']) == 2) ? $element['#columns'][1] : 'format';
     $format = isset($element['#value'][$filter_key]) ? $element['#value'][$filter_key] : FILTER_FORMAT_DEFAULT;
     $parents = array_merge($element['#parents'] , array($filter_key));
     $element[$filter_key] = filter_form($format, 1, $parents);
@@ -346,30 +345,24 @@ function text_textfield_process($element
  * Build the form element. When creating a form using FAPI #process,
  * note that $element['#value'] is already set.
  *
- * The $field and $instance arrays are in $form['#fields'][$element['#field_name']].
  */
 function text_textarea_process($element, $form_state, $form) {
-  $field = $form['#fields'][$element['#field_name']]['field'];
-  $instance = $form['#fields'][$element['#field_name']]['instance'];
   $field_key = $element['#columns'][0];
   $delta = $element['#delta'];
+
   $element[$field_key] = array(
     '#type' => 'textarea',
     '#default_value' => isset($element['#value'][$field_key]) ? $element['#value'][$field_key] : NULL,
-    '#rows' => $instance['widget']['settings']['rows'],
+    '#rows' => $element['#rows'],
     '#weight' => 0,
     // The following values were set by the field module and need
     // to be passed down to the nested element.
     '#title' => $element['#title'],
     '#description' => $element['#description'],
     '#required' => $element['#required'],
-    '#field_name' => $element['#field_name'],
-    '#bundle' => $element['#bundle'],
-    '#delta' => $element['#delta'],
-    '#columns' => $element['#columns'],
   );
 
-  if (!empty($instance['settings']['text_processing'])) {
+  if ($element['#text_processing']) {
     $filter_key = (count($element['#columns']) == 2) ? $element['#columns'][1] : 'format';
     $format = isset($element['#value'][$filter_key]) ? $element['#value'][$filter_key] : FILTER_FORMAT_DEFAULT;
     $parents = array_merge($element['#parents'] , array($filter_key));
