Commit 5a31f62c authored by alexpott's avatar alexpott

Issue #1979030 by marcingy, dawehner: Convert help_page() to a Controller.

parent ce7ff5cd
<?php
/**
* @file
* Admin page callbacks for the help module.
*/
/**
* Page callback: Prints a page listing general help for a module.
*
* @param $name
* A module name to display a help page for.
*
* @see help_menu()
*/
function help_page($name) {
$output = '';
if (module_hook($name, 'help')) {
$info = system_get_info('module');
drupal_set_title($info[$name]['name']);
$temp = module_invoke($name, 'help', "admin/help#$name", drupal_help_arg());
if (empty($temp)) {
$output .= t("No help is available for module %module.", array('%module' => $info[$name]['name']));
}
else {
$output .= $temp;
}
// Only print list of administration pages if the module in question has
// any such pages associated to it.
$admin_tasks = system_get_module_admin_tasks($name, $info[$name]);
if (!empty($admin_tasks)) {
$links = array();
foreach ($admin_tasks as $task) {
$links[] = l($task['title'], $task['link_path'], $task['localized_options']);
}
$output .= theme('item_list', array('items' => $links, 'title' => t('@module administration pages', array('@module' => $info[$name]['name']))));
}
}
return $output;
}
......@@ -21,11 +21,8 @@ function help_menu() {
foreach ($modules as $module) {
$items['admin/help/' . $module] = array(
'title' => $module,
'page callback' => 'help_page',
'page arguments' => array(2),
'access arguments' => array('access administration pages'),
'route_name' => 'help_page',
'type' => MENU_VISIBLE_IN_BREADCRUMB,
'file' => 'help.admin.inc',
);
}
......
......@@ -4,3 +4,9 @@ help_main:
_content: '\Drupal\help\Controller\HelpController::helpMain'
requirements:
_permission: 'access administration pages'
help_page:
pattern: 'admin/help/{name}'
defaults:
_content: '\Drupal\help\Controller\HelpController::helpPage'
requirements:
_permission: 'access administration pages'
......@@ -87,4 +87,51 @@ protected function helpLinksAsList() {
return $output;
}
/**
* Prints a page listing general help for a module.
*
* @param string $name
* A module name to display a help page for.
*
* @return array
* A render array as expected by drupal_render().
*/
public function helpPage($name) {
$build = array();
if ($this->moduleHandler->implementsHook($name, 'help')) {
$info = system_get_info('module');
drupal_set_title($info[$name]['name']);
$temp = $this->moduleHandler->invoke($name, 'help', array("admin/help#$name", drupal_help_arg()));
if (empty($temp)) {
$build['top']['#markup'] = t('No help is available for module %module.', array('%module' => $info[$name]['name']));
}
else {
$build['top']['#markup'] = $temp;
}
// Only print list of administration pages if the module in question has
// any such pages associated to it.
$admin_tasks = system_get_module_admin_tasks($name, $info[$name]);
if (!empty($admin_tasks)) {
$links = array();
foreach ($admin_tasks as $task) {
$link = $task['localized_options'];
$link['href'] = $task['link_path'];
$link['title'] = $task['title'];
$links[] = $link;
}
$build['links']['#links'] = array(
'#heading' => array(
'level' => 'h3',
'text' => t('@module administration pages', array('@module' => $info[$name]['name'])),
),
'#links' => $links,
);
}
}
return $build;
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment