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 8 Mar 2009 01:09:17 -0000
@@ -1235,6 +1235,7 @@
'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,9 +1243,17 @@
'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/roles/rename/%'] = array(
+ 'title' => 'Rename role',
+ 'page arguments' => array('user_admin_role_rename', 4),
+ 'access arguments' => array('administer permissions'),
+ 'type' => MENU_CALLBACK,
+ );
+
+ $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,
);
@@ -2256,7 +2265,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 8 Mar 2009 01:09:17 -0000
@@ -664,62 +664,93 @@
* @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 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')
+ );
+ 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_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 @@
* @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);