diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc index c93aa03..fc09502 100644 --- a/core/modules/field_ui/field_ui.admin.inc +++ b/core/modules/field_ui/field_ui.admin.inc @@ -924,10 +924,21 @@ function field_ui_field_edit_form($form, &$form_state, $instance) { $form['field']['cardinality'] = array( '#type' => 'select', '#title' => t('Number of values'), - '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)), - '#default_value' => $field['cardinality'], + '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)) + array('other' => t('Other')), + '#default_value' => ($field['cardinality'] < 10) ? $field['cardinality'] : 'other', '#description' => $description, ); + $form['field']['cardinality_other'] = array( + '#type' => 'number', + '#default_value' => 11, + '#description' => t('Enter a different number not available in the select box above.'), + '#min' => 11, + '#states' => array( + 'visible' => array( + ':input[name="field[cardinality]"]' => array('value' => 'other'), + ), + ), + ); // Add additional field type settings. The field type module is // responsible for not returning settings that cannot be changed if @@ -1077,6 +1088,12 @@ function field_ui_field_edit_form_submit($form, &$form_state) { $field = $form['#field']; $entity = $form['#entity']; + // Check the cardinality settings. + if ($form_state['values']['field']['cardinality'] == 'other') { + $form_state['values']['field']['cardinality'] = $form_state['values']['field']['cardinality_other']; + } + unset($form_state['values']['field']['cardinality_other']); + // Merge incoming values into the field. $field = array_merge($field, $form_state['values']['field']); try {