protected function setupObjects(array $bundleConfigs)
{
$objectsEntryPoint = $bundleConfigs['jarves']->getEntryPoint('object');
foreach ($bundleConfigs as $bundleConfig) {
/** @var EntryPoint[][] $objectEntryPoints */
$objectEntryPoints = [];
//read all entry points for each object
if ($bundleConfig->getAllEntryPoints()) {
foreach ($bundleConfig->getAllEntryPoints() as $entryPoint) {
if ($entryPoint->getObject()) {
$objectEntryPoints[$entryPoint->getObject()][$entryPoint->getType()] = $entryPoint;
}
}
}
$entryPointsForThisBundle = [];
if ($bundleConfig->getObjects()) {
foreach ($bundleConfig->getObjects() as $object) {
if (!isset($objectEntryPoints[$object->getKey()])) {
//this object does not have any entry point to manage.
if (!$object->getAutoCrud()) {
//jarves should not autobuild entry points
continue;
}
$entryPoint = new EntryPoint();
$entryPoint->setPath(lcfirst($object->getId()));
$entryPoint->setType('combine');
$entryPoint->setObject($object->getKey());
$entryPoint->setLink(true);
$entryPoint->setIcon('#' . ($object->isNested() ? 'icon-list-nested' : 'icon-list'));
$entryPoint->setLabel($object->getLabel() ?: $object->getKey());
$entryPointsForThisBundle[] = $entryPoint;
$objectEntryPoints[$entryPoint->getObject()][$entryPoint->getType()] = $entryPoint;
}
}
}
if ($entryPointsForThisBundle) {
//we added some autoCrud entry points
$bundleObjectContainerEntryPoint = new EntryPoint();
$bundleObjectContainerEntryPoint->setPath($bundleConfig->getName());
$bundleObjectContainerEntryPoint->setLink(true);
$bundleObjectContainerEntryPoint->setLabel($bundleConfig->getLabel() ?: $bundleConfig->getBundleName());
$objectsEntryPoint->addChildren($bundleObjectContainerEntryPoint);
foreach ($entryPointsForThisBundle as $entryPoint) {
$bundleObjectContainerEntryPoint->addChildren($entryPoint);
}
}
if ($bundleConfig->getObjects()) {
foreach ($bundleConfig->getObjects() as $object) {
//setup addEntrypoint, editEntrypoint, listEntrypoint if not set already
if (isset($objectEntryPoints[$object->getKey()]['combine'])) {
if (!$object->getAddEntryPoint()) {
$object->setAddEntryPoint($objectEntryPoints[$object->getKey()]['combine']->getFullPath());
}
if (!$object->getEditEntryPoint()) {
$object->setEditEntryPoint($objectEntryPoints[$object->getKey()]['combine']->getFullPath());
}
if (!$object->getListEntryPoint()) {
$object->setListEntryPoint($objectEntryPoints[$object->getKey()]['combine']->getFullPath());
}
}
if ($object->getAddEntryPoint() && isset($objectEntryPoints[$object->getKey()]['add'])) {
$object->setAddEntryPoint($objectEntryPoints[$object->getKey()]['add']->getFullPath());
}
if ($object->getEditEntryPoint() && isset($objectEntryPoints[$object->getKey()]['edit'])) {
$object->setEditEntryPoint($objectEntryPoints[$object->getKey()]['edit']->getFullPath());
}
if ($object->getListEntryPoint() && isset($objectEntryPoints[$object->getKey()]['list'])) {
$object->setListEntryPoint($objectEntryPoints[$object->getKey()]['list']->getFullPath());
}
}
}
}
}