Skip to content

Commit 4db0b99

Browse files
authored
[5.4] Convert administrator mod_submenu to service provider (joomla#45852)
* mod_submenu converted to service provider
1 parent 928eaea commit 4db0b99

File tree

5 files changed

+103
-42
lines changed

5 files changed

+103
-42
lines changed

administrator/modules/mod_submenu/mod_submenu.php

Lines changed: 0 additions & 40 deletions
This file was deleted.

administrator/modules/mod_submenu/mod_submenu.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<description>MOD_SUBMENU_XML_DESCRIPTION</description>
1212
<namespace path="src">Joomla\Module\Submenu</namespace>
1313
<files>
14-
<filename module="mod_submenu">mod_submenu.php</filename>
14+
<folder module="mod_submenu">services</folder>
1515
<folder>src</folder>
1616
<folder>tmpl</folder>
1717
</files>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
/**
4+
* @package Joomla.Administrator
5+
* @subpackage mod_submenu
6+
*
7+
* @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org>
8+
* @license GNU General Public License version 2 or later; see LICENSE.txt
9+
*/
10+
11+
\defined('_JEXEC') or die;
12+
13+
use Joomla\CMS\Extension\Service\Provider\Module;
14+
use Joomla\CMS\Extension\Service\Provider\ModuleDispatcherFactory;
15+
use Joomla\DI\Container;
16+
use Joomla\DI\ServiceProviderInterface;
17+
18+
/**
19+
* The administrator dashboard menu module service provider.
20+
*
21+
* @since __DEPLOY_VERSION__
22+
*/
23+
return new class () implements ServiceProviderInterface {
24+
/**
25+
* Registers the service provider with a DI container.
26+
*
27+
* @param Container $container The DI container.
28+
*
29+
* @return void
30+
*
31+
* @since __DEPLOY_VERSION__
32+
*/
33+
public function register(Container $container)
34+
{
35+
$container->registerServiceProvider(new ModuleDispatcherFactory('\\Joomla\\Module\\Submenu'));
36+
37+
$container->registerServiceProvider(new Module());
38+
}
39+
};
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
/**
4+
* @package Joomla.Administrator
5+
* @subpackage mod_submenu
6+
*
7+
* @copyright (C) 2025 Open Source Matters, Inc. <https://www.joomla.org>
8+
* @license GNU General Public License version 2 or later; see LICENSE.txt
9+
*/
10+
11+
namespace Joomla\Module\Submenu\Administrator\Dispatcher;
12+
13+
use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
14+
use Joomla\Component\Menus\Administrator\Helper\MenusHelper;
15+
use Joomla\Module\Submenu\Administrator\Menu\Menu;
16+
17+
// phpcs:disable PSR1.Files.SideEffects
18+
\defined('_JEXEC') or die;
19+
// phpcs:enable PSR1.Files.SideEffects
20+
21+
/**
22+
* Dispatcher class for mod_submenu
23+
*
24+
* @since __DEPLOY_VERSION__
25+
*/
26+
class Dispatcher extends AbstractModuleDispatcher
27+
{
28+
/**
29+
* Returns the layout data.
30+
*
31+
* @return array
32+
*
33+
* @since __DEPLOY_VERSION__
34+
*/
35+
protected function getLayoutData()
36+
{
37+
$data = parent::getLayoutData();
38+
39+
$menutype = $data['params']->get('menutype', '*');
40+
$data['root'] = false;
41+
42+
if ($menutype === '*') {
43+
$name = $data['params']->get('preset', 'system');
44+
$data['root'] = MenusHelper::loadPreset($name);
45+
} else {
46+
$data['root'] = MenusHelper::getMenuItems($menutype, true);
47+
}
48+
49+
if ($data['root'] && $data['root']->hasChildren()) {
50+
$data['app']->getLanguage()->load(
51+
'mod_menu',
52+
JPATH_ADMINISTRATOR,
53+
$data['app']->getLanguage()->getTag(),
54+
true
55+
);
56+
57+
Menu::preprocess($data['root']);
58+
}
59+
60+
return $data;
61+
}
62+
}

administrator/modules/mod_submenu/src/Menu/Menu.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static function preprocess($parent)
4545
$app = Factory::getApplication();
4646
$user = $app->getIdentity();
4747
$children = $parent->getChildren();
48-
$language = Factory::getLanguage();
48+
$language = $app->getLanguage();
4949
$dispatcher = $app->getDispatcher();
5050

5151
/**

0 commit comments

Comments
 (0)