diff --git modules/field/field.info.inc modules/field/field.info.inc index b7d85f3..698eace 100644 --- modules/field/field.info.inc +++ modules/field/field.info.inc @@ -95,6 +95,8 @@ function _field_info_collate_types($reset = FALSE) { $field_info += array( 'settings' => array(), 'instance_settings' => array(), + // Allow adding fields via UI. + 'add via ui' => TRUE, ); $info['field types'][$name] = $field_info; $info['field types'][$name]['module'] = $module; diff --git modules/field_ui/field_ui.admin.inc modules/field_ui/field_ui.admin.inc index 2e74cb6..e24d95e 100644 --- modules/field_ui/field_ui.admin.inc +++ modules/field_ui/field_ui.admin.inc @@ -700,8 +700,9 @@ function field_ui_field_type_options() { $field_types = field_info_field_types(); $field_type_options = array(); foreach ($field_types as $name => $field_type) { - // Skip field types which have no widget types. - if (field_ui_widget_type_options($name)) { + // Skip field types which have no widget types, or should not be add via + // uesr interface. + if (field_ui_widget_type_options($name) && !empty($field_type['add via ui'])) { $options[$name] = $field_type['label']; } } @@ -787,8 +788,9 @@ function field_ui_existing_field_options($obj_type, $bundle) { if (!($existing_bundle == $bundle && $existing_obj_type == $obj_type)) { foreach ($instances as $instance) { $field = field_info_field($instance['field_name']); - // Don't show locked fields or fields already in the current bundle. - if (empty($field['locked']) && !field_info_instance($obj_type, $field['field_name'], $bundle)) { + // Don't show locked fields or fields already in the current bundle, + // or files that shoud not be added via user interface. + if (empty($field['locked']) && !field_info_instance($obj_type, $field['field_name'], $bundle) && !empty($field_types[$field['type']]['add via ui'])) { $text = t('@type: @field (@label)', array( '@type' => $field_types[$field['type']]['label'], '@label' => t($instance['label']), '@field' => $instance['field_name'],