Skip to content

Commit 2eddaf4

Browse files
authored
[5.4] Convert mod_menu to service provider (joomla#45687)
1 parent e10a351 commit 2eddaf4

File tree

5 files changed

+87
-26
lines changed

5 files changed

+87
-26
lines changed

administrator/modules/mod_menu/mod_menu.php

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

administrator/modules/mod_menu/mod_menu.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<description>MOD_MENU_XML_DESCRIPTION</description>
1212
<namespace path="src">Joomla\Module\Menu</namespace>
1313
<files>
14-
<filename module="mod_menu">mod_menu.php</filename>
14+
<folder module="mod_menu">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_menu
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 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\\Menu'));
36+
37+
$container->registerServiceProvider(new Module());
38+
}
39+
};
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
/**
4+
* @package Joomla.Administrator
5+
* @subpackage mod_menu
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\Menu\Administrator\Dispatcher;
12+
13+
use Joomla\CMS\Dispatcher\AbstractModuleDispatcher;
14+
use Joomla\Module\Menu\Administrator\Menu\CssMenu;
15+
16+
// phpcs:disable PSR1.Files.SideEffects
17+
\defined('_JEXEC') or die;
18+
// phpcs:enable PSR1.Files.SideEffects
19+
20+
/**
21+
* Dispatcher class for mod_menu
22+
*
23+
* @since __DEPLOY_VERSION__
24+
*/
25+
class Dispatcher extends AbstractModuleDispatcher
26+
{
27+
/**
28+
* Returns the layout data.
29+
*
30+
* @return array
31+
*
32+
* @since __DEPLOY_VERSION__
33+
*/
34+
protected function getLayoutData()
35+
{
36+
$data = parent::getLayoutData();
37+
38+
$data['enabled'] = !$data['app']->getInput()->getBool('hidemainmenu');
39+
40+
$data['menu'] = new CssMenu($data['app']);
41+
$data['root'] = $data['menu']->load($data['params'], $data['enabled']);
42+
$data['root']->level = 0;
43+
44+
return $data;
45+
}
46+
}

administrator/modules/mod_menu/src/Menu/CssMenu.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
use Joomla\CMS\Language\Associations;
1717
use Joomla\CMS\Language\Text;
1818
use Joomla\CMS\Menu\AdministratorMenuItem;
19-
use Joomla\CMS\Table\Table;
2019
use Joomla\CMS\Uri\Uri;
2120
use Joomla\Component\Menus\Administrator\Helper\MenusHelper;
2221
use Joomla\Registry\Registry;
@@ -231,7 +230,7 @@ protected function check($node, Registry $params)
231230
$uri = clone Uri::getInstance();
232231
$uri->setVar('recover_menu', 1);
233232

234-
$table = Table::getInstance('MenuType');
233+
$table = $this->application->bootComponent('com_menu')->getMVCFactory()->createTable('MenuType');
235234
$menutype = $params->get('menutype');
236235

237236
$table->load(['menutype' => $menutype]);

0 commit comments

Comments
 (0)