? 431300-nodejs-authoredby-D7.patch
? 431300-nodejs-authoredby-D7_0.patch
? 784856.patch
? 787152-admin-node-permissions.patch
? sites/all
? sites/default
? sites/example.sites.php
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1264
diff -u -p -r1.1264 node.module
--- modules/node/node.module	22 Apr 2010 09:12:35 -0000	1.1264
+++ modules/node/node.module	2 May 2010 05:55:07 -0000
@@ -510,11 +510,14 @@ function node_type_save($info) {
       ->fields($fields)
       ->condition('type', $existing_type)
       ->execute();
+    // Clear the node type cache.
+    drupal_static_reset('_node_types_build');
 
     if (!empty($type->old_type) && $type->old_type != $type->type) {
       field_attach_rename_bundle('node', $type->old_type, $type->type);
     }
     node_configure_fields($type);
+
     module_invoke_all('node_type_update', $type);
     $status = SAVED_UPDATED;
   }
@@ -523,16 +526,16 @@ function node_type_save($info) {
     db_insert('node_type')
       ->fields($fields)
       ->execute();
+    // Clear the node type cache.
+    drupal_static_reset('_node_types_build');
 
     field_attach_create_bundle('node', $type->type);
     node_configure_fields($type);
+
     module_invoke_all('node_type_insert', $type);
     $status = SAVED_NEW;
   }
 
-  // Clear the node type cache.
-  drupal_static_reset('_node_types_build');
-
   return $status;
 }
 
@@ -626,10 +629,11 @@ function node_type_delete($type) {
   db_delete('node_type')
     ->condition('type', $type)
     ->execute();
-  module_invoke_all('node_type_delete', $info);
 
   // Clear the node type cache.
   drupal_static_reset('_node_types_build');
+
+  module_invoke_all('node_type_delete', $info);
 }
 
 /**
@@ -2910,7 +2914,6 @@ function node_list_permissions($type) {
  *   An array of node types managed by this module.
  */
 function node_permissions_get_configured_types() {
-
   $configured_types = array();
 
   foreach (node_type_get_types() as $type => $info) {
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1165
diff -u -p -r1.1165 user.module
--- modules/user/user.module	1 May 2010 08:12:23 -0000	1.1165
+++ modules/user/user.module	2 May 2010 05:55:08 -0000
@@ -3472,18 +3472,7 @@ function user_register_submit($form, &$f
  */
 function user_modules_installed($modules) {
   // Assign all available permissions to the administrator role.
-  $rid = variable_get('user_admin_role', 0);
-  if ($rid) {
-    $permissions = array();
-    foreach ($modules as $module) {
-      if ($module_permissions = module_invoke($module, 'permission')) {
-        $permissions = array_merge($permissions, array_keys($module_permissions));
-      }
-    }
-    if (!empty($permissions)) {
-      user_role_grant_permissions($rid, $permissions);
-    }
-  }
+  user_administrator_reset($modules);
 }
 
 /**
@@ -3553,3 +3542,45 @@ function user_rdf_mapping() {
     ),
   );
 }
+
+/**
+ * Reset the permissions for the administrator role.
+ *
+ * This function needs to be called any time the list of permissions is
+ * updated, such as when a module is enabled or when a node type is created.
+ *
+ * @param $modules
+ *   Optionally, a list of modules for which to grant permission for the
+ *   administrator role.
+ */
+function user_administrator_reset($modules = NULL) {
+  $rid = variable_get('user_admin_role', 0);
+  if ($rid) {
+    if (!$modules) {
+      $modules = module_list();
+    }
+    $permissions = array();
+    foreach ($modules as $module) {
+      if ($module_permissions = module_invoke($module, 'permission')) {
+        $permissions = array_merge($permissions, array_keys($module_permissions));
+      }
+    }
+    if (!empty($permissions)) {
+      user_role_grant_permissions($rid, $permissions);
+    }
+  }
+}
+
+/**
+ * Implements hook_node_type_insert().
+ */
+function user_node_type_insert($type) {
+  user_administrator_reset();
+}
+
+/**
+ * Implements hook_node_type_update().
+ */
+function user_node_type_update() {
+  user_administrator_reset();
+}
Index: modules/user/user.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.test,v
retrieving revision 1.90
diff -u -p -r1.90 user.test
--- modules/user/user.test	1 May 2010 08:12:23 -0000	1.90
+++ modules/user/user.test	2 May 2010 05:55:08 -0000
@@ -1000,6 +1000,9 @@ class UserPermissionsTestCase extends Dr
     $edit['modules[Core][aggregator][enable]'] = TRUE;
     $this->drupalPost('admin/modules', $edit, t('Save configuration'));
     $this->assertTrue(user_access('administer news feeds', $this->admin_user), t('The permission was automatically assigned to the administrator role'));
+
+    $type = $this->drupalCreateContentType();
+    $this->assertTrue(user_access('delete any ' . $type->type . ' content', $this->admin_user), t('The permission was automatically assigned to the administrator role'));
   }
 
   /**
