<?php
namespace App\Controller\Admin\Pages;
use App\Entity\Pages\Page;
use App\Entity\Pages\PageCategory;
use App\Service\Manager\AdminManager;
use App\Entity\Pages\PageSousCategory;
use App\Controller\Admin\CoreController;
use App\Repository\Pages\PageRepository;
use App\Form\Search\Pages\SearchPageType;
use App\Repository\LanguagesRepository;
use App\Service\Manager\Pages\PageManager;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\Pages\PageSousCategoryRepository;
use App\Service\LanguagesManager;
#[Route('/admin/pages/page')]
class PageController extends CoreController
{
#[Route('/{parent?0}/{page?0}', name: 'admin_pages_page_index', requirements: ['page' => '\d+', 'parent' => '\d+'])]
public function index(Request $request, PageRepository $repository, PageSousCategoryRepository $PageSousCategoryRepository,?string $parent = null,?Page $page = null): Response
{
$language = $this->getCurrentLanguage();
$type = "";
$form = $this->createForm(SearchPageType::class, null, [
'method' => 'GET',
'langauge' => $language
]);
$form->handleRequest($request);
$formParams = $form->getData() ?? [];
$formParams['category'] = $parent ?? null;
$formParams['parent'] = $page ?? null;
$formParams['homePage'] = $this->getParameter('id_home_page');
if(!$parent)
$formParams['notCategory']=1;
if(!$page)
$formParams['notParent']=1;
return $this->render('admin/pages/page/index.html.twig', [
'lists' => $repository->paginateAllVisible(
$language,
$request->query->getInt('page', 1),
$formParams,
),
'form' => $form->createView(),
'table' => $this->getTable($type),
'category' => $parent ? $PageSousCategoryRepository->getAllQb($language, ['id' => $parent ])->getOneOrNullResult() : null ,
'page' => $page
]);
}
/** @param PageSousCategory $category */
#[Route('/new/{category?0}/{parent?0}', name: 'admin_pages_page_new', requirements: ['category' => '\d+', 'parent' => '\d+'])]
public function new(PageManager $pageManager, PageSousCategoryRepository $PageSousCategoryRepository, LanguagesRepository $languagesRepository, LanguagesManager $languagesManager, ?PageSousCategory $category = null, ?Page $parent = null) {
$page = new Page();
$page = $languagesManager->addLangue($page, true);
if ($category) $page->setPageSousCategory($category);
if ($parent) $page->setParent($parent);
$response = $pageManager->getForm($page);
if($response instanceof Response) return $response;
return $this->render('admin/pages/page/form.html.twig', [
'languages' => $languagesRepository->findBy(['deletedAt' => null]),
'field' => $response['page'],
'form' => $response['form'],
'medias' => $response['medias'],
'paletteColors' => $response['paletteColors'],
'parentPage' => $parent,
'parent' => $category ? $PageSousCategoryRepository->getAllQb($this->getCurrentLanguage(), ['id' => $category ], ['id' => $this->getParameter('id_home_page'), 'media_page' => true])->getOneOrNullResult() : null
]);
}
#[Route('/edit/{id}', name: 'admin_pages_page_edit')]
public function edit(Page $page, PageManager $pageManager, PageSousCategoryRepository $PageSousCategoryRepository, LanguagesRepository $languagesRepository, LanguagesManager $languagesManager) {
$page = $languagesManager->addLangue($page, false);
$response = $pageManager->getForm($page);
if($response instanceof Response) return $response;
return $this->render('admin/pages/page/form.html.twig', [
'languages' => $languagesRepository->findBy(['deletedAt' => null]),
'field' => $response['page'],
'form' => $response['form'],
'medias' => $response['medias'],
'paletteColors' => $response['paletteColors'],
'parent' => $page->getPageSousCategory() ? $PageSousCategoryRepository->getAllQb($this->getCurrentLanguage(), ['id' => $page->getPageSousCategory() ])->getOneOrNullResult() : null,
'blocs' => $response['blocs']
]);
}
#[Route('/delete/{id}', name: 'admin_pages_page_delete')]
public function delete(Request $request, Page $page, AdminManager $adminManager): Response
{
if ($this->isCsrfTokenValid('delete'.$page->getId(), $request->query->get('_token'))) {
$adminManager->deleteEntity($page);
}
$category = $page->getPageSousCategory();
if($category) {
return $this->redirectToRoute('admin_pages_page_index', ['parent' => $category->getId() ] );
} else {
return $this->redirectToRoute('admin_pages_page_index');
}
}
public function getTable($type = null)
{
$fields = [
[
'field' => 'page_name',
'order' => 'page_name',
],
[
'field' => 'isEnable',
'type' => 'isEnable',
'order' => 'p.isEnable',
],
[
'field' => 'createdAt',
'type' => 'date',
'order' => 'p.createdAt'
]
];
$actions = [
[
'label' => 'show',
'icon' => 'eye',
'type' => 'show',
'path' => 'admin_pages_page_index',
],
[
'label' => 'edit',
'icon' => 'edit',
'path' => 'admin_pages_page_edit',
],
[
'label' => 'delete_page',
'type' => 'delete',
'path' => 'admin_pages_page_delete',
]
];
return [
'id' => 'p',
'fields' => array_filter($fields),
'actions'=> $actions
];
}
}