Index: modules/user/user.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v retrieving revision 1.40 diff -u -p -r1.40 user.admin.inc --- modules/user/user.admin.inc 26 Feb 2009 07:30:28 -0000 1.40 +++ modules/user/user.admin.inc 7 Mar 2009 13:41:14 -0000 @@ -664,62 +664,83 @@ function theme_user_admin_perm($form) { * @see theme_user_admin_new_role() */ function user_admin_role() { + $op = arg(3); $rid = arg(4); - if ($rid) { - if ($rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID) { - drupal_goto('admin/user/roles'); - } - // Display the edit role form. - $role = db_fetch_object(db_query('SELECT * FROM {role} WHERE rid = %d', $rid)); - $form['name'] = array( - '#type' => 'textfield', - '#title' => t('Role name'), - '#default_value' => $role->name, - '#size' => 30, - '#required' => TRUE, - '#maxlength' => 64, - '#description' => t('The name for this role. Example: "moderator", "editorial board", "site architect".'), - ); - $form['rid'] = array( - '#type' => 'value', - '#value' => $rid, - ); - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Save role'), - ); - $form['delete'] = array( - '#type' => 'submit', - '#value' => t('Delete role'), - ); + if ($rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID) { + drupal_goto('admin/user/roles'); } - else { - $form['name'] = array( - '#type' => 'textfield', - '#size' => 32, - '#maxlength' => 64, - ); - $form['submit'] = array( - '#type' => 'submit', - '#value' => t('Add role'), - ); - $form['#submit'][] = 'user_admin_role_submit'; - $form['#validate'][] = 'user_admin_role_validate'; + if (empty($rid)) { + $op = 'add'; + } + $form = array(); + $role = db_fetch_object(db_query('SELECT * FROM {role} WHERE rid = %d', $rid)); + switch ($op) { + case 'delete': + $form['rid'] = array( + '#type' => 'value', + '#value' => $rid, + ); + $form = confirm_form($form, + t('Are you sure you want to delete the role: %title?', array('%title' => $role->name)), + isset($_GET['destination']) ? $_GET['destination'] : 'admin/user/roles', + t('This action cannot be undone.'), + t('Delete role'), + t('Cancel') + ); + break; + + case 'rename': + // Display the rename role form. + $form['name'] = array( + '#type' => 'textfield', + '#title' => t('Role name'), + '#default_value' => $role->name, + '#size' => 30, + '#required' => TRUE, + '#maxlength' => 64, + '#description' => t('The name for this role. Example: "moderator", "editorial board", "site architect".'), + ); + $form['rid'] = array( + '#type' => 'value', + '#value' => $rid, + ); + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Save role'), + ); + break; + + default: + $form['name'] = array( + '#type' => 'textfield', + '#size' => 32, + '#maxlength' => 64, + ); + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Add role'), + ); + $form['#submit'][] = 'user_admin_role_submit'; + $form['#validate'][] = 'user_admin_role_validate'; + break; } return $form; } function user_admin_role_validate($form, &$form_state) { if ($form_state['values']['name']) { - if ($form_state['values']['op'] == t('Save role')) { - if (db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s' AND rid != %d", $form_state['values']['name'], $form_state['values']['rid']))) { - form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $form_state['values']['name']))); - } - } - elseif ($form_state['values']['op'] == t('Add role')) { - if (db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s'", $form_state['values']['name']))) { - form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $form_state['values']['name']))); - } + switch ($form_state['values']['op']) { + case 'Save role': + if (db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s' AND rid != %d", $form_state['values']['name'], $form_state['values']['rid']))) { + form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $form_state['values']['name']))); + } + break; + + case 'Add role': + if (db_result(db_query("SELECT COUNT(*) FROM {role} WHERE name = '%s'", $form_state['values']['name']))) { + form_set_error('name', t('The role name %name already exists. Please choose another role name.', array('%name' => $form_state['values']['name']))); + } + break; } } else { @@ -728,21 +749,24 @@ function user_admin_role_validate($form, } function user_admin_role_submit($form, &$form_state) { - if ($form_state['values']['op'] == t('Save role')) { - db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_state['values']['name'], $form_state['values']['rid']); - drupal_set_message(t('The role has been renamed.')); - } - elseif ($form_state['values']['op'] == t('Delete role')) { - db_query('DELETE FROM {role} WHERE rid = %d', $form_state['values']['rid']); - db_query('DELETE FROM {role_permission} WHERE rid = %d', $form_state['values']['rid']); - // Update the users who have this role set: - db_query('DELETE FROM {users_roles} WHERE rid = %d', $form_state['values']['rid']); - - drupal_set_message(t('The role has been deleted.')); - } - elseif ($form_state['values']['op'] == t('Add role')) { - db_query("INSERT INTO {role} (name) VALUES ('%s')", $form_state['values']['name']); - drupal_set_message(t('The role has been added.')); + switch($form_state['values']['op']) { + case t('Save role'): + db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_state['values']['name'], $form_state['values']['rid']); + drupal_set_message(t('The role has been renamed.')); + break; + + case t('Add role'): + db_query("INSERT INTO {role} (name) VALUES ('%s')", $form_state['values']['name']); + drupal_set_message(t('The role has been added.')); + break; + + case t('Delete role'): + db_query('DELETE FROM {role} WHERE rid = %d', $form_state['values']['rid']); + db_query('DELETE FROM {role_permission} WHERE rid = %d', $form_state['values']['rid']); + // Update the users who have this role set: + db_query('DELETE FROM {users_roles} WHERE rid = %d', $form_state['values']['rid']); + drupal_set_message(t('The role has been deleted.')); + break; } $form_state['redirect'] = 'admin/user/roles'; return; @@ -799,17 +823,17 @@ function theme_user_admin_account($form) * @ingroup themeable */ function theme_user_admin_new_role($form) { - $header = array(t('Name'), array('data' => t('Operations'), 'colspan' => 2)); + $header = array(t('Name'), array('data' => t('Operations'), 'colspan' => 3)); foreach (user_roles() as $rid => $name) { $edit_permissions = l(t('edit permissions'), 'admin/user/permissions/' . $rid); if (!in_array($rid, array(DRUPAL_ANONYMOUS_RID, DRUPAL_AUTHENTICATED_RID))) { - $rows[] = array($name, l(t('edit role'), 'admin/user/roles/edit/' . $rid), $edit_permissions); + $rows[] = array($name, $edit_permissions, l(t('rename role'), 'admin/user/roles/rename/' . $rid), l(t('delete role'), 'admin/user/roles/delete/'.$rid)); } else { - $rows[] = array($name, t('locked'), $edit_permissions); + $rows[] = array($name, $edit_permissions, t('locked'), t('locked'),); } } - $rows[] = array(drupal_render($form['name']), array('data' => drupal_render($form['submit']), 'colspan' => 2)); + $rows[] = array(drupal_render($form['name']), array('data' => drupal_render($form['submit']), 'colspan' => 3)); $output = drupal_render_children($form); $output .= theme('table', $header, $rows); Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.966 diff -u -p -r1.966 user.module --- modules/user/user.module 26 Feb 2009 07:30:29 -0000 1.966 +++ modules/user/user.module 7 Mar 2009 13:41:15 -0000 @@ -1242,8 +1242,16 @@ function user_menu() { 'page arguments' => array('user_admin_new_role'), 'access arguments' => array('administer permissions'), ); - $items['admin/user/roles/edit'] = array( - 'title' => 'Edit role', + $items['admin/user/roles/rename'] = array( + 'title' => 'Rename role', + 'page arguments' => array('user_admin_role'), + 'access arguments' => array('administer permissions'), + 'type' => MENU_CALLBACK, + ); + + $items['admin/user/roles/delete'] = array( + 'title' => 'Delete role', + 'page callback' => 'drupal_get_form', 'page arguments' => array('user_admin_role'), 'access arguments' => array('administer permissions'), 'type' => MENU_CALLBACK, @@ -2256,7 +2264,7 @@ function user_help($path, $arg) { case 'admin/user/permissions': return '

' . t('Permissions let you control what users can do on your site. Each user role (defined on the user roles page) has its own set of permissions. For example, you could give users classified as "Administrators" permission to "administer nodes" but deny this power to ordinary, "authenticated" users. You can use permissions to reveal new features to privileged users (those with subscriptions, for example). Permissions also allow trusted users to share the administrative burden of running a busy site.', array('@role' => url('admin/user/roles'))) . '

'; case 'admin/user/roles': - return t('

Roles allow you to fine tune the security and administration of Drupal. A role defines a group of users that have certain privileges as defined in user permissions. Examples of roles include: anonymous user, authenticated user, moderator, administrator and so on. In this area you will define the role names of the various roles. To delete a role choose "edit".

By default, Drupal comes with two user roles:

+ return t('

Roles allow you to fine tune the security and administration of Drupal. A role defines a group of users that have certain privileges as defined in user permissions. Examples of roles include: anonymous user, authenticated user, moderator, administrator and so on. In this area you will define the role names of the various roles.

By default, Drupal comes with two user roles: