Index: admin_menu.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.css,v
retrieving revision 1.36
diff -u -p -r1.36 admin_menu.css
--- admin_menu.css	19 Feb 2010 23:19:00 -0000	1.36
+++ admin_menu.css	20 Feb 2010 00:53:06 -0000
@@ -197,3 +197,14 @@ html.js fieldset.collapsible div.fieldse
     margin-top: 0 !important;
   }
 }
+
+/**
+ * Tweaks permissions, if enabled.
+ */
+tr.admin-menu-tweak-permissions-processed {
+  cursor: pointer;
+  cursor: hand;
+}
+tr.admin-menu-tweak-permissions-processed td.module {
+  border-top: 0;
+}
Index: admin_menu.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.inc,v
retrieving revision 1.73
diff -u -p -r1.73 admin_menu.inc
--- admin_menu.inc	19 Feb 2010 20:42:10 -0000	1.73
+++ admin_menu.inc	20 Feb 2010 00:53:13 -0000
@@ -247,6 +247,12 @@ function admin_menu_theme_settings() {
   if (module_exists('util')) {
     $form['tweaks']['admin_menu_tweak_modules']['#description'] .= '<br /><strong>' . t('If the Utility module was installed for this purpose, it can be safely disabled and uninstalled.') . '</strong>';
   }
+  $form['tweaks']['admin_menu_tweak_permissions'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Collapse modules on permissions page'),
+    '#default_value' => 0,
+    '#description' => t('Collapses permissions by module on the <a href="@permissions-url">permissions</a> page.', array('@permissions-url' => url('admin/people/permissions'))),
+  );
   $form['tweaks']['admin_menu_tweak_tabs'] = array(
     '#type' => 'checkbox',
     '#title' => t('Move local tasks into menu'),
Index: admin_menu.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.js,v
retrieving revision 1.29
diff -u -p -r1.29 admin_menu.js
--- admin_menu.js	20 Feb 2010 00:52:15 -0000	1.29
+++ admin_menu.js	20 Feb 2010 00:57:47 -0000
@@ -19,6 +19,7 @@ Drupal.behaviors.adminMenu = {
       margin_top: false,
       position_fixed: false,
       tweak_modules: false,
+      tweak_permissions: false,
       tweak_tabs: false,
       destination: '',
       basePath: settings.basePath,
@@ -62,6 +63,32 @@ Drupal.behaviors.adminMenuCollapseModule
 };
 
 /**
+ * Collapse modules on Permissions page.
+ */
+Drupal.behaviors.adminMenuCollapsePermissions = {
+  attach: function (context, settings) {
+    if (settings.admin_menu.tweak_permissions) {
+      // Freeze width of first column to prevent jumping.
+      $('#permissions th:first', context).css({ width: $('#permissions th:first', context).width() });
+      // Attach click handler.
+      $('#permissions tr:has(td.module)', context).once('admin-menu-tweak-permissions', function () {
+        var $module = $(this);
+        $module.bind('click.admin-menu', function () {
+          // @todo Replace with .nextUntil() in jQuery 1.4.
+          $module.nextAll().each(function () {
+            var $row = $(this);
+            if ($row.is(':has(td.module)')) {
+              return false;
+            }
+            $row.toggleClass('element-hidden');
+          });
+        });
+      }).trigger('click.admin-menu');
+    }
+  }
+};
+
+/**
  * Apply margin to page.
  *
  * Note that directly applying marginTop does not work in IE. To prevent
Index: admin_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.module,v
retrieving revision 1.110
diff -u -p -r1.110 admin_menu.module
--- admin_menu.module	19 Feb 2010 23:19:00 -0000	1.110
+++ admin_menu.module	20 Feb 2010 00:52:45 -0000
@@ -170,6 +170,9 @@ function admin_menu_init() {
   if ($_GET['q'] == 'admin/modules' || strpos($_GET['q'], 'admin/modules/list') === 0) {
     $settings['tweak_modules'] = variable_get('admin_menu_tweak_modules', 0);
   }
+  if ($_GET['q'] == 'admin/people/permissions' || $_GET['q'] == 'admin/people/permissions/list') {
+    $settings['tweak_permissions'] = variable_get('admin_menu_tweak_permissions', 0);
+  }
 
   drupal_add_js(array('admin_menu' => $settings), 'setting');
 }
