/[drupal]/drupal/modules/field/field.form.inc
ViewVC logotype

Diff of /drupal/modules/field/field.form.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.31, Sat Oct 31 16:06:35 2009 UTC revision 1.32, Sun Nov 1 14:05:31 2009 UTC
# Line 1  Line 1 
1  <?php  <?php
2  // $Id: field.form.inc,v 1.30 2009/10/31 14:58:41 webchick Exp $  // $Id: field.form.inc,v 1.31 2009/10/31 16:06:35 dries Exp $
3    
4  /**  /**
5   * @file   * @file
# Line 57  function field_default_form($obj_type, $ Line 57  function field_default_form($obj_type, $
57      $delta = isset($get_delta) ? $get_delta : 0;      $delta = isset($get_delta) ? $get_delta : 0;
58      $function = $instance['widget']['module'] . '_field_widget';      $function = $instance['widget']['module'] . '_field_widget';
59      if (function_exists($function)) {      if (function_exists($function)) {
60        if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta)) {        $element = array(
61          $defaults = array(          '#object_type' => $instance['object_type'],
62            '#required' => $get_delta > 0 ? FALSE : $instance['required'],          '#bundle' => $instance['bundle'],
63            '#columns'  => array_keys($field['columns']),          '#field_name' => $field['field_name'],
64            '#title' => check_plain(t($instance['label'])),          '#columns' => array_keys($field['columns']),
65            '#description' => field_filter_xss($instance['description']),          '#title' => check_plain(t($instance['label'])),
66            '#delta' => $delta,          '#description' => field_filter_xss($instance['description']),
67            '#field_name' => $field['field_name'],          // Only the first widget should be required.
68            '#bundle' => $instance['bundle'],          '#required' => $delta == 0 && $instance['required'],
69            '#object_type' => $instance['object_type'],          '#delta' => $delta,
70          );        );
71          $element = array_merge($element, $defaults);        if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
72          // If we're processing a specific delta value for a field where the          // If we're processing a specific delta value for a field where the
73          // field module handles multiples, set the delta in the result.          // field module handles multiples, set the delta in the result.
74          // For fields that handle their own processing, we can't make assumptions          // For fields that handle their own processing, we can't make assumptions
# Line 84  function field_default_form($obj_type, $ Line 84  function field_default_form($obj_type, $
84    }    }
85    
86    if ($form_element) {    if ($form_element) {
     $defaults = array(  
       '#field_name' => $field['field_name'],  
       '#tree' => TRUE,  
       '#weight' => $instance['widget']['weight'],  
     );  
   
     $form_element = array_merge($form_element, $defaults);  
   
87      // Add the field form element as a child keyed by language code to match the      // Add the field form element as a child keyed by language code to match the
88      // field data structure: $object->{$field_name}[$langcode][$delta][$column].      // field data structure: $object->{$field_name}[$langcode][$delta][$column].
89      // The '#language' key can be used to access the field's form element when      // The '#language' key can be used to access the field's form element when
# Line 99  function field_default_form($obj_type, $ Line 91  function field_default_form($obj_type, $
91      // form element.      // form element.
92      $addition[$field['field_name']] = array(      $addition[$field['field_name']] = array(
93        '#tree' => TRUE,        '#tree' => TRUE,
94        '#weight' => $form_element['#weight'],        '#weight' => $instance['widget']['weight'],
95        '#language' => $langcode,        '#language' => $langcode,
96        $langcode => $form_element,        $langcode => $form_element,
97      );      );
# Line 145  function field_multiple_value_form($fiel Line 137  function field_multiple_value_form($fiel
137    
138    $form_element = array(    $form_element = array(
139      '#theme' => 'field_multiple_value_form',      '#theme' => 'field_multiple_value_form',
140        '#field_name' => $field['field_name'],
141      '#cardinality' => $field['cardinality'],      '#cardinality' => $field['cardinality'],
142      '#title' => $title,      '#title' => $title,
143      '#required' => $instance['required'],      '#required' => $instance['required'],
# Line 157  function field_multiple_value_form($fiel Line 150  function field_multiple_value_form($fiel
150    $function = $instance['widget']['module'] . '_field_widget';    $function = $instance['widget']['module'] . '_field_widget';
151    if (function_exists($function)) {    if (function_exists($function)) {
152      for ($delta = 0; $delta <= $max; $delta++) {      for ($delta = 0; $delta <= $max; $delta++) {
153        if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta)) {        $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
154          $multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;        $element = array(
155          $defaults = array(          '#object_type' => $instance['object_type'],
156            // For multiple fields, title and description are handled by the wrapping table.          '#bundle' => $instance['bundle'],
157            '#title' => $multiple ? '' : $title,          '#field_name' => $field_name,
158            '#description' => $multiple ? '' : $description,          '#columns' => array_keys($field['columns']),
159            '#required' => $delta == 0 && $instance['required'],          // For multiple fields, title and description are handled by the wrapping table.
160            '#weight' => $delta,          '#title' => $multiple ? '' : $title,
161            '#delta' => $delta,          '#description' => $multiple ? '' : $description,
162            '#columns' => array_keys($field['columns']),          // Only the first widget should be required.
163            '#field_name' => $field_name,          '#required' => $delta == 0 && $instance['required'],
164            '#object_type' => $instance['object_type'],          '#delta' => $delta,
165            '#bundle' => $instance['bundle'],          '#weight' => $delta,
166          );        );
167          if ($element = $function($form, $form_state, $field, $instance, $langcode, $items, $delta, $element)) {
168          // Input field for the delta (drag-n-drop reordering).          // Input field for the delta (drag-n-drop reordering).
169          if ($multiple) {          if ($multiple) {
170            // We name the element '_weight' to avoid clashing with elements            // We name the element '_weight' to avoid clashing with elements
# Line 184  function field_multiple_value_form($fiel Line 177  function field_multiple_value_form($fiel
177              '#weight' => 100,              '#weight' => 100,
178            );            );
179          }          }
180            $form_element[$delta] = $element;
         $form_element[$delta] = array_merge($element, $defaults);  
181        }        }
182      }      }
183    
184      // Add 'add more' button, if not working with a programmed form.      // Add 'add more' button, if not working with a programmed form.
185      if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed'])) {      if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && empty($form_state['programmed'])) {
   
186        $form_element[$field_name . '_add_more'] = array(        $form_element[$field_name . '_add_more'] = array(
187          '#type' => 'submit',          '#type' => 'submit',
188          '#name' => $field_name . '_add_more',          '#name' => $field_name . '_add_more',

Legend:
Removed from v.1.31  
changed lines
  Added in v.1.32

  ViewVC Help
Powered by ViewVC 1.1.2