From 85ab760751e27b757c8964a4decc2cc5ee6bf59e Mon Sep 17 00:00:00 2001 From: Bob Vincent Date: Mon, 12 Sep 2011 12:18:20 -0400 Subject: [PATCH 1/2] Issue #1002734: Add a test for creation of number_integer fields. --- modules/field/modules/number/number.test | 33 +++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/modules/field/modules/number/number.test b/modules/field/modules/number/number.test index 3b0cbafae3247b87e3e666005b3518a6f28ce2a3..18a6d3d9cf97a44ba44d78196090afb789a45c73 100644 --- a/modules/field/modules/number/number.test +++ b/modules/field/modules/number/number.test @@ -23,7 +23,7 @@ class NumberFieldTestCase extends DrupalWebTestCase { function setUp() { parent::setUp('field_test'); - $this->web_user = $this->drupalCreateUser(array('access field_test content', 'administer field_test content')); + $this->web_user = $this->drupalCreateUser(array('access field_test content', 'administer field_test content', 'administer content types')); $this->drupalLogin($this->web_user); } @@ -93,4 +93,35 @@ class NumberFieldTestCase extends DrupalWebTestCase { ); } } + /** + * Test number_integer field. + */ + function testNumberIntegerField() { + // Display the "Add content type" form. + $this->drupalGet('admin/structure/types/add'); + + // Add a content type. + $name = $this->randomName(); + $type = drupal_strtolower($name); + $edit = array('name' => $name, 'type' => $type); + $this->drupalPost(NULL, $edit, t('Save and add fields')); + + // Add an integer field to the newly-created type. + $label = $this->randomName(); + $field_name = drupal_strtolower($label); + $edit = array( + 'fields[_add_new_field][label]'=> $label, + 'fields[_add_new_field][field_name]' => $field_name, + 'fields[_add_new_field][type]' => 'number_integer', + 'fields[_add_new_field][widget_type]' => 'number', + ); + $this->drupalPost(NULL, $edit, t('Save')); + + // Change the display format from "number_integer" to "unformatted" + $this->drupalGet("admin/structure/types/manage/$type/display"); + $edit = array( + "fields[field_$field_name][type]" => 'number_unformatted', + ); + $this->drupalPost(NULL, $edit, t('Save')); + } } -- 1.7.5.4 From a13e4a5fc0cb52a06ec2465cd0054d2c7df79c53 Mon Sep 17 00:00:00 2001 From: Bob Vincent Date: Mon, 12 Sep 2011 13:11:15 -0400 Subject: [PATCH 2/2] Issue #1002734: Fix undefined index notices in field_formatter_settings_form(). --- modules/field/modules/number/number.module | 77 ++++++++++++++++------------ 1 files changed, 44 insertions(+), 33 deletions(-) diff --git a/modules/field/modules/number/number.module b/modules/field/modules/number/number.module index fd536730836f5821123e4f682a466de40f15558b..ad5514570a5a6399a977111a06aa55fd478e01a6 100644 --- a/modules/field/modules/number/number.module +++ b/modules/field/modules/number/number.module @@ -181,11 +181,18 @@ function number_field_is_empty($item, $field) { */ function number_field_formatter_info() { return array( + // The 'Default' formatter is different for integer fields on the one hand, + // and for decimal and float fields on the other hand, in order to be able + // to use different default values for the settings. 'number_integer' => array( 'label' => t('Default'), 'field types' => array('number_integer'), 'settings' => array( 'thousand_separator' => ' ', + // The 'decimal_separator' and 'scale' settings are not configurable + // through the UI, and will therefore keep their default values. They + // are only present so that the 'number_integer' and 'number_decimal' + // formatters can use the same code. 'decimal_separator' => '.', 'scale' => 0, 'prefix_suffix' => TRUE, @@ -215,41 +222,43 @@ function number_field_formatter_settings_form($field, $instance, $view_mode, $fo $display = $instance['display'][$view_mode]; $settings = $display['settings']; - $options = array( - '' => t(''), - '.' => t('Decimal point'), - ',' => t('Comma'), - ' ' => t('Space'), - ); - $element['thousand_separator'] = array( - '#type' => 'select', - '#title' => t('Thousand marker'), - '#options' => $options, - '#default_value' => $settings['thousand_separator'], - ); - - if ($display['type'] == 'number_decimal' || $display['type'] == 'number_float') { - $element['decimal_separator'] = array( - '#type' => 'select', - '#title' => t('Decimal marker'), - '#options' => array('.' => t('Decimal point'), ',' => t('Comma')), - '#default_value' => $settings['decimal_separator'], + if ($display['type'] == 'number_decimal' || $display['type'] == 'number_integer') { + $options = array( + '' => t(''), + '.' => t('Decimal point'), + ',' => t('Comma'), + ' ' => t('Space'), ); - $element['scale'] = array( + $element['thousand_separator'] = array( '#type' => 'select', - '#title' => t('Scale'), - '#options' => drupal_map_assoc(range(0, 10)), - '#default_value' => $settings['scale'], - '#description' => t('The number of digits to the right of the decimal.'), + '#title' => t('Thousand marker'), + '#options' => $options, + '#default_value' => $settings['thousand_separator'], + ); + + if ($display['type'] == 'number_decimal') { + $element['decimal_separator'] = array( + '#type' => 'select', + '#title' => t('Decimal marker'), + '#options' => array('.' => t('Decimal point'), ',' => t('Comma')), + '#default_value' => $settings['decimal_separator'], + ); + $element['scale'] = array( + '#type' => 'select', + '#title' => t('Scale'), + '#options' => drupal_map_assoc(range(0, 10)), + '#default_value' => $settings['scale'], + '#description' => t('The number of digits to the right of the decimal.'), + ); + } + + $element['prefix_suffix'] = array( + '#type' => 'checkbox', + '#title' => t('Display prefix and suffix.'), + '#default_value' => $settings['prefix_suffix'], ); } - $element['prefix_suffix'] = array( - '#type' => 'checkbox', - '#title' => t('Display prefix and suffix.'), - '#default_value' => $settings['prefix_suffix'], - ); - return $element; } @@ -261,9 +270,11 @@ function number_field_formatter_settings_summary($field, $instance, $view_mode) $settings = $display['settings']; $summary = array(); - $summary[] = number_format(1234.1234567890, $settings['scale'], $settings['decimal_separator'], $settings['thousand_separator']); - if ($settings['prefix_suffix']) { - $summary[] = t('Display with prefix and suffix.'); + if ($display['type'] == 'number_decimal' || $display['type'] == 'number_integer') { + $summary[] = number_format(1234.1234567890, $settings['scale'], $settings['decimal_separator'], $settings['thousand_separator']); + if ($settings['prefix_suffix']) { + $summary[] = t('Display with prefix and suffix.'); + } } return implode('
', $summary); -- 1.7.5.4