Index: modules/aggregator/aggregator.info =================================================================== RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.info,v retrieving revision 1.12 diff -u -p -r1.12 aggregator.info --- modules/aggregator/aggregator.info 8 Jun 2009 09:23:50 -0000 1.12 +++ modules/aggregator/aggregator.info 15 Nov 2009 18:14:12 -0000 @@ -12,3 +12,4 @@ files[] = aggregator.parser.inc files[] = aggregator.processor.inc files[] = aggregator.install files[] = aggregator.test +configure = admin/config/services/aggregator/settings Index: modules/block/block.info =================================================================== RCS file: /cvs/drupal/drupal/modules/block/block.info,v retrieving revision 1.14 diff -u -p -r1.14 block.info --- modules/block/block.info 28 Aug 2009 19:44:05 -0000 1.14 +++ modules/block/block.info 15 Nov 2009 18:14:12 -0000 @@ -1,5 +1,4 @@ ; $Id: block.info,v 1.14 2009/08/28 19:44:05 webchick Exp $ - name = Block description = Controls the visual building blocks a page is constructed with. Blocks are boxes of content rendered into an area, or region, of a web page. package = Core @@ -9,3 +8,4 @@ files[] = block.module files[] = block.admin.inc files[] = block.install files[] = block.test +configure = admin/structure/block Index: modules/book/book.info =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.info,v retrieving revision 1.12 diff -u -p -r1.12 book.info --- modules/book/book.info 8 Jun 2009 09:23:51 -0000 1.12 +++ modules/book/book.info 15 Nov 2009 18:14:12 -0000 @@ -1,5 +1,4 @@ ; $Id: book.info,v 1.12 2009/06/08 09:23:51 dries Exp $ - name = Book description = Allows users to create and organize related content in an outline. package = Core @@ -10,3 +9,4 @@ files[] = book.admin.inc files[] = book.pages.inc files[] = book.install files[] = book.test +configure = admin/content/book/settings Index: modules/comment/comment.info =================================================================== RCS file: /cvs/drupal/drupal/modules/comment/comment.info,v retrieving revision 1.11 diff -u -p -r1.11 comment.info --- modules/comment/comment.info 19 Aug 2009 20:19:36 -0000 1.11 +++ modules/comment/comment.info 15 Nov 2009 18:14:12 -0000 @@ -1,5 +1,4 @@ ; $Id: comment.info,v 1.11 2009/08/19 20:19:36 dries Exp $ - name = Comment description = Allows users to comment on and discuss published content. package = Core @@ -11,3 +10,4 @@ files[] = comment.pages.inc files[] = comment.install files[] = comment.test files[] = comment.tokens.inc +configure = admin/content/comment Index: modules/contact/contact.info =================================================================== RCS file: /cvs/drupal/drupal/modules/contact/contact.info,v retrieving revision 1.9 diff -u -p -r1.9 contact.info --- modules/contact/contact.info 8 Jun 2009 09:23:51 -0000 1.9 +++ modules/contact/contact.info 15 Nov 2009 18:14:12 -0000 @@ -9,3 +9,4 @@ files[] = contact.admin.inc files[] = contact.pages.inc files[] = contact.install files[] = contact.test +configure = admin/structure/contact Index: modules/dashboard/dashboard.info =================================================================== RCS file: /cvs/drupal/drupal/modules/dashboard/dashboard.info,v retrieving revision 1.1 diff -u -p -r1.1 dashboard.info --- modules/dashboard/dashboard.info 13 Oct 2009 13:54:54 -0000 1.1 +++ modules/dashboard/dashboard.info 15 Nov 2009 18:14:12 -0000 @@ -6,3 +6,4 @@ package = Core version = VERSION files[] = dashboard.module dependencies[] = block +configure = admin/dashboard/customize Index: modules/filter/filter.info =================================================================== RCS file: /cvs/drupal/drupal/modules/filter/filter.info,v retrieving revision 1.12 diff -u -p -r1.12 filter.info --- modules/filter/filter.info 8 Jun 2009 09:23:52 -0000 1.12 +++ modules/filter/filter.info 15 Nov 2009 18:14:12 -0000 @@ -1,4 +1,4 @@ -;h $Id: filter.info,v 1.12 2009/06/08 09:23:52 dries Exp $ +; $Id: filter.info,v 1.12 2009/06/08 09:23:52 dries Exp $ name = Filter description = Filters content in preparation for display. package = Core @@ -10,3 +10,4 @@ files[] = filter.pages.inc files[] = filter.install files[] = filter.test required = TRUE +configure = admin/config/content/formats Index: modules/forum/forum.info =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.info,v retrieving revision 1.12 diff -u -p -r1.12 forum.info --- modules/forum/forum.info 8 Jun 2009 09:23:52 -0000 1.12 +++ modules/forum/forum.info 15 Nov 2009 18:14:12 -0000 @@ -11,3 +11,4 @@ files[] = forum.admin.inc files[] = forum.pages.inc files[] = forum.install files[] = forum.test +configure = admin/structure/forum Index: modules/image/image.info =================================================================== RCS file: /cvs/drupal/drupal/modules/image/image.info,v retrieving revision 1.4 diff -u -p -r1.4 image.info --- modules/image/image.info 13 Nov 2009 03:30:37 -0000 1.4 +++ modules/image/image.info 15 Nov 2009 18:14:12 -0000 @@ -11,3 +11,4 @@ files[] = image.effects.inc files[] = image.field.inc files[] = image.install files[] = image.test +configure = admin/config/media/image-styles Index: modules/locale/locale.info =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.info,v retrieving revision 1.12 diff -u -p -r1.12 locale.info --- modules/locale/locale.info 16 Oct 2009 02:04:42 -0000 1.12 +++ modules/locale/locale.info 15 Nov 2009 18:14:12 -0000 @@ -8,3 +8,4 @@ files[] = locale.module files[] = locale.install files[] = locale.field.inc files[] = locale.test +configure = admin/config/regional/language Index: modules/menu/menu.info =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.info,v retrieving revision 1.9 diff -u -p -r1.9 menu.info --- modules/menu/menu.info 8 Jun 2009 09:23:52 -0000 1.9 +++ modules/menu/menu.info 15 Nov 2009 18:14:12 -0000 @@ -8,3 +8,4 @@ files[] = menu.module files[] = menu.admin.inc files[] = menu.install files[] = menu.test +configure = admin/structure/menu Index: modules/node/node.info =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.info,v retrieving revision 1.12 diff -u -p -r1.12 node.info --- modules/node/node.info 19 Aug 2009 20:19:36 -0000 1.12 +++ modules/node/node.info 15 Nov 2009 18:14:12 -0000 @@ -12,3 +12,4 @@ files[] = node.install files[] = node.test files[] = node.tokens.inc required = TRUE +configure = admin/structure/types Index: modules/path/path.info =================================================================== RCS file: /cvs/drupal/drupal/modules/path/path.info,v retrieving revision 1.8 diff -u -p -r1.8 path.info --- modules/path/path.info 8 Jun 2009 09:23:53 -0000 1.8 +++ modules/path/path.info 15 Nov 2009 18:14:12 -0000 @@ -7,3 +7,4 @@ core = 7.x files[] = path.module files[] = path.admin.inc files[] = path.test +configure = admin/config/search/path Index: modules/profile/profile.info =================================================================== RCS file: /cvs/drupal/drupal/modules/profile/profile.info,v retrieving revision 1.9 diff -u -p -r1.9 profile.info --- modules/profile/profile.info 8 Jun 2009 09:23:53 -0000 1.9 +++ modules/profile/profile.info 15 Nov 2009 18:14:12 -0000 @@ -9,3 +9,4 @@ files[] = profile.admin.inc files[] = profile.pages.inc files[] = profile.install files[] = profile.test +configure = admin/config/people/profile Index: modules/search/search.info =================================================================== RCS file: /cvs/drupal/drupal/modules/search/search.info,v retrieving revision 1.10 diff -u -p -r1.10 search.info --- modules/search/search.info 29 Aug 2009 10:46:41 -0000 1.10 +++ modules/search/search.info 15 Nov 2009 18:14:12 -0000 @@ -10,3 +10,4 @@ files[] = search.pages.inc files[] = search.install files[] = search.test files[] = search.extender.inc +configure = admin/config/search/settings Index: modules/shortcut/shortcut.info =================================================================== RCS file: /cvs/drupal/drupal/modules/shortcut/shortcut.info,v retrieving revision 1.1 diff -u -p -r1.1 shortcut.info --- modules/shortcut/shortcut.info 17 Oct 2009 00:51:52 -0000 1.1 +++ modules/shortcut/shortcut.info 15 Nov 2009 18:14:12 -0000 @@ -7,3 +7,4 @@ core = 7.x files[] = shortcut.module files[] = shortcut.admin.inc files[] = shortcut.install +configure = admin/config/system/shortcut Index: modules/simpletest/simpletest.info =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.info,v retrieving revision 1.14 diff -u -p -r1.14 simpletest.info --- modules/simpletest/simpletest.info 7 Nov 2009 14:10:33 -0000 1.14 +++ modules/simpletest/simpletest.info 15 Nov 2009 18:14:12 -0000 @@ -9,6 +9,7 @@ files[] = simpletest.pages.inc files[] = simpletest.install files[] = simpletest.test files[] = drupal_web_test_case.php +configure = admin/config/development/testing/settings ; Tests in tests directory. files[] = tests/actions.test Index: modules/statistics/statistics.info =================================================================== RCS file: /cvs/drupal/drupal/modules/statistics/statistics.info,v retrieving revision 1.10 diff -u -p -r1.10 statistics.info --- modules/statistics/statistics.info 19 Aug 2009 20:19:36 -0000 1.10 +++ modules/statistics/statistics.info 15 Nov 2009 18:14:12 -0000 @@ -10,3 +10,4 @@ files[] = statistics.pages.inc files[] = statistics.install files[] = statistics.test files[] = statistics.tokens.inc +configure = admin/config/system/statistics Index: modules/system/system.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v retrieving revision 1.221 diff -u -p -r1.221 system.admin.inc --- modules/system/system.admin.inc 11 Nov 2009 17:14:59 -0000 1.221 +++ modules/system/system.admin.inc 15 Nov 2009 18:20:46 -0000 @@ -720,10 +720,37 @@ function system_modules($form, $form_sta // Generate link for module's help page, if there is one. if ($help_arg && $module->status && in_array($filename, module_implements('help'))) { if (module_invoke($filename, 'help', "admin/help#$filename", $help_arg)) { - // Module has a help page. - $extra['help'] = theme('more_help_link', array('url' => url("admin/help/$filename"))); + $extra['links']['help'] = array( + '#type' => 'link', + '#title' => t('Help'), + '#href' => "admin/help/$filename", + '#options' => array('attributes' => array('class' => array('module-link', 'module-link-help'), 'title' => t('Help'))), + ); } } + // Generate link for module's permission, if the user has access to it. + if ($module->status && user_access('administer permissions') && in_array($filename, module_implements('permission'))) { + $extra['links']['permissions'] = array( + '#type' => 'link', + '#title' => t('Permissions'), + '#href' => 'admin/config/people/permissions', + '#options' => array('fragment' => 'module-' . $filename, 'attributes' => array('class' => array('module-link', 'module-link-permissions'), 'title' => t('Configure permissions'))), + ); + } + // Generate link for module's configuration page, if the module provides + // one. + if ($module->status && isset($module->info['configure'])) { + $configure_link = menu_get_item($module->info['configure']); + if ($configure_link['access']) { + $extra['links']['configure'] = array( + '#type' => 'link', + '#title' => t('Configure'), + '#href' => $configure_link['href'], + '#options' => array('attributes' => array('class' => array('module-link', 'module-link-configure'), 'title' => $configure_link['description'])), + ); + } + } + // Mark dependents disabled so the user cannot remove required modules. $dependents = array(); // If this module is required by other modules, list those, and then make it @@ -754,6 +781,7 @@ function system_modules($form, $form_sta t('Name'), t('Version'), t('Description'), + array('data' => t('Operations'), 'colspan' => 3), ), ); } @@ -784,7 +812,7 @@ function _system_modules_build_row($info 'required_by' => array(), 'disabled' => FALSE, 'enabled' => FALSE, - 'help' => '', + 'links' => array(), ); $form = array( '#tree' => TRUE, @@ -843,12 +871,11 @@ function _system_modules_build_row($info $form['description']['#markup'] .= theme('system_modules_incompatible', array('message' => $status_long)); } - // Show a "more help" link for modules that have them. - if ($extra['help']) { - $form['help'] = array( - '#markup' => $extra['help'], - ); + // Build operation links. + foreach (array('help', 'permissions', 'configure') as $key) { + $form['links'][$key] = (isset($extra['links'][$key]) ? $extra['links'][$key] : array()); } + return $form; } @@ -2307,14 +2334,8 @@ function theme_system_modules_fieldset($ } $row[] = $label . '>' . drupal_render($module['name']) . ''; $row[] = drupal_render($module['version']); - $description = ''; - // If we have help, it becomes the first part - // of the description - with CSS, it is float: right'd. - if (isset($module['help'])) { - $description = '