Merge branch 'master' of gitlab.com:jankstudio1/catalyst-2/menu-bundle
Conflicts: Service/Generator.php
This commit is contained in:
commit
22cf20accb
2 changed files with 57 additions and 4 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue