Skip to content

Commit

Permalink
Remove template
Browse files Browse the repository at this point in the history
  • Loading branch information
bytehead committed Jan 3, 2022
1 parent 654cd29 commit 86cbde1
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 30 deletions.
11 changes: 8 additions & 3 deletions core-bundle/src/Controller/AbstractFragmentController.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,16 @@ protected function render(string $view, array $parameters = [], Response $respon
if (null === $response) {
$response = new Response();

// Mark this response to affect the caching of the current page but remove any default cache headers
$response->headers->set(SubrequestCacheSubscriber::MERGE_CACHE_HEADER, '1');
$response->headers->remove('Cache-Control');
$this->markResponseForInternalCaching($response);
}

return parent::render($view, $parameters, $response);
}

protected function markResponseForInternalCaching(Response $response): void
{
// Mark this response to affect the caching of the current page but remove any default cache headers
$response->headers->set(SubrequestCacheSubscriber::MERGE_CACHE_HEADER, '1');
$response->headers->remove('Cache-Control');
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,33 @@
namespace Contao\CoreBundle\Controller\FrontendModule;

use Contao\Controller;
use Contao\CoreBundle\Controller\AbstractFragmentController;
use Contao\ModuleModel;
use Contao\PageModel;
use Contao\StringUtil;
use Contao\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class RootPageDependentModuleController extends AbstractFrontendModuleController
class RootPageDependentModuleController extends AbstractFragmentController
{
protected function getResponse(Template $template, ModuleModel $model, Request $request): ?Response
public function __invoke(Request $request, ModuleModel $model, string $section, array $classes = null): Response
{
/** @var PageModel $pageModel */
$pageModel = $this->getPageModel();

$controller = $this->container->get('contao.framework')->getAdapter(Controller::class);

$modules = StringUtil::deserialize($model->rootPageDependentModules);
$content = '';

if (\is_array($modules) && \array_key_exists($pageModel->rootId, $modules)) {
$template->module = $controller->getFrontendModule($modules[$pageModel->rootId]);
$content = $controller->getFrontendModule($modules[$pageModel->rootId]);
}

return $template->getResponse();
$response = new Response($content);

$this->markResponseForInternalCaching($response);

return $response;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,13 @@
use Contao\CoreBundle\Cache\EntityCacheTags;
use Contao\CoreBundle\Controller\FrontendModule\RootPageDependentModuleController;
use Contao\CoreBundle\Tests\TestCase;
use Contao\FrontendTemplate;
use Contao\ModuleModel;
use Contao\PageModel;
use Contao\System;
use PHPUnit\Framework\MockObject\MockObject;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;

class RootPageDependentModuleControllerTest extends TestCase
{
Expand All @@ -40,12 +38,14 @@ protected function setUp(): void
System::setContainer($this->container);
}

public function testCreatesTheTemplateFromTheClassName(): void
public function testReturnsEmptyResponse(): void
{
$controller = new RootPageDependentModuleController();
$controller->setContainer($this->mockContainerWithFrameworkTemplate());

$controller(new Request([], [], ['_scope' => 'frontend']), $this->getModuleModel(), 'main');
$response = $controller(new Request([], [], ['_scope' => 'frontend']), $this->getModuleModel(), 'main');

$this->assertSame('', $response->getContent());
}

public function testPopulatesTheTemplateWithTheModule(): void
Expand All @@ -62,33 +62,22 @@ public function testPopulatesTheTemplateWithTheModule(): void
$requestStack->push($request);

$controller = new RootPageDependentModuleController();
$controller->setContainer($this->mockContainerWithFrameworkTemplate($requestStack));
$controller->setContainer($this->mockContainerWithFrameworkTemplate($requestStack, 'example-content'));

$response = $controller($request, $module, 'main');

$controller($request, $module, 'main');
$this->assertSame('example-content', $response->getContent());
}

private function mockContainerWithFrameworkTemplate(RequestStack $requestStack = null): ContainerBuilder
private function mockContainerWithFrameworkTemplate(RequestStack $requestStack = null, string $content = ''): ContainerBuilder
{
$template = $this->createMock(FrontendTemplate::class);
$template
->expects($this->atLeast(1))
->method('getResponse')
->willReturn(new Response())
;

$controllerAdapter = $this->mockAdapter(['getFrontendModule']);
$controllerAdapter
->method('getFrontendModule')
->willReturn('')
->willReturn($content ?: '')
;

$framework = $this->mockContaoFramework([Controller::class => $controllerAdapter]);
$framework
->expects($this->once())
->method('createInstance')
->with(FrontendTemplate::class, ['mod_root_page_dependent_module'])
->willReturn($template)
;

$this->container->set('contao.framework', $framework);
$this->container->set('contao.routing.scope_matcher', $this->mockScopeMatcher());
Expand Down

0 comments on commit 86cbde1

Please sign in to comment.