diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 583e5e60872bb1d033909da93a896c1e206bc501..acf1c2f9b6622527464286b1d29ffed315e9913a 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,7 @@ Drupal 7.0, xxxx-xx-xx (development version) ---------------------- - Usability: * Implemented drag-and-drop positioning for input format listings. + * Provide descriptions for permissions on the administration page. Drupal 6.0, 2008-02-13 ---------------------- diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module index 0475edba8de18c823ee31dadcb28bd383d3b39c2..ba8344a8a57ef8e65b32af5b96b3f2dd3618c210 100644 --- a/modules/aggregator/aggregator.module +++ b/modules/aggregator/aggregator.module @@ -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.'), + ); } /** diff --git a/modules/block/block.module b/modules/block/block.module index fe8e8b5479a88a92b09764eb0e3ca2215ad52ed4..64719f56aee7bc986676f0f80582eff9b1d194a4 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -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.'))), + ); } /** diff --git a/modules/blog/blog.module b/modules/blog/blog.module index 2a757cfec73b614ed34ce138354346d018e77867..172f6833db66b5e0d0105f8b84fd28b6a6683987 100644 --- a/modules/blog/blog.module +++ b/modules/blog/blog.module @@ -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, $account) { 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, $account) { * 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( diff --git a/modules/blogapi/blogapi.module b/modules/blogapi/blogapi.module index 40395a8c0a5ac61039f818b146db9e717f6453e1..b23f288d4d1fb628f98d54f04356914d52139640 100644 --- a/modules/blogapi/blogapi.module +++ b/modules/blogapi/blogapi.module @@ -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.'), + ); } /** diff --git a/modules/book/book.module b/modules/book/book.module index f4dc78999c65fb5e677b0edc2c0c0d2817e162a5..31ddb55263891251f4b8227118d24f37fba87cb0 100644 --- a/modules/book/book.module +++ b/modules/book/book.module @@ -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.'), + ); } /** diff --git a/modules/comment/comment.module b/modules/comment/comment.module index faf77f741f4d60deb14a4b7ca89cb956ce46daa6..2eb98555996b1f0a105eb128bf455503dec7b8ec 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -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.'), + ); } /** diff --git a/modules/contact/contact.module b/modules/contact/contact.module index 5a51385cd79b73a6a9c08f5a2d0ab9167a54e59d..7883fe869559c04833ceb35d175e62fe3d5aa021 100644 --- a/modules/contact/contact.module +++ b/modules/contact/contact.module @@ -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(). */ diff --git a/modules/filter/filter.module b/modules/filter/filter.module index bb125aa5eb4596650afb9f200c09d6e2d2f89e8d..522b7a0f9e029ffc91fdd20722ad8fb243014b1c 100644 --- a/modules/filter/filter.module +++ b/modules/filter/filter.module @@ -150,7 +150,9 @@ function filter_admin_format_title($format) { * 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.'))), + ); } /** diff --git a/modules/forum/forum.module b/modules/forum/forum.module index a58c62f33a160cc6e93acc7e42fa58de0d914d19..29c97ca7bcfa92aa36a7576403f5fb7b845260dc 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -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, $account) { * 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; } /** diff --git a/modules/locale/locale.module b/modules/locale/locale.module index 3aafbda175b38a438cdc9de20d77da942c6c564b..26d83ee4dda47e45162faad75985828181a14979 100644 --- a/modules/locale/locale.module +++ b/modules/locale/locale.module @@ -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.'), + ); } /** diff --git a/modules/menu/menu.module b/modules/menu/menu.module index 03fca87a14effe284f860a956709debe6ed16b67..cce0dac6f2c883cabec90844dbdc590b7832e77b 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -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.'), + ); } /** diff --git a/modules/node/node.module b/modules/node/node.module index b517608d937c2daaf4fe3bf16037279c14bf6a4f..9213311fbd23edd60a869889dbd70f3930cf4148 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -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_action($node, $context) { } } } + +/** + * 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; +} diff --git a/modules/path/path.module b/modules/path/path.module index 87bd6cdfe5fd6d9206accf7b99d1f91f5f4ace31..29db175a626eabf674f77a7b459c1139107f618e 100644 --- a/modules/path/path.module +++ b/modules/path/path.module @@ -206,7 +206,10 @@ function path_form_alter(&$form, $form_state, $form_id) { * 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.'), + ); } /** diff --git a/modules/poll/poll.module b/modules/poll/poll.module index 155b3c7ad65bd01a48e2accc4da2e99649479fb0..68df707a7a9bbadc46f0613e2063da6643fe3545 100644 --- a/modules/poll/poll.module +++ b/modules/poll/poll.module @@ -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('Retract and optionally change own votes.'), + 'inspect all votes' => t('View voting results.'), + ); + + return $perms; } /** diff --git a/modules/search/search.module b/modules/search/search.module index 56bb1baa8a8cddebbab6b2ca80bd6638aebc06ff..082b626d3a81d9d5e82af3358191898f6ca957c2 100644 --- a/modules/search/search.module +++ b/modules/search/search.module @@ -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.'), + ); } /** diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module index 1242e973b8a368e1463dbcc4b2e49906163ded18..b92f79c90418c2607b7d2ca11cb84876941d06f2 100644 --- a/modules/statistics/statistics.module +++ b/modules/statistics/statistics.module @@ -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.'), + ); } /** diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc index edfb2a9265a4afe1bdbc847f04d6d44e49d1ae51..9ec72a6d24eda568e9b02055a10532c3a3b904f5 100644 --- a/modules/system/system.admin.inc +++ b/modules/system/system.admin.inc @@ -81,18 +81,6 @@ function system_admin_menu_block_page() { return $output; } -/** - * 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. */ @@ -1899,14 +1887,7 @@ function theme_admin_page($blocks) { } $output = '