Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.963
diff -u -r1.963 user.module
--- modules/user/user.module 9 Feb 2009 07:36:15 -0000 1.963
+++ modules/user/user.module 7 Mar 2009 05:31:05 -0000
@@ -1242,13 +1242,21 @@
'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,
+ );
+
$items['user/%user_uid_optional'] = array(
'title' => 'My account',
'title callback' => 'user_page_title',
@@ -2256,7 +2264,7 @@
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:
- Anonymous user: this role is used for users that don\'t have a user account or that are not authenticated.
- Authenticated user: this role is automatically granted to all logged in users.
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.37
diff -u -r1.37 user.admin.inc
--- modules/user/user.admin.inc 3 Feb 2009 18:55:32 -0000 1.37
+++ modules/user/user.admin.inc 7 Mar 2009 05:31:04 -0000
@@ -664,86 +664,100 @@
* @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';
- }
- return $form;
+ $op = arg(3);
+ $rid = arg(4);
+ 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));
+ 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 edit 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')) {
+ 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'])));
}
- }
- elseif ($form_state['values']['op'] == t('Add role')) {
+ 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'])));
+ }
+ elseif (empty($form_state['values']['name'])) {
+ form_set_error('name', t('You must specify a valid role name.'));
}
- }
- }
- else {
- form_set_error('name', t('You must specify a valid role name.'));
+ break;
}
}
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 +813,17 @@
* @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);