diff --git modules/field/modules/number/number.module modules/field/modules/number/number.module index 45ea954..a237e83 100644 --- modules/field/modules/number/number.module +++ modules/field/modules/number/number.module @@ -20,6 +20,29 @@ function number_help($path, $arg) { } /** + * Default number settings + * + * @param string $number_type + * The type of this number field, such as + * 'number_integer' or 'number_decimal'. + * + * @return + * An array of default field settings. + * + * @todo Should be locale-dependent. + */ +function number_settings_defaults($number_type) { + static $common_defaults = array( + 'thousand_separator' => ' ', + 'decimal_separator' => '.', + 'prefix_suffix' => TRUE, + ); + return $common_defaults + (($number_type == 'number_integer') ? + array('scale' => 0 ) : + array('scale' => 2, 'precision' => 10)); +} + +/** * Implements hook_field_info(). */ function number_field_info() { @@ -27,6 +50,7 @@ function number_field_info() { 'number_integer' => array( 'label' => t('Integer'), 'description' => t('This field stores a number in the database as an integer.'), + 'settings' => number_settings_defaults('number_integer'), 'instance_settings' => array('min' => '', 'max' => '', 'prefix' => '', 'suffix' => ''), 'default_widget' => 'number', 'default_formatter' => 'number_integer', @@ -34,7 +58,7 @@ function number_field_info() { 'number_decimal' => array( 'label' => t('Decimal'), 'description' => t('This field stores a number in the database in a fixed decimal format.'), - 'settings' => array('precision' => 10, 'scale' => 2, 'decimal_separator' => '.'), + 'settings' => number_settings_defaults('number_decimal'), 'instance_settings' => array('min' => '', 'max' => '', 'prefix' => '', 'suffix' => ''), 'default_widget' => 'number', 'default_formatter' => 'number_decimal', @@ -185,26 +209,17 @@ function number_field_formatter_info() { 'number_integer' => array( 'label' => t('Default'), 'field types' => array('number_integer'), - 'settings' => array( - 'thousand_separator' => ' ', - 'decimal_separator' => '.', - 'scale' => 0, - 'prefix_suffix' => TRUE, - ), + 'settings' => number_settings_defaults('number_integer'), ), 'number_decimal' => array( 'label' => t('Default'), 'field types' => array('number_decimal', 'number_float'), - 'settings' => array( - 'thousand_separator' => ' ', - 'decimal_separator' => '.', - 'scale' => 2, - 'prefix_suffix' => TRUE, - ), + 'settings' => number_settings_defaults('number_decimal'), ), 'number_unformatted' => array( 'label' => t('Unformatted'), 'field types' => array('number_integer', 'number_decimal', 'number_float'), + 'settings' => number_settings_defaults('number_integer'), ), ); } @@ -214,7 +229,8 @@ function number_field_formatter_info() { */ function number_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) { $display = $instance['display'][$view_mode]; - $settings = $display['settings']; + $display += array('settings' => array()); + $settings = $display['settings'] + number_settings_defaults($display['type']); $options = array( '' => t(''), @@ -258,8 +274,8 @@ function number_field_formatter_settings_form($field, $instance, $view_mode, $fo * Implements hook_field_formatter_settings_summary(). */ function number_field_formatter_settings_summary($field, $instance, $view_mode) { - $display = $instance['display'][$view_mode]; - $settings = $display['settings']; + $display = $instance['display'][$view_mode] + array('settings' => array()); + $settings = $display['settings'] + number_settings_defaults('number_integer'); $summary = array(); $summary[] = number_format(1234.1234567890, $settings['scale'], $settings['decimal_separator'], $settings['thousand_separator']); @@ -275,7 +291,8 @@ function number_field_formatter_settings_summary($field, $instance, $view_mode) */ function number_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) { $element = array(); - $settings = $display['settings']; + $display += array('settings' => array()); + $settings = $display['settings'] + number_settings_defaults('number_integer'); switch ($display['type']) { case 'number_integer':