Index: role_weights.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/role_weights/role_weights.module,v retrieving revision 1.20 diff -u -r1.20 role_weights.module --- role_weights.module 28 Jan 2009 17:03:23 -0000 1.20 +++ role_weights.module 31 Mar 2009 20:33:08 -0000 @@ -6,6 +6,14 @@ * Allows users to specify weights for user roles. */ +function role_weights_theme($existing, $type, $theme, $path) { + return array( + 'role_weights_admin_new_role' => array( + 'arguments' => array('form' => NULL), + ), + ); +} + /** * Implementation of hook_form_alter(). * @@ -17,10 +25,11 @@ * role forms, and also act on role deletion (deleting * role_weights). */ -function role_weights_form_alter($form_id, &$form) { +function role_weights_form_alter(&$form, &$form_state, $form_id) { + // Alter the 'user_admin_new_role' form to retheme. if ($form_id == 'user_admin_new_role') { - $form['#pre_render'][] = 'role_weights_admin_new_role_set_theme'; + $form['#theme'] = 'role_weights_admin_new_role'; } else if ($form_id == 'user_admin_role') { $rid = arg(4); @@ -67,7 +76,7 @@ // appear below the buttons. $form['submit']['#weight'] = 9; $form['delete']['#weight'] = 10; - $form['#submit']['role_weights_admin_role_submit'] = array(); + $form['#submit'][] = 'role_weights_admin_role_submit'; } else if ($form_id == 'user_admin_perm' && variable_get('role_weights_reorder_forms', FALSE)) { // For each role, fetch the weight, and add as a #weight on the row names and checkboxes @@ -79,22 +88,12 @@ } } // Resort according to the adjusted weights - uasort($form['checkboxes'], "_element_sort"); - uasort($form['role_names'], "_element_sort"); + uasort($form['checkboxes'], 'element_sort'); + uasort($form['role_names'], 'element_sort'); } } /** - * Set the theme function before rendering. Called by a #pre_render item. - * - * This needs to be done in pre_render because drupal_get_form uses a - * $form_id .'_theme' function if present for the #theme value. - */ -function role_weights_admin_new_role_set_theme($form_id, &$form) { - $form['#theme'] = 'role_weights_admin_new_role'; -} - -/** * Theme the 'user_admin_new_role' form. * * Based on theme_user_admin_new_role(), this version @@ -113,7 +112,7 @@ } foreach ($user_roles as $rid => $name) { - $edit_permissions = l(t('edit permissions'), 'admin/user/access/'. $rid); + $edit_permissions = l(t('edit permissions'), 'admin/user/permissions/'. $rid); // Drupal core redirects if the rid is DRUPAL_ANONYMOUS_RID or DRUPAL_AUTHENTICATED_RID. // We prevent this by shifting the rid. @@ -128,17 +127,17 @@ /** * Submission from role_weights_admin form. */ -function role_weights_admin_role_submit($form_id, $form_values) { +function role_weights_admin_role_submit($form_id, &$form_state) { $id = arg(4); _role_weights_shift_rid($id, FALSE); - - switch ($form_values['op']) { + + switch ($form_state['values']['op']) { case t('Save'): // Handle the role name update previously done in user_admin_role(). - db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_values['name'], $id); + db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $form_state['values']['name'], $id); // Now set weights. - _role_weights_set_weight($id, $form_values['weight']); + _role_weights_set_weight($id, $form_state['values']['weight']); drupal_set_message(t('The changes have been saved.')); break; case t('Delete'): @@ -164,7 +163,9 @@ drupal_set_message(t('The role has been deleted.')); break; } - return 'admin/user/roles'; + + $form_state['redirect'] = 'admin/user/roles'; + $form_state['rid'] = $id; } /** @@ -240,7 +241,7 @@ * Sets role weight for a role based on form input. */ function _role_weights_set_weight($rid, $weight) { - $exists = db_num_rows(db_query('SELECT * FROM {role_weights} WHERE rid = %d', $rid)); + $exists = db_result(db_query('SELECT COUNT(*) FROM {role_weights} WHERE rid = %d', $rid)); if ($exists) { db_query('UPDATE {role_weights} SET weight=%d WHERE rid=%d', $weight, $rid); } @@ -290,54 +291,6 @@ } /** - * Implementation of hook_views_tables() - */ -function role_weights_views_tables() { - $tables['users_roles_by_role'] = array( - 'name' => 'users_roles', - 'join' => array( - 'left' => array( - 'table' => 'node', - 'field' => 'uid', - ), - 'right' => array( - 'field' => 'uid', - ), - ), - ); - - $tables['role_weights'] = array( - 'name' => 'role_weights', - 'join' => array( - 'left' => array( - 'table' => 'users_roles_by_role', - 'field' => 'rid', - ), - 'right' => array( - 'field' => 'rid', - ), - ), - 'fields' => array( - 'weight' => array( - 'name' => 'Role Weights: role weight', - 'sortable' => TRUE, - 'weight' => 'weight', - 'addlfields' => array('weight'), - ), - ), - 'sorts' => array( - 'weight' => array( - 'name' => 'Role Weights: role weight', - 'field' => array('weight'), - 'help' => t("Order nodes by author's role weight"), - ), - ), - ); - - return $tables; -} - -/** * Token support */ function role_weights_token_values($type, $object = NULL, $options = array()) {