167 lines
4.9 KiB
PHP
167 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace Trinity\Bundle\ContentManagerBundle\Controller;
|
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
|
|
use Trinity\Bundle\ContentManagerBundle\Configuration\NavigationCrudConfiguration as CrudConfiguration;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Trinity\Bundle\AdminBundle\Controller\BaseAdminController;
|
|
|
|
/**
|
|
* @Route("/admin/cms/navigation")
|
|
*/
|
|
class NavigationAdminController extends BaseAdminController
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->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);
|
|
}
|
|
}
|