Skip to content

Commit

Permalink
CALAIS-67 Fix parent list when an item is edited (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexBDev authored and benjamin-hubert committed May 13, 2016
1 parent c5c02e9 commit ef689bc
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 15 deletions.
61 changes: 46 additions & 15 deletions Controller/Admin/CRUD/ItemAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,27 @@ protected function configureFormFields(FormMapper $formMapper)
{
$subject = $this->getSubject();
$isNew = ($this->id($subject) === null) ? true : false;
$request = $this->getRequest();

if ($isNew === true) {
$idMenu = $this->getRequest()->query->getInt('create-menu');
$idItem = $this->getRequest()->query->getInt('create-item');
} else {
$idMenu = $subject->getMenu()->getId();
$idItem = ($subject->getParent() !== null) ? $subject->getParent()->getId() : 0;
$idItem = null;
$idMenu = null;
if($request->query->has('uniqid')) {
$formId = $request->query->get('uniqid');
if ($request->request->has($formId)) {
$formData = $request->request->get($formId);
$idMenu = $formData['create-menu'];
$idItem = $formData['create-item'];
}
}

if ($idMenu === null && $idItem === null) {
if ($isNew === true) {
$idMenu = $this->getRequest()->query->get('create-menu');
$idItem = $this->getRequest()->query->get('create-item');
} else {
$idMenu = $subject->getMenu()->getId();
$idItem = ($subject->getParent() !== null) ? $subject->getParent()->getId() : null;
}
}

$formMapper
Expand All @@ -98,7 +112,7 @@ protected function configureFormFields(FormMapper $formMapper)
'property' => 'name',
'query_builder' => function (EntityRepository $entityRepository) use ($idMenu) {
$query = $entityRepository->createQuerybuilder('m');
if ($idMenu === 0) {
if ($idMenu === null) {
return $query;
}

Expand All @@ -108,20 +122,27 @@ protected function configureFormFields(FormMapper $formMapper)
},
]);

if ($idItem === 0 && $idMenu === 0 || $isNew === false && $subject->getParent() !== null || $isNew === true && $idItem > 0) {
if ($idItem != null) {
$pool = $this->getConfigurationPool();
$doctrine = $pool->getContainer()->get('doctrine.orm.default_entity_manager');
$parentItem = $doctrine->getRepository('AlpixelMenuBundle:Item')->find($idItem);

$formMapper->add('parent', null, [
'label' => 'Item parent',
'required' => true,
'property' => 'name',
'query_builder' => function (EntityRepository $entityRepository) use ($idItem) {
$query = $entityRepository->createQuerybuilder('i');
if ($idItem === 0) {
return $query;
'data' => $parentItem,
'query_builder' => function (EntityRepository $repository) use ($parentItem) {
$qb = $repository->createQueryBuilder('i');

if ($parentItem->getParent() === null) {
return $qb->where('i.parent IS NULL')
->andWhere('i.menu = :id')
->setParameter('id', $parentItem->getMenu());
}

return $query
->where('i.id = :id')
->setParameter('id', $idItem);
return $qb->where('i.id IN (:ids)')
->setParameter('ids', $parentItem->getParent()->getChildren());
},
]);
}
Expand All @@ -134,6 +155,16 @@ protected function configureFormFields(FormMapper $formMapper)
->add('uri', 'text', [
'label' => 'URI',
'required' => true,
])
->add('create-menu', 'hidden', [
'required' => false,
'data' => $idMenu,
'mapped' => false,
])
->add('create-item', 'hidden', [
'required' => false,
'data' => $idItem,
'mapped' => false,
]);
}

Expand Down
1 change: 1 addition & 0 deletions Entity/Repository/ItemRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace Alpixel\Bundle\MenuBundle\Entity\Repository;

use Alpixel\Bundle\MenuBundle\Entity\Item;
use Alpixel\Bundle\MenuBundle\Entity\Menu;
use Doctrine\ORM\EntityRepository;

Expand Down

0 comments on commit ef689bc

Please sign in to comment.