annotate core/modules/help/src/Plugin/HelpSection/HookHelpSection.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Drupal\help\Plugin\HelpSection;
Chris@0 4
Chris@0 5 use Drupal\Core\Extension\ModuleHandlerInterface;
Chris@0 6 use Drupal\Core\Link;
Chris@0 7 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
Chris@0 8 use Symfony\Component\DependencyInjection\ContainerInterface;
Chris@0 9
Chris@0 10 /**
Chris@0 11 * Provides the module topics list section for the help page.
Chris@0 12 *
Chris@0 13 * @HelpSection(
Chris@0 14 * id = "hook_help",
Chris@0 15 * title = @Translation("Module overviews"),
Chris@0 16 * description = @Translation("Module overviews are provided by modules. Overviews available for your installed modules:"),
Chris@0 17 * )
Chris@0 18 */
Chris@0 19 class HookHelpSection extends HelpSectionPluginBase implements ContainerFactoryPluginInterface {
Chris@0 20
Chris@0 21 /**
Chris@0 22 * The module handler.
Chris@0 23 *
Chris@0 24 * @var \Drupal\Core\Extension\ModuleHandlerInterface
Chris@0 25 */
Chris@0 26 protected $moduleHandler;
Chris@0 27
Chris@0 28 /**
Chris@0 29 * Constructs a HookHelpSection object.
Chris@0 30 *
Chris@0 31 * @param array $configuration
Chris@0 32 * A configuration array containing information about the plugin instance.
Chris@0 33 * @param string $plugin_id
Chris@0 34 * The plugin_id for the plugin instance.
Chris@0 35 * @param mixed $plugin_definition
Chris@0 36 * The plugin implementation definition.
Chris@0 37 * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
Chris@0 38 * The module handler service.
Chris@0 39 */
Chris@0 40 public function __construct(array $configuration, $plugin_id, $plugin_definition, ModuleHandlerInterface $module_handler) {
Chris@0 41 parent::__construct($configuration, $plugin_id, $plugin_definition);
Chris@0 42 $this->moduleHandler = $module_handler;
Chris@0 43 }
Chris@0 44
Chris@0 45 /**
Chris@0 46 * {@inheritdoc}
Chris@0 47 */
Chris@0 48 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
Chris@0 49 return new static(
Chris@0 50 $configuration,
Chris@0 51 $plugin_id,
Chris@0 52 $plugin_definition,
Chris@0 53 $container->get('module_handler')
Chris@0 54 );
Chris@0 55 }
Chris@0 56
Chris@0 57 /**
Chris@0 58 * {@inheritdoc}
Chris@0 59 */
Chris@0 60 public function listTopics() {
Chris@0 61 $topics = [];
Chris@0 62 foreach ($this->moduleHandler->getImplementations('help') as $module) {
Chris@0 63 $title = $this->moduleHandler->getName($module);
Chris@0 64 $topics[$title] = Link::createFromRoute($title, 'help.page', ['name' => $module]);
Chris@0 65 }
Chris@0 66
Chris@0 67 // Sort topics by title, which is the array key above.
Chris@0 68 ksort($topics);
Chris@0 69 return $topics;
Chris@0 70 }
Chris@0 71
Chris@0 72 }