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'] .= '
' . t('If the Utility module was installed for this purpose, it can be safely disabled and uninstalled.') . ''; } + $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 permissions 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'); }