Index: modules/user/user.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v retrieving revision 1.104 diff -u -p -r1.104 user.admin.inc --- modules/user/user.admin.inc 24 Mar 2010 07:34:10 -0000 1.104 +++ modules/user/user.admin.inc 26 Mar 2010 17:35:17 -0000 @@ -961,6 +961,9 @@ function user_admin_role_validate($form, } } +/** + * Form submit handler for the user_admin_role() form. + */ function user_admin_role_submit($form, &$form_state) { $role = (object)$form_state['values']; if ($form_state['values']['op'] == t('Save role')) { @@ -968,8 +971,8 @@ function user_admin_role_submit($form, & drupal_set_message(t('The role has been renamed.')); } elseif ($form_state['values']['op'] == t('Delete role')) { - user_role_delete((int) $form_state['values']['rid']); - drupal_set_message(t('The role has been deleted.')); + $form_state['redirect'] = 'admin/people/permissions/roles/delete/' . $form_state['values']['rid']; + return; } elseif ($form_state['values']['op'] == t('Add role')) { user_role_save($role); @@ -980,6 +983,26 @@ function user_admin_role_submit($form, & } /** + * Form to confirm role delete operation. + */ +function user_admin_role_delete_confirm($form, &$form_state, $role) { + $form['rid'] = array( + '#type' => 'value', + '#value' => $role->rid, + ); + return confirm_form($form, t('Are you sure you want to delete the role %name ?', array('%name' => $role->name)), 'admin/people/permissions/roles', t('This action cannot be undone.'), t('Delete')); +} + +/** + * Form submit handler for user_admin_role_delete_confirm(). + */ +function user_admin_role_delete_confirm_submit($form, &$form_state) { + user_role_delete((int) $form_state['values']['rid']); + drupal_set_message(t('The role has been deleted.')); + $form_state['redirect'] = 'admin/people/permissions/roles'; +} + +/** * Theme user administration filter selector. * * @ingroup themeable Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.1147 diff -u -p -r1.1147 user.module --- modules/user/user.module 25 Mar 2010 12:19:34 -0000 1.1147 +++ modules/user/user.module 26 Mar 2010 17:35:21 -0000 @@ -1533,7 +1533,15 @@ function user_menu() { 'access arguments' => array(5), 'type' => MENU_CALLBACK, ); - + $items['admin/people/permissions/roles/delete/%user_role'] = array( + 'title' => 'Delete role', + 'page callback' => 'drupal_get_form', + 'page arguments' => array('user_admin_role_delete_confirm', 5), + 'access callback' => 'user_role_edit_access', + 'access arguments' => array(5), + 'type' => MENU_CALLBACK, + 'file' => 'user.admin.inc', + ); $items['admin/people/create'] = array( 'title' => 'Add user', Index: modules/user/user.test =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.test,v retrieving revision 1.87 diff -u -p -r1.87 user.test --- modules/user/user.test 23 Mar 2010 19:22:58 -0000 1.87 +++ modules/user/user.test 26 Mar 2010 17:35:23 -0000 @@ -1507,6 +1507,7 @@ class UserRoleAdminTestCase extends Drup // Test deleting a role. $this->drupalPost("admin/people/permissions/roles/edit/{$role->rid}", NULL, t('Delete role')); + $this->drupalPost(NULL, NULL, t('Delete')); $this->assertText(t('The role has been deleted.'), t('The role has been deleted')); $this->assertNoLinkByHref("admin/people/permissions/roles/edit/{$role->rid}", t('Role edit link removed.')); $this->assertFalse(user_role_load_by_name($role_name), t('A deleted role can no longer be loaded.'));