### Eclipse Workspace Patch 1.0 #P drupal_test_7 Index: modules/field/field.info.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/field/field.info.inc,v retrieving revision 1.6 diff -u -r1.6 field.info.inc --- modules/field/field.info.inc 5 Jun 2009 18:25:41 -0000 1.6 +++ modules/field/field.info.inc 26 Jun 2009 17:51:40 -0000 @@ -98,6 +98,7 @@ $info['field types'][$name]['module'] = $module; } } + drupal_alter('field_info', $info['field types']); // Populate widget types. foreach (module_implements('field_widget_info') as $module) { @@ -107,6 +108,7 @@ $info['widget types'][$name]['module'] = $module; } } + drupal_alter('field_widget_info', $info['widget types']); // Populate formatters. foreach (module_implements('field_formatter_info') as $module) { @@ -116,6 +118,7 @@ $info['formatter types'][$name]['module'] = $module; } } + drupal_alter('field_formatter_info', $info['formatter types']); // Populate information about 'fieldable' entities. foreach (module_implements('fieldable_info') as $module) { @@ -138,6 +141,7 @@ $info['fieldable types'][$name]['module'] = $module; } } + drupal_alter('fieldable_info', $info['fieldable types']); cache_set('field_info_types', $info, 'cache_field'); } Index: modules/field/field.api.php =================================================================== RCS file: /cvs/drupal/drupal/modules/field/field.api.php,v retrieving revision 1.15 diff -u -r1.15 field.api.php --- modules/field/field.api.php 22 Jun 2009 09:10:04 -0000 1.15 +++ modules/field/field.api.php 26 Jun 2009 17:51:40 -0000 @@ -54,6 +54,19 @@ } /** + * Perform alterations on fieldable types. + * + * @param $info + * Array of informations on fieldable types exposed by hook_fieldable_info() + * implementations. + */ +function hook_fieldable_info_alter(&$info) { + // Example: a contributed module handles node-level caching, and thus wants + // to disable field cache for nodes. + $info['node']['cacheable'] = FALSE; +} + +/** * @} End of "ingroup field_fieldable_type" */ @@ -115,6 +128,25 @@ } /** + * Perform alterations on Field API field types. + * + * @param $info + * Array of informations on widget types exposed by hook_field_info() + * implementations. + */ +function hook_field_info_alter(&$info) { + // Example: add a setting to all field types. + foreach ($info as $field_type => $field_type_info) { + $info[$field_type]['settings'][] = array('mymodule_additional_setting' => 'default value'); + } + + // Example: change the default widget for fields of type 'foo'. + if (isset($info['foo'])) { + $info['foo']['default widget'] = 'mymodule_widget'; + } +} + +/** * Define the Field API schema for a field structure. * * @param $field @@ -186,6 +218,21 @@ function hook_field_widget_info() { } +/** + * Perform alterations on Field API widget types. + * + * @param $info + * Array of informations on widget types exposed by hook_field_widget_info() + * implementations. + */ +function hook_field_widget_info_alter(&$info) { + // Example: add a setting to a widget type. + $info['text_textfield']['settings'][] = array('mymodule_additional_setting' => 'default value'); + + // Example: let a new field type re-use an existing widget. + $info['options_select']['field types'][] = 'my_field_type'; +} + /* * Define Field API formatter types. * @@ -201,6 +248,21 @@ } /** + * Perform alterations on Field API formatter types. + * + * @param $info + * Array of informations on widget types exposed by + * hook_field_field_formatter_info() implementations. + */ +function hook_field_formatter_info_alter(&$info) { + // Example: add a setting to a formatter type. + $info['text_default']['settings'][] = array('mymodule_additional_setting' => 'default value'); + + // Example: let a new field type re-use an existing formatter. + $info['text_default']['field types'][] = 'my_field_type'; +} + +/** * Define custom load behavior for this module's field types. * * Unlike other field hooks, this hook operates on multiple objects. The