/**
  * Retourne une vue de l'ensemble des Noeuds enregistrés 
  * (destiné à être appelé par un render)
  * @Template()
  */
 public function showAction($_locale)
 {
     /* Initialisation des repositories et du Manager */
     $em = $this->getDoctrine()->getEntityManager();
     $config = new Config($em, 'RNCMenuBundle:Item');
     $nsm = new Manager($config);
     /* Configuration du manager */
     $rep = $em->getRepository('RNCMenuBundle:Item');
     $qb = $rep->getTreeQB();
     $nsm->getConfiguration()->setBaseQueryBuilder($qb);
     /* Récupération des arbres */
     $roots = $rep->findAllRoots();
     $trees = array();
     foreach ($roots as $root) {
         $trees[$root->getId()] = $nsm->fetchTreeAsArray($root->getId());
     }
     return $this->render('RNCMenuBundle:Menu:show.html.twig', array('trees' => $trees, '_locale' => $_locale));
 }
 /**
  *
  * @Route("/move", name="rnc_admin_menu_move", requirements={"_method"="POST"})
  * @Template()
  * @Secure(roles="ROLE_ADMIN")
  */
 public function moveAction()
 {
     $request = $this->get('request');
     if ($request->isXmlHttpRequest()) {
         $cur = $request->request->get('cur');
         $prev = $request->request->get('prev');
         $next = $request->request->get('next');
         $em = $this->getDoctrine()->getEntityManager();
         $config = new Config($em, 'RNCMenuBundle:Item');
         $nsm = new Manager($config);
         $rep = $em->getRepository('RNCMenuBundle:Item');
         $cur_node = $rep->find($cur);
         $prev_node = $rep->find($prev);
         $next_node = $rep->find($next);
         if ($cur_node == null) {
             throw new NotFoundHttpException("Elément introuvable");
         }
         $node = $nsm->wrapNode($cur_node);
         if ($prev_node != null) {
             $wrp = $nsm->wrapNode($prev_node);
             if ($node->isRoot()) {
                 $new_pos = $prev_node->getPosition();
                 $old_pos = $cur_node->getPosition();
                 if ($old_pos < $new_pos) {
                     $rep->moveItemDown($old_pos, $new_pos);
                     $cur_node->setPosition($new_pos);
                 } else {
                     $rep->moveItemUp($old_pos, $new_pos + 1);
                     $cur_node->setPosition($new_pos + 1);
                 }
                 $em->persist($cur_node);
             } else {
                 $node->moveAsNextSiblingOf($wrp);
             }
         } else {
             if ($next_node != null) {
                 $wrp = $nsm->wrapNode($next_node);
                 if ($node->isRoot()) {
                     $new_pos = 1;
                     $old_pos = $cur_node->getPosition();
                     $rep->moveItemUp($old_pos, $new_pos);
                     $cur_node->setPosition($new_pos);
                     $em->persist($cur_node);
                 } else {
                     $node->moveAsPrevSiblingOf($wrp);
                 }
             }
         }
         $em->flush();
         $qb = $rep->getTreeQB();
         $nsm->getConfiguration()->setBaseQueryBuilder($qb);
         $roots = $rep->findAllRoots();
         $trees = array();
         foreach ($roots as $root) {
             $trees[$root->getId()] = $nsm->fetchTreeAsArray($root->getId());
         }
         return $this->render('RNCMenuBundle:Menu:show.html.twig', array('trees' => $trees));
     } else {
         return $this->indexAction();
     }
 }