Index: modules/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user.module,v retrieving revision 1.578 diff -u -p -r1.578 user.module --- modules/user.module 2 Feb 2006 01:51:54 -0000 1.578 +++ modules/user.module 8 Feb 2006 19:12:06 -0000 @@ -1621,23 +1622,37 @@ function user_admin_perm($str_rids = NUL $options = array(); foreach (module_list() as $module) { if ($permissions = module_invoke($module, 'perm')) { - $form['permission'][] = array('#type' => 'markup', '#value' => t('%module module', array('%module' => $module))); asort($permissions); + $module_visible = FALSE; + $module_index = isset($form['permission']) ? count($form['permission']) - 1 : 0; foreach ($permissions as $perm) { + $row_visible = FALSE; $options[$perm] = ''; - $form['permission'][$perm] = array('#type' => 'markup', '#value' => t($perm)); foreach ($role_names as $rid => $name) { // Builds arrays for checked boxes for each role - if (strstr($role_permissions[$rid], $perm)) { - $status[$rid][] = $perm; + if (user_access($perm)) { + $type = 'checkbox'; + $value_key = '#default_value'; + $row_visible = TRUE; + $module_visible = TRUE; } + else { + $type = 'value'; + $value_key = '#value'; + } + $form['checkboxes'][$rid][$perm] = array('#type' => $type, $value_key => (bool)strstr($role_permissions[$rid], $perm), '#parents' => array($rid, $perm)); + } + if ($row_visible) { + $form['permission'][$perm] = array('#type' => 'markup', '#value' => t($perm)); } } + if ($module_visible) { + array_splice($form['permission'], $module_index, 0, array(array('#type' => 'markup', '#value' => t('%module module', array('%module' => $module))))); + } } } - // Have to build checkboxes here after checkbox arrays are built + foreach ($role_names as $rid => $name) { - $form['checkboxes'][$rid] = array('#type' => 'checkboxes', '#options' => $options, '#default_value' => $status[$rid]); $form['role_names'][$rid] = array('#type' => 'markup', '#value' => l($name, 'admin/access/'. $rid), '#tree' => TRUE); } $form['submit'] = array('#type' => 'submit', '#value' => t('Save permissions'));