configuration = new CrudConfiguration(); } /** * @Route("/list/{page}", name="TrinityContentManagerBundleNavigationAdmin_index", defaults={"page" = "1"}, requirements={"page" = "\d+"}) * @Template() */ public function indexAction($page, Request $request) { return parent::indexAction($page, $request); } /** * @Route("/new", name="TrinityContentManagerBundleNavigationAdmin_new") * @Template() */ public function newAction(Request $request) { $this->cleanCache(); return parent::newAction($request); } /** * @Route("/edit/{id}", name="TrinityContentManagerBundleNavigationAdmin_edit") * @Template() * @ParamConverter("object", class="Trinity\Bundle\ContentManagerBundle\Model\Nav") */ public function editAction($object, Request $request) { $this->cleanCache(); return parent::editAction($object, $request); } /** * @Route("/remove/{id}/{token}", name="TrinityContentManagerBundleNavigationAdmin_remove") * @Template() * @ParamConverter("object", class="Trinity\Bundle\ContentManagerBundle\Model\Nav") */ public function removeAction($object, $token, Request $request) { $this->cleanCache(); return parent::removeAction($object, $token, $request); } /** * @Route("/batch", name="TrinityContentManagerBundleNavigationAdmin_batch") * @Template() * @Method({"POST"}) */ public function batchAction(Request $request) { $this->cleanCache(); return parent::batchAction($request); } /** * @Route("/filter/clear", name="TrinityContentManagerBundleNavigationAdmin_filter_clear") * @Template() */ public function clearFilterAction(Request $request) { return parent::clearFilterAction($request); } private function cleanCache() { $this->get('routeur.cache')->clearRouting(); } protected function copyObjects($query, array $pks) { foreach ($pks as $pk) { $original = $query->findPK($pk); $navCopy = $original->copy(false); $this->preSave($navCopy); // Navigation copy $navCopy ->setName($navCopy->getName().'_copy') ->setDomain($navCopy->getDomain()) ->setTitle($navCopy->getTitle().' copy') ->save(); // Navigation's menus copies foreach ($original->getMenus() as $menu) { $menuCopy = $menu->copy(false); $menuCopy ->setNav($navCopy) ->save(); // Navigation's menus's nodes copies foreach ($menu->getNodes() as $node) { $nodeCopy = $node->copy(false); $nodeCopy ->moveAfter($node) ->setRouteName($node->getRouteName()); if (!$node->getNodeAlias()) { $nodeCopy->setUrl($node->getUrl()); } $nodeCopy->save(); if ($node->getPage()) { $pageCopy = $node->getPage()->copy(false); $pageCopy ->setNodeId($nodeCopy->getId()) ->save(); $nodeCopy->setPageId($pageCopy->getId()); // foreach ($node->getPage()->getBlocks() as $block) { // $blockCopy = $block->copy(true); // $blockCopy // ->setPageId($pageCopy->getId()) // ->save(); // } } $nodeCopy ->setNav($navCopy) ->setMenu($menuCopy) ->save(); } } $this->get('routeur.cache')->clearRouting(); $this->postSave($navCopy); } } protected function postSave($object, $wasNew = false) { $object->createRootNode(); return parent::postSave($object, $wasNew); } }