murph-skeleton/core/Controller/Site/TreeAdminController.php

88 lines
2.5 KiB
PHP
Raw Normal View History

2021-03-24 12:27:07 +01:00
<?php
namespace App\Core\Controller\Site;
use App\Core\Controller\Admin\AdminController;
use App\Core\Entity\Site\Navigation;
use App\Core\Factory\Site\MenuFactory;
use App\Core\Form\Site\MenuType;
use App\Core\Repository\Site\NavigationRepositoryQuery;
use Symfony\Component\HttpFoundation\Response;
2021-04-30 10:40:50 +02:00
use Symfony\Component\HttpFoundation\Session\Session;
2021-03-24 12:27:07 +01:00
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/admin/site/tree")
*/
class TreeAdminController extends AdminController
{
/**
* @Route("/", name="admin_site_tree_index")
*/
2021-04-30 10:40:50 +02:00
public function index(NavigationRepositoryQuery $navigationQuery, Session $session): Response
2021-03-24 12:27:07 +01:00
{
2021-04-30 10:40:50 +02:00
$navigation = null;
if ($session->has('site_tree_last_navigation')) {
$navigation = $navigationQuery->create()
2021-04-30 12:20:30 +02:00
->filterById((int) $session->get('site_tree_last_navigation'))
2021-04-30 10:40:50 +02:00
->findOne()
;
}
if (null === $navigation) {
2021-05-27 21:53:59 +02:00
$navigation = $navigationQuery->create()
->orderBy('.sortOrder')
->findOne()
;
2021-04-30 10:40:50 +02:00
}
2021-03-24 12:27:07 +01:00
if (null === $navigation) {
2021-03-24 16:54:11 +01:00
$this->addFlash('warning', 'You must add a navigation.');
2021-03-24 12:27:07 +01:00
return $this->redirectToRoute('admin_site_navigation_new');
}
return $this->redirectToRoute('admin_site_tree_navigation', [
'navigation' => $navigation->getId(),
]);
}
/**
* @Route("/navigation/{navigation}", name="admin_site_tree_navigation")
*/
public function navigation(
Navigation $navigation,
NavigationRepositoryQuery $navigationQuery,
2021-04-30 10:40:50 +02:00
MenuFactory $menuFactory,
Session $session
2021-03-24 12:27:07 +01:00
): Response {
$navigations = $navigationQuery->create()
2021-05-27 21:53:59 +02:00
->orderBy('.sortOrder')
2021-05-12 11:56:48 +02:00
->find()
;
2021-03-24 12:27:07 +01:00
2021-04-30 10:40:50 +02:00
$session->set('site_tree_last_navigation', $navigation->getId());
2021-03-24 12:27:07 +01:00
$forms = [
'menu' => $this->createForm(MenuType::class, $menuFactory->create())->createView(),
'menus' => [],
];
foreach ($navigation->getMenus() as $menu) {
$forms['menus'][$menu->getId()] = $this->createForm(MenuType::class, $menu)->createView();
}
return $this->render('@Core/site/tree_admin/navigation.html.twig', [
'navigation' => $navigation,
'navigations' => $navigations,
'forms' => $forms,
]);
}
public function getSection(): string
{
return 'site_tree';
}
}