/**
  * @param Menu $menu
  * @return array
  */
 public function menuTopLevelItems(Menu $menu)
 {
     $items = [];
     /** @var MenuItem $item */
     foreach ($menu->getItems() as $item) {
         if (!$item->getParent()) {
             $items[] = $item;
         }
     }
     return $items;
 }
 public function orderSortable(Menu $menu, array $array)
 {
     $map = [];
     /** @var MenuItem $item */
     foreach ($menu->getItems() as $item) {
         $map[$item->getId()] = $item;
     }
     foreach ($array as $ord => $order) {
         $this->_orderSortable($map, $order, $ord);
     }
     $this->manager->save($menu);
 }
 public function chooseRouteAction(Menu $menu, $parentId, Request $request)
 {
     $item = new MenuItem();
     $form = $this->createForm(RouteChoiceType::class, $item);
     $form->handleRequest($request);
     if ($form->isValid()) {
         return $this->redirectToRoute('wucdbm_menu_builder_client_menu_item_add', ['id' => $menu->getId(), 'routeId' => $item->getRoute()->getId(), 'parentId' => $parentId]);
     }
     $data = ['menu' => $menu, 'parentId' => $parentId, 'form' => $form->createView()];
     if ($request->isXmlHttpRequest()) {
         return $this->json(['mfp' => $this->renderView('@WucdbmMenuBuilderClient/Menu/Item/route_choice/choose_popup.html.twig', $data)]);
     }
     return $this->render('@WucdbmMenuBuilderClient/Menu/Item/route_choice/choose.html.twig', $data);
 }
 public function remove(Menu $menu)
 {
     $em = $this->getEntityManager();
     $conn = $em->getConnection();
     $conn->beginTransaction();
     try {
         foreach ($menu->getItems() as $item) {
             foreach ($item->getParameters() as $parameter) {
                 $em->remove($parameter);
             }
             $em->remove($item);
         }
         $em->remove($menu);
         $em->flush();
         $conn->commit();
     } catch (\Exception $e) {
         $conn->rollBack();
         throw $e;
     }
 }
 public function removeAction(Menu $menu, Request $request)
 {
     if ($request->isXmlHttpRequest()) {
         if ($menu->getIsSystem()) {
             return $this->json(['witter' => ['title' => sprintf('Failed removing %s', $menu->getName()), 'text' => sprintf('You can not delete "%s" because it is a System menu and doing so will break the application.', $menu->getName())]]);
         }
         $isConfirmed = $request->request->get('is_confirmed');
         if ($isConfirmed) {
             $menuRepository = $this->container->get('wucdbm_menu_builder.repo.menus');
             $menuRepository->remove($menu);
             return $this->json(['redirect' => $this->generateUrl('wucdbm_menu_builder_client_menu_list')]);
         }
         return $this->json(['witter' => ['title' => 'You must confirm this action', 'text' => 'You must confirm first in order to delete this Menu']]);
     }
     $referer = $request->headers->get('Referer');
     if ($referer) {
         return $this->redirect($referer);
     }
     return $this->redirectToRoute('wucdbm_menu_builder_client_menu_list');
 }