diff --git a/modules/field_ui/field_ui.module b/modules/field_ui/field_ui.module index b828fff..90f421d 100644 --- a/modules/field_ui/field_ui.module +++ b/modules/field_ui/field_ui.module @@ -48,6 +48,18 @@ function field_ui_help($path, $arg) { } /** + * Implements hook_field_attach_rename_bundle(). + */ +function field_ui_field_attach_rename_bundle($entity_type, $bundle_old, $bundle_new) { + // The Field UI relies on entity_get_info() to build menu items for entity + // field administration pages. Clear the entity info cache and ensure that + // the menu is rebuilt. + entity_info_cache_clear(); + menu_rebuild(); +} + + +/** * Implements hook_menu(). */ function field_ui_menu() { diff --git a/modules/node/node.module b/modules/node/node.module index 2dd1926..90a339b 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -514,6 +514,9 @@ function node_type_save($info) { ->condition('type', $existing_type) ->execute(); + // Clear the node type cache before hooks are invoked. + node_type_cache_reset(); + if (!empty($type->old_type) && $type->old_type != $type->type) { field_attach_rename_bundle('node', $type->old_type, $type->type); } @@ -526,15 +529,15 @@ function node_type_save($info) { ->fields($fields) ->execute(); + // Clear the node_type cache before hooks are invoked. + node_type_cache_reset(); + field_attach_create_bundle('node', $type->type); module_invoke_all('node_type_insert', $type); $status = SAVED_NEW; } - // Clear the node type cache. - node_type_cache_reset(); - return $status; }