Merge branch 'master' of gitlab.com:jankstudio1/catalyst-2/menu-bundle

Conflicts:
	Service/Generator.php
This commit is contained in:
Kendrick Chan 2020-04-05 10:40:03 +08:00
commit 22cf20accb
2 changed files with 57 additions and 4 deletions

View file

@ -7,8 +7,14 @@ use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\Config\FileLocator;
use Catalyst\MenuBundle\Menu\Collection;
use Catalyst\MenuBundle\Menu\Item;
class CatalystMenuExtension extends Extension
{
const ORDER_DEFAULT = 100;
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader(
@ -21,10 +27,57 @@ class CatalystMenuExtension extends Extension
// will break across multiple configuration files.
// Issue can be found here: https://github.com/symfony/symfony/issues/29817
// $data = $this->processConfigs($configs);
$data = $this->processConfigs($configs);
// set acl data for main acl generator
$def = $container->getDefinition('catalyst_menu.generator');
$def->replaceArgument('$menu_data', $configs);
// $def->replaceArgument('$menu_data', $configs);
$def->replaceArgument('$menu_data', $data);
}
protected function processConfigs($data)
{
$pdata = [];
// error_log(print_r($data, true));
// manual array merge
// first layer contains all the instances in config
foreach ($data as $instance_data)
{
// 2nd layer are the groups and the parents
foreach ($instance_data as $group => $group_data)
{
// initialize group data
if (!isset($pdata[$group]))
$pdata[$group] = $group_data;
else
{
// append to group data
foreach ($group_data as $menu_data)
$pdata[$group][] = $menu_data;
}
}
}
// sort group data according to display priority
foreach ($pdata as $group => $group_data)
{
usort($pdata[$group], function($a, $b) {
if (isset($a['order']))
$a_order = $a['order'];
else
$a_order = self::ORDER_DEFAULT;
if (isset($b['order']))
$b_order = $b['order'];
else
$b_order = self::ORDER_DEFAULT;
return $a_order - $b_order;
});
}
return $pdata;
}
}

View file

@ -40,7 +40,7 @@ class Generator
{
$pdata = [];
error_log(print_r($data, true));
// TODO: cache this
// error_log(print_r($data, true));
@ -111,7 +111,7 @@ class Generator
}
}
error_log(print_r($pdata, true));
// error_log(print_r($pdata, true));
return $pdata;
}