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 }
|