diff --git a/includes/menu.inc b/includes/menu.inc
index d1aa3372c64..53f1d208507 100644
--- a/includes/menu.inc
+++ b/includes/menu.inc
@@ -420,10 +420,16 @@ function menu_get_active_help() {
return;
}
- $return = module_invoke_all('help', $path);
- foreach ($return as $item) {
- if (!empty($item)) {
- $output .= $item ."\n";
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ if ($temp = module_invoke($name, 'help', $path)) {
+ $output .= $temp . "\n";
+ }
+ if (substr($path, 0, 6) == "admin/") {
+ if (module_invoke($name, 'help', 'admin/help#' . substr($path, 6))) {
+ $output .= theme("more_help_link", url('admin/help/' . substr($path, 6)));
+ }
+ }
}
}
return $output;
diff --git a/includes/theme.inc b/includes/theme.inc
index 36181fac07b..f74700c5afc 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -516,6 +516,10 @@ function theme_error($message) {
return '
'. $message .'
';
}
+function theme_more_help_link($url) {
+ return '
';
+}
+
/**
* Return code that emits an XML icon.
*/
diff --git a/misc/drupal.css b/misc/drupal.css
index f733bd23855..4ca9f0c359e 100644
--- a/misc/drupal.css
+++ b/misc/drupal.css
@@ -377,6 +377,10 @@ tr.light .form-item, tr.dark .form-item {
.user-login-block {
text-align: center;
}
+.more-help-link {
+ font-size: 0.85em;
+ text-align: right;
+}
tr td.watchdog-user {
background: #ffd;
}
diff --git a/modules/help.module b/modules/help.module
index f386c177ab3..200bea791bc 100644
--- a/modules/help.module
+++ b/modules/help.module
@@ -6,22 +6,35 @@
*/
function help_menu() {
$items = array();
- $items[] = array('path' => 'admin/help/glossary', 'title' => t('glossary'),
- 'callback' => 'help_glossary',
- 'access' => user_access('access administration pages'));
$items[] = array('path' => 'admin/help', 'title' => t('help'),
- 'callback' => 'help_page',
+ 'callback' => 'help_main',
'access' => user_access('access administration pages'),
'weight' => 9);
+
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ if (module_invoke($name, 'help', "admin/help#$name")) {
+ $items[] = array('path' => 'admin/help/' . $name,
+ 'title' => t($name),
+ 'callback' => 'help_page',
+ 'access' => user_access('access administration pages'));
+ }
+ }
+ }
return $items;
}
/**
* Menu callback; prints a page listing a glossary of Drupal terminology.
*/
-function help_glossary() {
+function help_main() {
$output = t("
- Glossary
+ This guide explains what the various modules in Drupal do and how to configure them.
+ It is not a substitute for the Drupal handbook available online and should be used in conjunction with it. The online reference handbook might be more up-to-date and has helpful user-contributed comments. It is your definitive reference point for all Drupal documentation.
+ Help topics
+ Help is available on the following items:
+ %help_pages
+ Glossary of Drupal Terminology
- Block
- A small box containing information or content placed in the left-hand or right-hand sidebar of a web page.
- Comment
- A note attached to a node. Usually intended to clarify, explain, criticize, or express an opinion on the original material.
- Moderation
- The activity of making sure a post to a Drupal site fits in with what is expected for that Drupal site.
@@ -36,11 +49,24 @@ function help_glossary() {
- Unpublished
- A node that is only viewable by administrators and moderators.
- User
- A person who has an account at your Drupal site, and is logged in with that account.
- Visitor
- A person who does not have an account at your Drupal site or a person who has an account at your Drupal site but is not logged in with that account. Also termed \"anonymous user\".
-
", array('%taxonomy' => url('admin/taxonomy/help')));
+
", array('%Drupal' => 'http://drupal.org', '%handbook' => 'http://drupal.org/handbook', '%help_pages' => help_links_as_list(), '%taxonomy' => url('admin/taxonomy/help')));
print theme('page', $output);
}
+function help_links_as_list() {
+ $output = '';
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ if (module_invoke($name, 'help', "admin/help#$name")) {
+ $output .= '- ' . t("$name", array('%url' => url("admin/help/$name"))) . '
';
+ }
+ }
+ }
+ $output .= '
';
+ return $output;
+}
+
/**
* Implementation of hook_help().
*/
@@ -55,17 +81,13 @@ function help_help($section) {
* Menu callback; prints a page listing general help for all modules.
*/
function help_page() {
- foreach (module_list() as $name) {
- if (module_hook($name, 'help')) {
- $temp = module_invoke($name, 'help', "admin/help#$name");
- if (!empty($temp)) {
- $links[] = l($name, "admin/help#$name");
- $output .= "';
- $output .= $temp;
- }
+ $name = arg(2);
+ if (module_hook($name, 'help')) {
+ $temp = module_invoke($name, 'help', "admin/help#$name");
+ if (!empty($temp)) {
+ $output .= $temp;
}
}
- $output = ''. implode(' · ', $links) .'
'. $output;
print theme('page', $output);
}
diff --git a/modules/help/help.module b/modules/help/help.module
index f386c177ab3..200bea791bc 100644
--- a/modules/help/help.module
+++ b/modules/help/help.module
@@ -6,22 +6,35 @@
*/
function help_menu() {
$items = array();
- $items[] = array('path' => 'admin/help/glossary', 'title' => t('glossary'),
- 'callback' => 'help_glossary',
- 'access' => user_access('access administration pages'));
$items[] = array('path' => 'admin/help', 'title' => t('help'),
- 'callback' => 'help_page',
+ 'callback' => 'help_main',
'access' => user_access('access administration pages'),
'weight' => 9);
+
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ if (module_invoke($name, 'help', "admin/help#$name")) {
+ $items[] = array('path' => 'admin/help/' . $name,
+ 'title' => t($name),
+ 'callback' => 'help_page',
+ 'access' => user_access('access administration pages'));
+ }
+ }
+ }
return $items;
}
/**
* Menu callback; prints a page listing a glossary of Drupal terminology.
*/
-function help_glossary() {
+function help_main() {
$output = t("
- Glossary
+ This guide explains what the various modules in Drupal do and how to configure them.
+ It is not a substitute for the Drupal handbook available online and should be used in conjunction with it. The online reference handbook might be more up-to-date and has helpful user-contributed comments. It is your definitive reference point for all Drupal documentation.
+ Help topics
+ Help is available on the following items:
+ %help_pages
+ Glossary of Drupal Terminology
- Block
- A small box containing information or content placed in the left-hand or right-hand sidebar of a web page.
- Comment
- A note attached to a node. Usually intended to clarify, explain, criticize, or express an opinion on the original material.
- Moderation
- The activity of making sure a post to a Drupal site fits in with what is expected for that Drupal site.
@@ -36,11 +49,24 @@ function help_glossary() {
- Unpublished
- A node that is only viewable by administrators and moderators.
- User
- A person who has an account at your Drupal site, and is logged in with that account.
- Visitor
- A person who does not have an account at your Drupal site or a person who has an account at your Drupal site but is not logged in with that account. Also termed \"anonymous user\".
-
", array('%taxonomy' => url('admin/taxonomy/help')));
+
", array('%Drupal' => 'http://drupal.org', '%handbook' => 'http://drupal.org/handbook', '%help_pages' => help_links_as_list(), '%taxonomy' => url('admin/taxonomy/help')));
print theme('page', $output);
}
+function help_links_as_list() {
+ $output = '';
+ foreach (module_list() as $name) {
+ if (module_hook($name, 'help')) {
+ if (module_invoke($name, 'help', "admin/help#$name")) {
+ $output .= '- ' . t("$name", array('%url' => url("admin/help/$name"))) . '
';
+ }
+ }
+ }
+ $output .= '
';
+ return $output;
+}
+
/**
* Implementation of hook_help().
*/
@@ -55,17 +81,13 @@ function help_help($section) {
* Menu callback; prints a page listing general help for all modules.
*/
function help_page() {
- foreach (module_list() as $name) {
- if (module_hook($name, 'help')) {
- $temp = module_invoke($name, 'help', "admin/help#$name");
- if (!empty($temp)) {
- $links[] = l($name, "admin/help#$name");
- $output .= "';
- $output .= $temp;
- }
+ $name = arg(2);
+ if (module_hook($name, 'help')) {
+ $temp = module_invoke($name, 'help', "admin/help#$name");
+ if (!empty($temp)) {
+ $output .= $temp;
}
}
- $output = ''. implode(' · ', $links) .'
'. $output;
print theme('page', $output);
}