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	9 Nov 2009 19:01:50 -0000
@@ -12,3 +12,4 @@ files[] = aggregator.parser.inc
 files[] = aggregator.processor.inc
 files[] = aggregator.install
 files[] = aggregator.test
+settings = 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	9 Nov 2009 19:01:39 -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
+settings = 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	9 Nov 2009 19:01:27 -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
+settings = admin/content/book/settings
Index: modules/color/color.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/color/color.info,v
retrieving revision 1.10
diff -u -p -r1.10 color.info
--- modules/color/color.info	1 Sep 2009 20:39:55 -0000	1.10
+++ modules/color/color.info	9 Nov 2009 19:02:44 -0000
@@ -1,5 +1,4 @@
 ; $Id: color.info,v 1.10 2009/09/01 20:39:55 webchick Exp $
-
 name = Color
 description = Allows administrators to change the color scheme of compatible themes.
 package = Core
@@ -8,3 +7,4 @@ core = 7.x
 files[] = color.module
 files[] = color.install
 files[] = color.test
+settings = admin/appearance/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	9 Nov 2009 19:02:59 -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
+settings = 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	9 Nov 2009 19:03:27 -0000
@@ -9,3 +9,4 @@ files[] = contact.admin.inc
 files[] = contact.pages.inc
 files[] = contact.install
 files[] = contact.test
+settings = 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	9 Nov 2009 19:03:42 -0000
@@ -6,3 +6,4 @@ package = Core
 version = VERSION
 files[] = dashboard.module
 dependencies[] = block
+settings = 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	9 Nov 2009 19:04:06 -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
+settings = 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	9 Nov 2009 19:05:26 -0000
@@ -11,3 +11,4 @@ files[] = forum.admin.inc
 files[] = forum.pages.inc
 files[] = forum.install
 files[] = forum.test
+settings = admin/structure/forum
Index: modules/image/image.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.info,v
retrieving revision 1.3
diff -u -p -r1.3 image.info
--- modules/image/image.info	12 Oct 2009 05:22:57 -0000	1.3
+++ modules/image/image.info	9 Nov 2009 19:05:40 -0000
@@ -10,3 +10,4 @@ files[] = image.effects.inc
 files[] = image.field.inc
 files[] = image.install
 files[] = image.test
+settings = 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	9 Nov 2009 19:05:55 -0000
@@ -8,3 +8,4 @@ files[] = locale.module
 files[] = locale.install
 files[] = locale.field.inc
 files[] = locale.test
+settings = 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	9 Nov 2009 19:06:12 -0000
@@ -8,3 +8,4 @@ files[] = menu.module
 files[] = menu.admin.inc
 files[] = menu.install
 files[] = menu.test
+settings = 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	9 Nov 2009 19:06:26 -0000
@@ -12,3 +12,4 @@ files[] = node.install
 files[] = node.test
 files[] = node.tokens.inc
 required = TRUE
+settings = 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	9 Nov 2009 19:06:45 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = path.module
 files[] = path.admin.inc
 files[] = path.test
+settings = 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	9 Nov 2009 19:07:15 -0000
@@ -9,3 +9,4 @@ files[] = profile.admin.inc
 files[] = profile.pages.inc
 files[] = profile.install
 files[] = profile.test
+settings = 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	9 Nov 2009 19:07:28 -0000
@@ -10,3 +10,4 @@ files[] = search.pages.inc
 files[] = search.install
 files[] = search.test
 files[] = search.extender.inc
+settings = 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	9 Nov 2009 19:07:41 -0000
@@ -7,3 +7,4 @@ core = 7.x
 files[] = shortcut.module
 files[] = shortcut.admin.inc
 files[] = shortcut.install
+settings = 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	9 Nov 2009 19:08:01 -0000
@@ -9,6 +9,7 @@ files[] = simpletest.pages.inc
 files[] = simpletest.install
 files[] = simpletest.test
 files[] = drupal_web_test_case.php
+settings = 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	9 Nov 2009 19:08:24 -0000
@@ -10,3 +10,4 @@ files[] = statistics.pages.inc
 files[] = statistics.install
 files[] = statistics.test
 files[] = statistics.tokens.inc
