/**
  * @param \FSi\Bundle\AdminBundle\Event\MenuEvent $event
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $menu
  * @param \FSi\Bundle\AdminBundle\Menu\Item\ElementItem $childItem1
  * @param \FSi\Bundle\AdminBundle\Menu\Item\RoutableItem $childItem2
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem3
  * @param \FSi\Bundle\AdminBundle\Menu\Item\RoutableItem $childItem31
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem4
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem41
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childItem411
  */
 public function it_remove_empty_menus($event, $menu, $childItem1, $childItem2, $childItem3, $childItem31, $childItem4, $childItem41, $childItem411)
 {
     $event->getMenu()->willReturn($menu);
     $menu->hasChildren()->willReturn(true);
     $childItem3->getName()->willReturn('item3');
     $childItem3->hasChildren()->willReturn(true);
     $childItem3->getChildren()->willReturn([$childItem31]);
     $childItem4->getName()->willReturn('item4');
     $childItem4->hasChildren()->willReturn(false);
     //after cleanup of item41
     $childItem4->getChildren()->willReturn([$childItem41]);
     $menu->removeChild('item4')->shouldBeCalled();
     $childItem41->getName()->willReturn('item41');
     $childItem41->hasChildren()->willReturn(false);
     //after cleanup of item411
     $childItem41->getChildren()->willReturn([$childItem411]);
     $childItem411->getName()->willReturn('item411');
     $childItem411->hasChildren()->willReturn(false);
     $menu->getChildren()->willReturn([$childItem1, $childItem2, $childItem3, $childItem4]);
     $this->cleanUpMenu($event);
 }
예제 #2
0
 /**
  * @param \Knp\Menu\FactoryInterface $factory
  * @param \Knp\Menu\ItemInterface $knpRootItem
  * @param \Knp\Menu\ItemInterface $knpFirstItem
  * @param \Knp\Menu\ItemInterface $knpSecondItem
  * @param \Knp\Menu\ItemInterface $knpChildOfSecondItem
  * @param \FSi\Bundle\AdminBundle\Menu\KnpMenu\ItemDecorator $itemDecorator
  * @param \FSi\Bundle\AdminBundle\Menu\Builder\Builder $builder
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $rootItem
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $firstItem
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $secondItem
  * @param \FSi\Bundle\AdminBundle\Menu\Item\Item $childOfSecondItem
  */
 function it_builds_knp_menu_and_decorates_items($factory, $knpRootItem, $knpFirstItem, $knpSecondItem, $knpChildOfSecondItem, $itemDecorator, $builder, $rootItem, $firstItem, $secondItem, $childOfSecondItem)
 {
     $builder->buildMenu()->willReturn($rootItem);
     $firstItem->getName()->willReturn('first item');
     $firstItem->hasChildren()->willReturn(false);
     $secondItem->getName()->willReturn('second item');
     $secondItem->hasChildren()->willReturn(true);
     $childOfSecondItem->getName()->willReturn('child of second item');
     $childOfSecondItem->hasChildren()->willReturn(false);
     $rootItem->getChildren()->willReturn(array($firstItem, $secondItem));
     $secondItem->getChildren()->willReturn(array($childOfSecondItem));
     $rootItem->getOption('attr')->willReturn(array('id' => null, 'class' => 'some class'));
     $factory->createItem('root')->willReturn($knpRootItem);
     $knpRootItem->addChild('first item', array())->willReturn($knpFirstItem);
     $knpRootItem->addChild('second item', array())->willReturn($knpSecondItem);
     $knpSecondItem->addChild('child of second item', array())->willReturn($knpChildOfSecondItem);
     $knpRootItem->setChildrenAttribute('id', null)->shouldBeCalled();
     $knpRootItem->setChildrenAttribute('class', 'some class')->shouldBeCalled();
     $itemDecorator->decorate($knpFirstItem, $firstItem)->shouldBeCalled();
     $itemDecorator->decorate($knpSecondItem, $secondItem)->shouldBeCalled();
     $itemDecorator->decorate($knpChildOfSecondItem, $childOfSecondItem)->shouldBeCalled();
     $this->createMenu($builder);
 }
예제 #3
0
파일: Item.php 프로젝트: kbedn/admin-bundle
 /**
  * @param Item $item
  */
 public function addChild(Item $item)
 {
     $this->children[$item->getName()] = $item;
 }