diff --git modules/user/user.admin.inc modules/user/user.admin.inc index 35a5717..1b10b0e 100644 --- modules/user/user.admin.inc +++ modules/user/user.admin.inc @@ -867,10 +867,17 @@ function user_admin_roles($form, $form_state) { * Form submit function. Update the role weights. */ function user_admin_roles_order_submit($form, &$form_state) { + $status = array(); foreach ($form_state['values']['roles'] as $rid => $role_values) { $role = $form['roles'][$rid]['#role']; $role->weight = $role_values['weight']; - user_role_save($role); + $status[] = user_role_save($role); + } + if (in_array(FALSE, $status)) { + drupal_set_message(t('Unable to save role settings.'), 'error'); + } + else { + drupal_set_message(t('The role settings have been updated.')); } } diff --git modules/user/user.test modules/user/user.test index c673b31..0040acf 100644 --- modules/user/user.test +++ modules/user/user.test @@ -1346,7 +1346,7 @@ class UserCreateTestCase extends DrupalWebTestCase { public static function getInfo() { return array( 'name' => 'User create', - 'description' => 'Test the creat user administration page.', + 'description' => 'Test the create user administration page.', 'group' => 'User', ); } @@ -1588,7 +1588,7 @@ class UserRoleAdminTestCase extends DrupalWebTestCase { public static function getInfo() { return array( 'name' => 'User role administration', - 'description' => 'Test adding, editing and deleting user roles.', + 'description' => 'Test adding, editing and deleting user roles and changing role weights.', 'group' => 'User', ); } @@ -1641,6 +1641,28 @@ class UserRoleAdminTestCase extends DrupalWebTestCase { $this->drupalGet('admin/people/permissions/roles/edit/' . DRUPAL_AUTHENTICATED_RID); $this->assertResponse(403, t('Access denied when trying to edit the built-in authenticated role.')); } + + /** + * Test user role weight change operation. + */ + function testRoleWeightChange() { + $this->drupalLogin($this->admin_user); + + // Pick up a rand role and get its weight. + $rid = array_rand(user_roles()); + $role = user_role_load($rid); + $old_weight = $role->weight; + + // Change the role weight and submit the form. + $edit = array('roles['. $rid .'][weight]' => $old_weight + 1); + $this->drupalPost('admin/people/permissions/roles', $edit, t('Save order')); + $this->assertText(t('The role settings have been updated.'), t('The role settings form submitted successfully.')); + + // Retrieve the saved role and compare its weight. + $role = user_role_load($rid); + $new_weight = $role->weight; + $this->assertTrue(($old_weight + 1) == $new_weight, t('Role weight updated successfully.')); + } } /**