Index: modules/aggregator/aggregator.module =================================================================== RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v retrieving revision 1.374 diff -u -p -r1.374 aggregator.module --- modules/aggregator/aggregator.module 15 Jan 2008 08:06:32 -0000 1.374 +++ modules/aggregator/aggregator.module 15 Feb 2008 05:38:23 -0000 @@ -277,7 +277,10 @@ function _aggregator_has_categories() { * Implementation of hook_perm(). */ function aggregator_perm() { - return array('administer news feeds', 'access news feeds'); + return array( + 'administer news feeds' => t('Add, edit or delete news feeds that are aggregated to your site.'), + 'access news feeds' => t('View aggregated news feed items.'), + ); } /** Index: modules/block/block.module =================================================================== RCS file: /cvs/drupal/drupal/modules/block/block.module,v retrieving revision 1.299 diff -u -p -r1.299 block.module --- modules/block/block.module 3 Feb 2008 19:12:57 -0000 1.299 +++ modules/block/block.module 15 Feb 2008 05:38:23 -0000 @@ -110,7 +110,10 @@ function block_theme() { * Implementation of hook_perm(). */ function block_perm() { - return array('administer blocks', 'use PHP for block visibility'); + return array( + 'administer blocks' => t('Select which blocks are displayed, and arrange them on the page.'), + 'use PHP for block visibility' => t('Enter PHP code in the field for block visibility settings. %warning', array('%warning' => t('Warning: Give to trusted roles only; this permission has security implications.'))), + ); } /** Index: modules/blog/blog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blog/blog.module,v retrieving revision 1.298 diff -u -p -r1.298 blog.module --- modules/blog/blog.module 6 Feb 2008 19:38:27 -0000 1.298 +++ modules/blog/blog.module 15 Feb 2008 05:38:23 -0000 @@ -23,7 +23,7 @@ function blog_node_info() { * Implementation of hook_perm(). */ function blog_perm() { - return array('create blog entries', 'delete own blog entries', 'delete any blog entry', 'edit own blog entries', 'edit any blog entry'); + return node_list_permissions('blog'); } /** @@ -33,11 +33,11 @@ function blog_access($op, $node, $accoun switch ($op) { case 'create': // Anonymous users cannot post even if they have the permission. - return user_access('create blog entries', $account) && $account->uid; + return user_access('create blog content', $account) && $account->uid; case 'update': - return user_access('edit any blog entry', $account) || (user_access('edit own blog entries', $account) && ($node->uid == $account->uid)); + return user_access('edit any blog content', $account) || (user_access('edit own blog content', $account) && ($node->uid == $account->uid)); case 'delete': - return user_access('delete any blog entry', $account) || (user_access('delete own blog entries', $account) && ($node->uid == $account->uid)); + return user_access('delete any blog content', $account) || (user_access('delete own blog content', $account) && ($node->uid == $account->uid)); } } @@ -45,7 +45,7 @@ function blog_access($op, $node, $accoun * Implementation of hook_user(). */ function blog_user($type, &$edit, &$user) { - if ($type == 'view' && user_access('create blog entries', $user)) { + if ($type == 'view' && user_access('create blog content', $user)) { $user->content['summary']['blog'] = array( '#type' => 'user_profile_item', '#title' => t('Blog'), @@ -145,7 +145,7 @@ function blog_menu() { 'page callback' => 'blog_page_user', 'page arguments' => array(1), 'access callback' => 'user_access', - 'access arguments' => array('create blog entries', 1), + 'access arguments' => array('create blog content', 1), 'file' => 'blog.pages.inc', ); $items['blog/%user/feed'] = array( Index: modules/blogapi/blogapi.module =================================================================== RCS file: /cvs/drupal/drupal/modules/blogapi/blogapi.module,v retrieving revision 1.116 diff -u -p -r1.116 blogapi.module --- modules/blogapi/blogapi.module 12 Feb 2008 13:54:43 -0000 1.116 +++ modules/blogapi/blogapi.module 15 Feb 2008 05:38:24 -0000 @@ -24,7 +24,9 @@ function blogapi_help($path, $arg) { * Implementation of hook_perm(). */ function blogapi_perm() { - return array('administer content with blog api'); + return array( + 'administer content with blog api' => t('Manage website content from external tools.'), + ); } /** Index: modules/book/book.module =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.module,v retrieving revision 1.455 diff -u -p -r1.455 book.module --- modules/book/book.module 10 Feb 2008 19:49:37 -0000 1.455 +++ modules/book/book.module 15 Feb 2008 05:38:24 -0000 @@ -40,7 +40,12 @@ function book_theme() { * Implementation of hook_perm(). */ function book_perm() { - return array('add content to books', 'administer book outlines', 'create new books', 'access printer-friendly version'); + return array( + 'add content to books' => t('Add new content and child pages to books.'), + 'administer book outlines' => t('Manage books through the administration panel.'), + 'create new books' => t('Add new top-level books.'), + 'access printer-friendly version' => t('View a book page and all of its sub-pages as a single document for ease of printing. Can be performance heavy.'), + ); } /** Index: modules/comment/comment.module =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v retrieving revision 1.618 diff -u -p -r1.618 comment.module --- modules/comment/comment.module 6 Feb 2008 19:38:27 -0000 1.618 +++ modules/comment/comment.module 15 Feb 2008 05:38:25 -0000 @@ -271,7 +271,12 @@ function comment_node_type($op, $info) { * Implementation of hook_perm(). */ function comment_perm() { - return array('access comments', 'post comments', 'administer comments', 'post comments without approval'); + return array( + 'access comments' => t('View comments attached to content.'), + 'post comments' => t('Add comments to content (approval required).'), + 'post comments without approval' => t('Add comments to content (no approval required).'), + 'administer comments' => t('Manage and approve comments, and configure comment administration settings.'), + ); } /** Index: modules/contact/contact.module =================================================================== RCS file: /cvs/drupal/drupal/modules/contact/contact.module,v retrieving revision 1.103 diff -u -p -r1.103 contact.module --- modules/contact/contact.module 16 Jan 2008 12:46:52 -0000 1.103 +++ modules/contact/contact.module 15 Feb 2008 05:38:25 -0000 @@ -36,8 +36,12 @@ function contact_help($path, $arg) { * Implementation of hook_perm */ function contact_perm() { - return array('access site-wide contact form', 'administer site-wide contact form'); + return array( + 'access site-wide contact form' => t('Send feedback to administrators via e-mail using the site-wide contact form.'), + 'administer site-wide contact form' => t('Configure site-wide contact form administration settings.'), + ); } + /** * Implementation of hook_menu(). */ Index: modules/filter/filter.module =================================================================== RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v retrieving revision 1.204 diff -u -p -r1.204 filter.module --- modules/filter/filter.module 21 Jan 2008 15:08:24 -0000 1.204 +++ modules/filter/filter.module 15 Feb 2008 05:38:26 -0000 @@ -150,7 +150,9 @@ function filter_admin_format_title($form * Implementation of hook_perm(). */ function filter_perm() { - return array('administer filters'); + return array( + 'administer filters' => t('Manage input formats and filters, and select which roles may use them. %warning', array('%warning' => t('Warning: Give to trusted roles only; this permission has security implications.'))), + ); } /** Index: modules/forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.450 diff -u -p -r1.450 forum.module --- modules/forum/forum.module 8 Feb 2008 03:10:32 -0000 1.450 +++ modules/forum/forum.module 15 Feb 2008 05:38:26 -0000 @@ -307,11 +307,11 @@ function forum_node_info() { function forum_access($op, $node, $account) { switch ($op) { case 'create': - return user_access('create forum topics', $account); + return user_access('create forum content', $account); case 'update': - return user_access('edit any forum topic', $account) || (user_access('edit own forum topics', $account) && ($account->uid == $node->uid)); + return user_access('edit any forum content', $account) || (user_access('edit own forum content', $account) && ($account->uid == $node->uid)); case 'delete': - return user_access('delete any forum topic', $account) || (user_access('delete own forum topics', $account) && ($account->uid == $node->uid)); + return user_access('delete any forum content', $account) || (user_access('delete own forum content', $account) && ($account->uid == $node->uid)); } } @@ -319,7 +319,11 @@ function forum_access($op, $node, $accou * Implementation of hook_perm(). */ function forum_perm() { - return array('create forum topics', 'delete own forum topics', 'delete any forum topic', 'edit own forum topics', 'edit any forum topic', 'administer forums'); + $perms = array( + 'administer forums' => t('Manage forums and configure forum administration settings.'), + ); + $perms += node_list_permissions('forum'); + return $perms; } /** Index: modules/locale/locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v retrieving revision 1.213 diff -u -p -r1.213 locale.module --- modules/locale/locale.module 6 Feb 2008 19:38:27 -0000 1.213 +++ modules/locale/locale.module 15 Feb 2008 05:38:27 -0000 @@ -186,7 +186,10 @@ function locale_inc_callback() { * Implementation of hook_perm(). */ function locale_perm() { - return array('administer languages', 'translate interface'); + return array( + 'administer languages' => t('Manage the languages in which the website content and interface text may be displayed.'), + 'translate interface' => t('Translate the text of the website interface.'), + ); } /** Index: modules/menu/menu.module =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v retrieving revision 1.158 diff -u -p -r1.158 menu.module --- modules/menu/menu.module 12 Feb 2008 13:43:21 -0000 1.158 +++ modules/menu/menu.module 15 Feb 2008 05:38:27 -0000 @@ -37,7 +37,9 @@ function menu_help($path, $arg) { * Implementation of hook_perm(). */ function menu_perm() { - return array('administer menu'); + return array( + 'administer menu' => t('Manage menus and menu items.'), + ); } /** Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.947 diff -u -p -r1.947 node.module --- modules/node/node.module 3 Feb 2008 19:41:47 -0000 1.947 +++ modules/node/node.module 15 Feb 2008 05:38:28 -0000 @@ -1120,16 +1120,18 @@ function theme_node_log_message($log) { * Implementation of hook_perm(). */ function node_perm() { - $perms = array('administer content types', 'administer nodes', 'access content', 'view revisions', 'revert revisions', 'delete revisions'); + $perms = array( + 'administer content types' => t('Manage content types and content type administration settings.'), + 'administer nodes' => t('Manage all website content, and bypass any content-related access control. %warning', array('%warning' => t('Warning: Give to trusted roles only; this permission has security implications.'))), + 'access content' => t('View published content.'), + 'view revisions' => t('View content revisions.'), + 'revert revisions' => t('Replace content with an older revision.'), + 'delete revisions' => t('Delete content revisions.'), + ); foreach (node_get_types() as $type) { if ($type->module == 'node') { - $name = check_plain($type->type); - $perms[] = 'create '. $name .' content'; - $perms[] = 'delete own '. $name .' content'; - $perms[] = 'delete any '. $name .' content'; - $perms[] = 'edit own '. $name .' content'; - $perms[] = 'edit any '. $name .' content'; + $perms += node_list_permissions($type); } } @@ -2731,3 +2733,25 @@ function node_unpublish_by_keyword_actio } } } + +/** + * Helper function to generate standard node permission list for a given type. + * + * @param $type + * The machine-readable name of the node type. + * @return array + * An array of permission names and descriptions. + */ +function node_list_permissions($type) { + $info = node_get_types('type', $type); + $type = check_plain($info->type); + + // Build standard list of node permissions for this type. + $perms["create $type content"] = t('Create new %type_name content.', array('%type_name' => $info->name)); + $perms["delete any $type content"] = t('Delete any %type_name content, regardless of its author.', array('%type_name' => $info->name)); + $perms["delete own $type content"] = t('Delete %type_name content created by the user.', array('%type_name' => $info->name)); + $perms["edit own $type content"] = t('Edit %type_name content created by the user.', array('%type_name' => $info->name)); + $perms["edit any $type content"] = t('Edit any %type_name content, regardless of its author.', array('%type_name' => $info->name)); + + return $perms; +} Index: modules/path/path.module =================================================================== RCS file: /cvs/drupal/drupal/modules/path/path.module,v retrieving revision 1.138 diff -u -p -r1.138 path.module --- modules/path/path.module 3 Feb 2008 19:20:35 -0000 1.138 +++ modules/path/path.module 15 Feb 2008 05:38:28 -0000 @@ -206,7 +206,10 @@ function path_form_alter(&$form, $form_s * Implementation of hook_perm(). */ function path_perm() { - return array('create url aliases', 'administer url aliases'); + return array( + 'create url aliases' => t('Manage URL aliases on content.'), + 'administer url aliases' => t('Manage URL aliases across the entire website.'), + ); } /** Index: modules/poll/poll.module =================================================================== RCS file: /cvs/drupal/drupal/modules/poll/poll.module,v retrieving revision 1.263 diff -u -p -r1.263 poll.module --- modules/poll/poll.module 15 Jan 2008 07:57:46 -0000 1.263 +++ modules/poll/poll.module 15 Feb 2008 05:38:28 -0000 @@ -54,7 +54,14 @@ function poll_theme() { * Implementation of hook_perm(). */ function poll_perm() { - return array('create poll content', 'delete own poll content', 'delete any poll content', 'edit any poll content', 'edit own poll content', 'vote on polls', 'cancel own vote', 'inspect all votes'); + $perms = node_list_permissions('poll'); + $perms += array( + 'vote on polls' => t('Cast votes on polls.'), + 'cancel own vote' => t('Change own votes.'), + 'inspect all votes' => t('View voting results.'), + ); + + return $perms; } /** Index: modules/search/search.module =================================================================== RCS file: /cvs/drupal/drupal/modules/search/search.module,v retrieving revision 1.250 diff -u -p -r1.250 search.module --- modules/search/search.module 8 Jan 2008 10:35:42 -0000 1.250 +++ modules/search/search.module 15 Feb 2008 05:38:28 -0000 @@ -141,7 +141,11 @@ function search_theme() { * Implementation of hook_perm(). */ function search_perm() { - return array('search content', 'use advanced search', 'administer search'); + return array( + 'search content' => t('Search website content.'), + 'use advanced search' => t('Limit search results with additional criteria, such as specific content types. Could have performance implications.'), + 'administer search' => t('Configure search administration settings.'), + ); } /** Index: modules/statistics/statistics.module =================================================================== RCS file: /cvs/drupal/drupal/modules/statistics/statistics.module,v retrieving revision 1.272 diff -u -p -r1.272 statistics.module --- modules/statistics/statistics.module 4 Jan 2008 09:31:48 -0000 1.272 +++ modules/statistics/statistics.module 15 Feb 2008 05:38:29 -0000 @@ -69,7 +69,10 @@ function statistics_exit() { * Implementation of hook_perm(). */ function statistics_perm() { - return array('access statistics', 'view post access counter'); + return array( + 'access statistics' => t('View content access statistics.'), + 'view post access counter' => t('View the total number of times a piece of content has been accessed.'), + ); } /** Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.63 diff -u -p -r1.63 system.admin.inc --- modules/system/system.admin.inc 4 Feb 2008 12:35:48 -0000 1.63 +++ modules/system/system.admin.inc 15 Feb 2008 05:38:30 -0000 @@ -82,18 +82,6 @@ function system_admin_menu_block_page() } /** - * Menu callback; Sets whether the admin menu is in compact mode or not. - * - * @param $mode - * Valid values are 'on' and 'off'. - */ -function system_admin_compact_page($mode = 'off') { - global $user; - user_save($user, array('admin_compact_mode' => ($mode == 'on'))); - drupal_goto('admin'); -} - -/** * Menu callback; prints a listing of admin tasks for each installed module. */ function system_admin_by_module() { @@ -1899,14 +1887,7 @@ function theme_admin_page($blocks) { } $output = '
'; - $output .= ''; + $output .= theme('system_compact_link'); foreach ($container as $id => $data) { $output .= '
'; Index: modules/system/system.install =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.install,v retrieving revision 1.238 diff -u -p -r1.238 system.install --- modules/system/system.install 30 Jan 2008 20:30:35 -0000 1.238 +++ modules/system/system.install 15 Feb 2008 05:38:31 -0000 @@ -2471,3 +2471,42 @@ function system_update_6047() { * @} End of "defgroup updates-5.x-to-6.x" * The next series of updates should start at 7000. */ + +/** + * @defgroup updates-6.x-to-7.x System updates from 6.x to 7.x + * @{ + */ + +/** + * Rename blog and forum permissions to be consistent with other content types. + */ +function system_update_7000() { + $ret = array(); + $result = db_query("SELECT rid, perm FROM {permission} ORDER BY rid"); + while ($role = db_fetch_object($result)) { + $renamed_permission = preg_replace('/(?<=^|,\ )create\ blog\ entries(?=,|$)/', 'create blog content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ blog\ entries(?=,|$)/', 'edit own blog content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ blog\ entry(?=,|$)/', 'edit any blog content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ blog\ entries(?=,|$)/', 'delete own blog content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ blog\ entry(?=,|$)/', 'delete any blog content', $role->perm); + + $renamed_permission = preg_replace('/(?<=^|,\ )create\ forum\ topics(?=,|$)/', 'create forum content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )delete\ any\ forum\ topic(?=,|$)/', 'delete any forum content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )delete\ own\ forum\ topics(?=,|$)/', 'delete own forum content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )edit\ any\ forum\ topic(?=,|$)/', 'edit any forum content', $role->perm); + $renamed_permission = preg_replace('/(?<=^|,\ )edit\ own\ forum\ topics(?=,|$)/', 'edit own forum content', $role->perm); + + if ($renamed_permission != $role->perm) { + $ret[] = update_sql("UPDATE {permission} SET perm = '$renamed_permission' WHERE rid = $role->rid"); + } + } + + return $ret; +} + +/** + * @} End of "defgroup updates-6.x-to-7.x" + * The next series of updates should start at 8000. + */ + + Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.589 diff -u -p -r1.589 system.module --- modules/system/system.module 12 Feb 2008 14:06:58 -0000 1.589 +++ modules/system/system.module 15 Feb 2008 05:38:32 -0000 @@ -148,6 +148,7 @@ function system_theme() { 'system_powered_by' => array( 'arguments' => array('image_path' => NULL), ), + 'system_compact_link' => array(), )); } @@ -155,7 +156,14 @@ function system_theme() { * Implementation of hook_perm(). */ function system_perm() { - return array('administer site configuration', 'access administration pages', 'administer actions', 'access site reports', 'select different theme', 'administer files'); + return array( + 'administer site configuration' => t('Configure site-wide settings such as module or theme administration settings.'), + 'access administration pages' => t('View the administration panel and browse the help system.'), + 'administer actions' => t('Manage the actions defined for your site.'), + 'access site reports' => t('View reports from system logs and other status information.'), + 'select different theme' => t('Select a theme other than the default theme set by the site administrator.'), + 'administer files' => t('Manage user-uploaded files.'), + ); } /** @@ -1159,6 +1167,18 @@ function system_admin_compact_mode() { } /** + * Menu callback; Sets whether the admin menu is in compact mode or not. + * + * @param $mode + * Valid values are 'on' and 'off'. + */ +function system_admin_compact_page($mode = 'off') { + global $user; + user_save($user, array('admin_compact_mode' => ($mode == 'on'))); + drupal_goto(drupal_get_destination()); +} + +/** * Generate a list of tasks offered by a specified module. * * @param $module @@ -1875,3 +1895,21 @@ function theme_system_powered_by($image_ $image = theme('image', $image_path, t('Powered by Drupal, an open source content management system'), t('Powered by Drupal, an open source content management system')); return l($image, 'http://drupal.org', array('html' => TRUE, 'absolute' => TRUE, 'external' => TRUE)); } + +/** + * Display the link to show or hide inline help descriptions. + * + * @ingroup themeable + */ +function theme_system_compact_link() { + $output = ''; + + return $output; +} Index: modules/taxonomy/taxonomy.module =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.module,v retrieving revision 1.414 diff -u -p -r1.414 taxonomy.module --- modules/taxonomy/taxonomy.module 27 Jan 2008 17:55:15 -0000 1.414 +++ modules/taxonomy/taxonomy.module 15 Feb 2008 05:38:32 -0000 @@ -10,7 +10,9 @@ * Implementation of hook_perm(). */ function taxonomy_perm() { - return array('administer taxonomy'); + return array( + 'administer taxonomy' => t('Manage taxonomy vocabularies and terms.'), + ); } /** Index: modules/translation/translation.module =================================================================== RCS file: /cvs/drupal/drupal/modules/translation/translation.module,v retrieving revision 1.23 diff -u -p -r1.23 translation.module --- modules/translation/translation.module 28 Jan 2008 11:38:58 -0000 1.23 +++ modules/translation/translation.module 15 Feb 2008 05:38:32 -0000 @@ -86,7 +86,9 @@ function _translation_tab_access($node) * Implementation of hook_perm(). */ function translation_perm() { - return array('translate content'); + return array( + 'translate content' => t('Translate website content.'), + ); } /** Index: modules/upload/upload.module =================================================================== RCS file: /cvs/drupal/drupal/modules/upload/upload.module,v retrieving revision 1.198 diff -u -p -r1.198 upload.module --- modules/upload/upload.module 12 Feb 2008 13:49:01 -0000 1.198 +++ modules/upload/upload.module 15 Feb 2008 05:38:33 -0000 @@ -43,7 +43,10 @@ function upload_theme() { * Implementation of hook_perm(). */ function upload_perm() { - return array('upload files', 'view uploaded files'); + return array( + 'upload files' => t('Attach images and other files to content.'), + 'view uploaded files' => t('View and download files attached to content.'), + ); } /** Index: modules/user/user.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v retrieving revision 1.18 diff -u -p -r1.18 user.admin.inc --- modules/user/user.admin.inc 16 Jan 2008 22:54:41 -0000 1.18 +++ modules/user/user.admin.inc 15 Feb 2008 05:38:33 -0000 @@ -516,15 +516,24 @@ function user_admin_perm($form_state, $r // Render role/permission overview: $options = array(); + $hide_descriptions = !system_admin_compact_mode(); foreach (module_list(FALSE, FALSE, TRUE) as $module) { if ($permissions = module_invoke($module, 'perm')) { $form['permission'][] = array( '#value' => $module, ); - asort($permissions); - foreach ($permissions as $perm) { + ksort($permissions); + foreach ($permissions as $perm => $description) { + // Account for permissions lacking a description. + if (is_int($perm)) { + $perm = $description; + $description = NULL; + } $options[$perm] = ''; - $form['permission'][$perm] = array('#value' => t($perm)); + $form['permission'][$perm] = array( + '#value' => t($perm), + '#description' => $hide_descriptions ? $description : NULL, + ); foreach ($role_names as $rid => $name) { // Builds arrays for checked boxes for each role if (strpos($role_permissions[$rid], $perm .',') !== FALSE) { @@ -582,7 +591,12 @@ function theme_user_admin_perm($form) { $row[] = array('data' => t('@module module', array('@module' => drupal_render($form['permission'][$key]))), 'class' => 'module', 'id' => 'module-'. $form['permission'][$key]['#value'], 'colspan' => count($form['role_names']) + 1); } else { - $row[] = array('data' => drupal_render($form['permission'][$key]), 'class' => 'permission'); + // Permission row. + $description = $form['permission'][$key]['#description']; + $row[] = array( + 'data' => drupal_render($form['permission'][$key]) . (!empty($description) ? '
'. $description .'
' : ''), + 'class' => 'permission', + ); foreach (element_children($form['checkboxes']) as $rid) { if (is_array($form['checkboxes'][$rid])) { $row[] = array('data' => drupal_render($form['checkboxes'][$rid][$key]), 'class' => 'checkbox', 'title' => $roles[$rid] .' : '. t($key)); @@ -598,7 +612,8 @@ function theme_user_admin_perm($form) { $header[] = array('data' => drupal_render($form['role_names'][$rid]), 'class' => 'checkbox'); } } - $output = theme('table', $header, $rows, array('id' => 'permissions')); + $output = theme('system_compact_link'); + $output .= theme('table', $header, $rows, array('id' => 'permissions')); $output .= drupal_render($form); return $output; } Index: modules/user/user.css =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.css,v retrieving revision 1.7 diff -u -p -r1.7 user.css --- modules/user/user.css 21 Jun 2007 04:38:41 -0000 1.7 +++ modules/user/user.css 15 Feb 2008 05:38:33 -0000 @@ -6,6 +6,9 @@ #permissions td.permission { padding-left: 1.5em; /* LTR */ } +#permissions .description { + font-size: 0.85em; +} #access-rules .access-type, #access-rules .rule-type { margin-right: 1em; /* LTR */ float: left; /* LTR */ Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.893 diff -u -p -r1.893 user.module --- modules/user/user.module 6 Feb 2008 19:38:28 -0000 1.893 +++ modules/user/user.module 15 Feb 2008 05:38:34 -0000 @@ -541,7 +541,12 @@ function user_fields() { * Implementation of hook_perm(). */ function user_perm() { - return array('administer permissions', 'administer users', 'access user profiles', 'change own username'); + return array( + 'administer permissions' => t('Manage the permissions assigned to user roles. %warning', array('%warning' => t('Warning: Give to trusted roles only; this permission has security implications.'))), + 'administer users' => t('Manage or block users, and manage their role assignments.'), + 'access user profiles' => t('View profiles of users on the site, which may contain personal information.'), + 'change own username' => t('Select a different username.'), + ); } /**