+settings = admin/config/system/statistics
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.220
diff -u -p -r1.220 system.admin.inc
--- modules/system/system.admin.inc	8 Nov 2009 13:23:41 -0000	1.220
+++ modules/system/system.admin.inc	9 Nov 2009 19:47:10 -0000
@@ -721,10 +721,36 @@ 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('More help'),
+          '#href' => "admin/help/$filename",
+          '#options' => array('attributes' => array('class' => 'module-link module-link-help', 'title' => t('More 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('Configure permissions'),
+        '#href' => 'admin/config/people/permissions',
+        '#options' => array('fragment' => 'module-' . $filename, 'attributes' => array('class' => 'module-link module-link-permissions', 'title' => t('Configure permissions'))),
+      );
+    }
+    // Generate link for module's settings page, if the module provides one.
+    if ($module->status && isset($module->info['settings'])) {
+      $settings_link = menu_get_item($module->info['settings']);
+      if ($settings_link['access']) {
+        $extra['links']['settings'] = array(
+          '#type' => 'link',
+          '#title' => t('Configure settings'),
+          '#href' => $settings_link['href'],
+          '#options' => array('attributes' => array('class' => 'module-link module-link-settings', 'title' => $settings_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
@@ -755,6 +781,7 @@ function system_modules($form, $form_sta
         t('Name'),
         t('Version'),
         t('Description'),
+        array('data' => t('Operations'), 'colspan' => 3),
       ),
     );
   }
@@ -785,7 +812,7 @@ function _system_modules_build_row($info
     'required_by' => array(),
     'disabled' => FALSE,
     'enabled' => FALSE,
-    'help' => '',
+    'links' => array(),
   );
   $form = array(
     '#tree' => TRUE,
@@ -844,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', 'settings') as $key) {
+    $form['links'][$key] = (isset($extra['links'][$key]) ? $extra['links'][$key] : array());
   }
+
   return $form;
 }
 
@@ -2308,14 +2334,8 @@ function theme_system_modules_fieldset($
     }
     $row[] = $label . '><strong>' . drupal_render($module['name']) . '</strong></label>';
     $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 = '<div class="module-help">' . drupal_render($module['help']) . '</div>';
-    }
     // Add the description, along with any modules it requires.
-    $description .= drupal_render($module['description']);
+    $description = drupal_render($module['description']);
     if ($module['#requires']) {
       $description .= '<div class="admin-requirements">' . t('Requires: !module-list', array('!module-list' => implode(', ', $module['#requires']))) . '</div>';
     }
@@ -2323,6 +2343,10 @@ function theme_system_modules_fieldset($
       $description .= '<div class="admin-requirements">' . t('Required by: !module-list', array('!module-list' => implode(', ', $module['#required_by']))) . '</div>';
     }
     $row[] = array('data' => $description, 'class' => array('description'));
+    // Display links (such as help or permissions) in their own columns.
+    foreach (array('help', 'permissions', 'settings') as $key) {
+      $row[] = array('data' => drupal_render($module['links'][$key]), 'class' => array($key));
+    }
     $rows[] = $row;
   }
 
Index: modules/system/system.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.css,v
retrieving revision 1.64
diff -u -p -r1.64 system.css
--- modules/system/system.css	8 Nov 2009 11:46:22 -0000	1.64
+++ modules/system/system.css	9 Nov 2009 19:39:04 -0000
@@ -159,10 +159,22 @@ tr.merge-up, tr.merge-up td, tr.merge-up
 .more-help-link {
   text-align: right; /* LTR */
 }
-.more-help-link a {
+.more-help-link a, a.module-link {
   padding: 1px 0 1px 20px; /* LTR */
+}
+a.module-link {
+  display: block;
+  white-space: nowrap;
+}
+.more-help-link a, a.module-link-help {
   background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
 }
+a.module-permissions-link {
+  background: url(../../misc/permissions.png) 0 50% no-repeat; /* LTR */
+}
+a.module-settings-link {
+  background: url(../../misc/settings.png) 0 50% no-repeat; /* LTR */
+}
 .more-link {
   text-align: right; /* LTR */
 }
Index: modules/system/system.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.info,v
retrieving revision 1.18
diff -u -p -r1.18 system.info
--- modules/system/system.info	15 Oct 2009 21:19:31 -0000	1.18
+++ modules/system/system.info	9 Nov 2009 19:09:05 -0000
@@ -16,3 +16,4 @@ files[] = system.tokens.inc
 files[] = system.updater.inc
 files[] = mail.sending.inc
 required = TRUE
+settings = admin/config/system
Index: modules/taxonomy/taxonomy.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.info,v
retrieving revision 1.10
diff -u -p -r1.10 taxonomy.info
--- modules/taxonomy/taxonomy.info	19 Aug 2009 20:19:37 -0000	1.10
+++ modules/taxonomy/taxonomy.info	9 Nov 2009 19:08:55 -0000
@@ -10,3 +10,4 @@ files[] = taxonomy.pages.inc
 files[] = taxonomy.install
 files[] = taxonomy.test
 files[] = taxonomy.tokens.inc
+settings = admin/structure/taxonomy
Index: modules/trigger/trigger.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/trigger/trigger.info,v
retrieving revision 1.6
diff -u -p -r1.6 trigger.info
--- modules/trigger/trigger.info	8 Jun 2009 09:23:54 -0000	1.6
+++ modules/trigger/trigger.info	9 Nov 2009 19:09:27 -0000
@@ -8,3 +8,4 @@ files[] = trigger.module
 files[] = trigger.admin.inc
 files[] = trigger.install
 files[] = trigger.test
+settings = admin/structure/trigger
Index: modules/update/update.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/update/update.info,v
retrieving revision 1.8
diff -u -p -r1.8 update.info
--- modules/update/update.info	16 Oct 2009 21:02:23 -0000	1.8
+++ modules/update/update.info	9 Nov 2009 19:09:55 -0000
@@ -13,3 +13,4 @@ files[] = update.manager.inc
 files[] = update.report.inc
 files[] = update.settings.inc
 files[] = update.test
+settings = admin/reports/updates/settings
Index: modules/upload/upload.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload/upload.info,v
retrieving revision 1.10
diff -u -p -r1.10 upload.info
--- modules/upload/upload.info	19 Aug 2009 20:19:37 -0000	1.10
+++ modules/upload/upload.info	9 Nov 2009 19:10:10 -0000
@@ -9,3 +9,4 @@ files[] = upload.admin.inc
 files[] = upload.install
 files[] = upload.test
 files[] = upload.tokens.inc
+settings = admin/config/media/uploads
Index: modules/user/user.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.info,v
retrieving revision 1.12
diff -u -p -r1.12 user.info
--- modules/user/user.info	19 Aug 2009 20:19:37 -0000	1.12
+++ modules/user/user.info	9 Nov 2009 19:10:24 -0000
@@ -11,3 +11,4 @@ files[] = user.install
 files[] = user.test
 files[] = user.tokens.inc
 required = TRUE
+settings = admin/config/people
