toString();
$module_handler = \Drupal::moduleHandler();
$locale_help = ($module_handler->moduleExists('locale')) ? Url::fromRoute('help.page', ['name' => 'locale'])->toString() : '#';
$search_help = ($module_handler->moduleExists('search')) ? Url::fromRoute('help.page', ['name' => 'search'])->toString() : '#';
$output = '';
$output .= '
' . t('About') . '
';
$output .= '' . t('The Help Topics module adds module- and theme-provided help topics to the module overviews from the core Help module. If the core Search module is enabled, these topics are also searchable. For more information, see the online documentation for the Help Topics module.', [':online' => 'https://www.drupal.org/documentation/modules/help_topics']) . '
';
$output .= '' . t('Uses') . '
';
$output .= '';
$output .= '- ' . t('Viewing help topics') . '
';
$output .= '- ' . t('The top-level help topics are listed on the main Help page. Links to other topics, including non-top-level help topics, can be found under the "Related" heading when viewing a topic page.', [':help_page' => $help_home]) . '
';
$output .= '- ' . t('Providing help topics') . '
';
$output .= '- ' . t("Modules and themes can provide help topics as Twig-file-based plugins in a project sub-directory called help_topics; plugin meta-data is provided in YAML front matter within each Twig file. Plugin-based help topics provided by modules and themes will automatically be updated when a module or theme is updated. Use the plugins in core/modules/help_topics/help_topics as a guide when writing and formatting a help topic plugin for your theme or module.") . '
';
$output .= '- ' . t('Translating help topics') . '
';
$output .= '- ' . t('The title and body text of help topics provided by contributed modules and themes are translatable using the Interface Translation module. Topics provided by custom modules and themes are also translatable if they have been viewed at least once in a non-English language, which triggers putting their translatable text into the translation database.', [':locale_help' => $locale_help]) . '
';
$output .= '- ' . t('Configuring help search') . '
';
$output .= '- ' . t('To search help, you will need to install the core Search module, configure a search page, and add a search block to the Help page or another administrative page. (A search page is provided automatically, and if you use the core Seven administrative theme, a help search block is shown on the main Help page.) Then users with search permissions, and permission to view help, will be able to search help. See the Search module help page for more information.', [':search_help' => $search_help]) . '
';
$output .= '
';
return ['#markup' => $output];
case 'help.help_topic':
$help_home = Url::fromRoute('help.main')->toString();
return '' . t('See the Help page for more topics.', [
':help_page' => $help_home,
]) . '
';
}
}
/**
* Implements hook_theme().
*/
function help_topics_theme() {
return [
'help_topic' => [
'variables' => [
'body' => [],
'related' => [],
],
],
];
}
/**
* Implements hook_modules_uninstalled().
*/
function help_topics_modules_uninstalled(array $modules) {
// Early return if search is not installed or if we're uninstalling this
// module.
if (!\Drupal::hasService('plugin.manager.search') ||
in_array('help_topics', $modules)) {
return;
}
$search_plugin_manager = \Drupal::service('plugin.manager.search');
if ($search_plugin_manager->hasDefinition('help_search')) {
// Ensure that topics for extensions that have been uninstalled are removed.
$help_search = $search_plugin_manager->createInstance('help_search');
$help_search->updateTopicList();
}
}
/**
* Implements hook_themes_uninstalled().
*/
function help_topics_themes_uninstalled(array $themes) {
// Use the same code as module uninstall to ensure that theme help is removed
// when a theme is uninstalled.
help_topics_modules_uninstalled([]);
}