[FEATURE] Refactor AdminPanel API to use composition
[Packages/TYPO3.CMS.git] / typo3 / sysext / adminpanel / Classes / ModuleApi / SubmoduleProviderInterface.php
1 <?php
2 declare(strict_types = 1);
3
4 namespace TYPO3\CMS\Adminpanel\ModuleApi;
5
6 /*
7 * This file is part of the TYPO3 CMS project.
8 *
9 * It is free software; you can redistribute it and/or modify it under
10 * the terms of the GNU General Public License, either version 2
11 * of the License, or any later version.
12 *
13 * For the full copyright and license information, please read the
14 * LICENSE.txt file that was distributed with this source code.
15 *
16 * The TYPO3 project - inspiring people to share!
17 */
18
19 /**
20 * Adminpanel interface providing hierarchical functionality for modules
21 *
22 * A module implementing this interface may have submodules. Be aware that the current implementation of the adminpanel
23 * renders a maximum level of 2 for modules. If you need to render more levels, write your own module and implement
24 * multi-hierarchical rendering in the getContent method
25 *
26 * @see \TYPO3\CMS\Adminpanel\ModuleApi\ContentProviderInterface::getContent()
27 */
28 interface SubmoduleProviderInterface
29 {
30 /**
31 * Sets array of module instances (instances of `ModuleInterface`) as submodules
32 *
33 * @param \TYPO3\CMS\Adminpanel\ModuleApi\ModuleInterface[] $subModules
34 */
35 public function setSubModules(array $subModules): void;
36
37 /**
38 * Returns an array of module instances
39 *
40 * @return \TYPO3\CMS\Adminpanel\ModuleApi\ModuleInterface[]
41 */
42 public function getSubModules(): array;
43
44 /**
45 * Return true if any of the submodules has settings to be rendered
46 * (can be used to render settings in a central place)
47 *
48 * @return bool
49 */
50 public function hasSubmoduleSettings(): bool;
51 }