Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.180
diff -u -p -r1.180 menu.inc
--- includes/menu.inc	22 Jun 2007 06:12:09 -0000	1.180
+++ includes/menu.inc	23 Jun 2007 10:40:09 -0000
@@ -849,19 +849,21 @@ function menu_get_active_help() {
     // Don't return help text for areas the user cannot access.
     return;
   }
-  $path = ($item['type'] == MENU_DEFAULT_LOCAL_TASK) ? $item['tab_parent'] : $item['path'];
+  
+  // TODO: chx acknowledged both that node/% as the path to give to hook_help is a bug,
+  // AND this needs a traversing logic up to the top for multiple level default
+  // local tasks.
+  $menu_key = ($item['type'] == MENU_DEFAULT_LOCAL_TASK) ? $item['tab_parent'] : $item['path'];
 
   foreach (module_list() as $name) {
     if (module_hook($name, 'help')) {
-      if ($temp = module_invoke($name, 'help', $path)) {
-        $output .= $temp ."\n";
-      }
-      if (module_hook('help', 'page')) {
-        if (arg(0) == "admin") {
-          if (module_invoke($name, 'help', 'admin/help#'. arg(2)) && !empty($output)) {
-            $output .= theme("more_help_link", url('admin/help/'. arg(2)));
-          }
-        }
+      // Lookup help for this path.
+      if ($help = module_invoke($name, 'help', $_GET['q'], $menu_key)) {
+        $output .= $help ."\n";
+      }
+      // Add "more help" link on admin pages if the module provides a standalone help page.
+      if (module_hook('help', 'page') && arg(0) == "admin" && module_invoke($name, 'help', 'admin/help#'. arg(2)) && !empty($output)) {
+        $output .= theme("more_help_link", url('admin/help/'. arg(2)));
       }
     }
   }
Index: modules/aggregator/aggregator.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/aggregator/aggregator.module,v
retrieving revision 1.345
diff -u -p -r1.345 aggregator.module
--- modules/aggregator/aggregator.module	5 Jun 2007 12:13:21 -0000	1.345
+++ modules/aggregator/aggregator.module	23 Jun 2007 10:40:10 -0000
@@ -9,8 +9,8 @@
 /**
  * Implementation of hook_help().
  */
-function aggregator_help($section) {
-  switch ($section) {
+function aggregator_help($path, $menu_key = NULL) {
+  switch ($path) {
     case 'admin/help#aggregator':
       $output = '<p>'. t('The news aggregator is a powerful on-site RSS syndicator/news reader that can gather fresh content from news sites and weblogs around the web.') .'</p>';
       $output .= '<p>'. t('Users can view the latest news chronologically in the <a href="@aggregator">main news aggregator display</a> or by <a href="@aggregator-sources">source</a>. Administrators can add, edit and delete feeds and choose how often to check for newly updated news for each individual feed. Administrators can also tag individual feeds with categories, offering selective grouping of some feeds into separate displays. Listings of the latest news for individual sources or categorized sources can be enabled as blocks for display in the sidebar through the <a href="@admin-block">block administration page</a>. The news aggregator requires cron to check for the latest news from the sites to which you have subscribed. Drupal also provides a <a href="@aggregator-opml">machine-readable OPML file</a> of all of your subscribed feeds.', array('@aggregator' => url('aggregator'), '@aggregator-sources' => url('aggregator/sources'), '@admin-block' => url('admin/build/block'), '@aggregator-opml' => url('aggregator/opml'))) .'</p>';
Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.266
diff -u -p -r1.266 block.module
--- modules/block/block.module	22 Jun 2007 08:32:26 -0000	1.266
+++ modules/block/block.module	23 Jun 2007 10:40:11 -0000
@@ -15,8 +15,8 @@ define('BLOCK_REGION_NONE', -1);
 /**
  * Implementation of hook_help().
  */
-function block_help($section) {
-  switch ($section) {
+function block_help($path, $menu_key = NULL) {
+  switch ($path) {
     case 'admin/help#block':
       $output = '<p>'. t('Blocks are boxes of content that may be rendered into certain regions of your web pages, for example, into sidebars. Blocks are usually generated automatically by modules (e.g., Recent Forum Topics), but administrators can also define custom blocks.') .'</p>';
       $output .= '<p>'. t('The region each block appears in depends on both which theme you are using (some themes allow greater control over block placement than others), and on the settings in the block administration section.') .'</p>';
