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 8 Mar 2009 19:08:20 -0000 @@ -664,62 +664,93 @@ function theme_user_admin_perm($form) { * @see theme_user_admin_new_role() */ function user_admin_role() { - $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'), - ); - } - 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'; - } + $form = array(); + $form['name'] = array( + '#type' => 'textfield', + '#size' => 32, + '#maxlength' => 64, + ); + $form['submit'] = array( + '#type' => 'submit', + '#value' => t('Add role'), + ); + $form['#submit'][] = 'user_admin_role_add_submit'; + $form['#validate'][] = 'user_admin_role_add_validate'; + return $form; +} + +function user_admin_role_delete($form_id, $rid) { + if ($rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID) { + drupal_goto('admin/user/roles'); + } + $form = array(); + $role = db_fetch_object(db_query('SELECT * FROM {role} WHERE rid = %d', $rid)); + $form['rid'] = array( + '#type' => 'value', + '#value' => $rid, + ); + $form = confirm_form($form, + t('Are you sure you want to delete the %title role?', array('%title' => $role->name)), + isset($_GET['destination']) ? $_GET['destination'] : 'admin/user/roles', + t('This action cannot be undone.'), + t('Delete role'), + t('Cancel') + ); + return $form; +} + +function user_admin_role_delete_submit($form, &$form_state) { + 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.')); + $form_state['redirect'] = 'admin/user/roles'; +} + +function user_admin_role_rename($form_id, $rid) { + if ($rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID) { + drupal_goto('admin/user/roles'); + } + $form = array(); + $role = db_fetch_object(db_query('SELECT * FROM {role} WHERE rid = %d', $rid)); + // 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'), + ); return $form; } -function user_admin_role_validate($form, &$form_state) { +function user_admin_role_rename_submit($form, &$form_state) { + 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.')); + $form_state['redirect'] = 'admin/user/roles'; +} + +function user_admin_role_rename_validate($form, &$form_state) { + 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']))); + } +} + +function user_admin_role_add_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']))); - } + 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']))); } } else { @@ -727,25 +758,10 @@ 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.')); - } +function user_admin_role_add_submit($form, &$form_state) { + db_query("INSERT INTO {role} (name) VALUES ('%s')", $form_state['values']['name']); + drupal_set_message(t('The role has been added.')); $form_state['redirect'] = 'admin/user/roles'; - return; } /** @@ -799,17 +815,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 8 Mar 2009 19:08:20 -0000 @@ -1235,6 +1235,7 @@ function user_menu() { 'page arguments' => array('user_admin_perm'), 'access arguments' => array('administer permissions'), ); + $items['admin/user/roles'] = array( 'title' => 'Roles', 'description' => 'List, edit, or add user roles.', @@ -1242,11 +1243,25 @@ function user_menu() { 'page arguments' => array('user_admin_new_role'), 'access arguments' => array('administer permissions'), ); - $items['admin/user/roles/edit'] = array( - 'title' => 'Edit role', - 'page arguments' => array('user_admin_role'), + + $items['admin/user/user/list'] = array( + 'title' => 'List roles', + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ); + + $items['admin/user/roles/rename/%'] = array( + 'title' => 'Rename role', + 'page arguments' => array('user_admin_role_rename', 4), + 'access arguments' => array('administer permissions'), + 'type' => MENU_LOCAL_TASK, + ); + + $items['admin/user/roles/delete/%'] = array( + 'title' => 'Delete role', + 'page arguments' => array('user_admin_role_delete', 4), 'access arguments' => array('administer permissions'), - 'type' => MENU_CALLBACK, + 'type' => MENU_LOCAL_TASK, ); $items['user/%user_uid_optional'] = array( @@ -2256,7 +2271,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: