<?php namespace Nen\Bundle\KennisbankPlatformBundle\Controller;
use Nen\Bundle\KennisbankPlatformBundle\Bolt\BoltConfiguration;
use Nen\Bundle\KennisbankPlatformBundle\Entity\BoltPage;
use Nen\Bundle\KennisbankPlatformBundle\Handler\PageHandler;
use Nen\Bundle\KennisbankPlatformBundle\Repository\BoltPageRepository;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PagesController extends AbstractController
{
/**
* @Route("/{section}/{page}/{record}", name="pages_index", requirements={"section": "%nen.requirements.sections%"})
*/
public function index(string $section, PageHandler $pageHandler, string $page = null, string $record = null)
{
$data = $pageHandler->getDataForPage($section, $page, $record);
if ($data === null) {
throw $this->createNotFoundException();
}
return $this->render('@KennisbankPlatform/pages/index.html.twig', $data);
}
/**
* @Route("/{id}", name="pages_redirect_to_url", requirements={"id": "\d+"})
*
* @param BoltPage $page
* @return RedirectResponse
*/
public function redirectToUrl(BoltPage $page)
{
$section = $page->getSection();
// When no section is set we assume this is a wildcard page.
if (empty($section)) {
return $this->redirectToRoute('pages_record', ['slug' => $page->getSlug()]);
}
$redirectToSlug = [
'system',
'general-public',
'general-private',
];
// General and system pages should match url by slug.
if (in_array($section->getSlug(), $redirectToSlug)) {
return $this->redirect($page->getSlug());
}
// @todo(guido): redirect all pages under practical help.
//dd($section);
}
/**
* @Route("/{slug}", name="pages_record")
* @Route("/pagina/{slug}", name="pages_record_bolt")
*
* @param string $slug
* @param BoltPageRepository $pageRepository
* @return Response
*/
public function record(string $slug, BoltPageRepository $pageRepository): Response
{
$page = $pageRepository->findOneWithoutSection($slug);
if ($page === null) {
$page = $pageRepository->findOneByGeneralSectionAndSlug($slug);
}
if ($page === null) {
throw $this->createNotFoundException();
}
$page->setFaqs($pageRepository->findFaqsForPage($page));
$page->setBlocks($pageRepository->findBlocksForPage($page));
$page->setPages($pageRepository->findPagesForPage($page));
if (count($page->getSections()) === 0) {
$page->setSections($pageRepository->findFieldValuesForId($page->getId(), 'extra_sections'));
}
return $this->render(
'@KennisbankPlatform/pages/index.html.twig',
[
'page' => $page,
]
);
}
}