Skip to content
Snippets Groups Projects
Commit 05bb027d authored by Francesco Sardara's avatar Francesco Sardara Committed by Benjamin Melançon
Browse files

Issue #3173599 by sardara, reevo, mlncn: Condition plugin causes failures...

Issue #3173599 by sardara, reevo, mlncn: Condition plugin causes failures during form state serialisation
parent 9d7e62f1
No related branches found
No related tags found
No related merge requests found
......@@ -11,7 +11,7 @@ use Drupal\Core\Executable\ExecutableManagerInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
/**
* Provides a 'Condition Group' condition.
......@@ -40,11 +40,11 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
protected $entityStorage;
/**
* The current Request object.
* The request stack object.
*
* @var \Symfony\Component\HttpFoundation\Request
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $request;
protected $requestStack;
/**
* The group evaluator.
......@@ -102,7 +102,7 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
$default = isset($this->configuration['block_visibility_group']) ? $this->configuration['block_visibility_group'] : '';
if (!$default) {
$default = $this->request->query->get('block_visibility_group');
$default = $this->requestStack->getCurrentRequest()->query->get('block_visibility_group');
if ($default) {
$form['block_visibility_group']['#disabled'] = TRUE;
$form_state->setTemporaryValue('block_visibility_group_query', $default);
......@@ -148,7 +148,7 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
return new static(
$container->get('entity_type.manager')->getStorage('block_visibility_group'),
$container->get('plugin.manager.condition'),
$container->get('request_stack')->getCurrentRequest(),
$container->get('request_stack'),
$container->get('block_visibility_groups.group_evaluator'),
$configuration,
$plugin_id,
......@@ -158,12 +158,11 @@ class ConditionGroup extends ConditionPluginBase implements ContainerFactoryPlug
/**
* {@inheritdoc}
*/
public function __construct(EntityStorageInterface $entity_storage, ExecutableManagerInterface $manager, Request $request, GroupEvaluator $group_evaluator, array $configuration, $plugin_id, $plugin_definition) {
// TODO: Change the autogenerated stub.
public function __construct(EntityStorageInterface $entity_storage, ExecutableManagerInterface $manager, RequestStack $request_stack, GroupEvaluator $group_evaluator, array $configuration, $plugin_id, $plugin_definition) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->manager = $manager;
$this->entityStorage = $entity_storage;
$this->request = $request;
$this->requestStack = $request_stack;
$this->groupEvaluator = $group_evaluator;
}
......
<?php
declare(strict_types = 1);
namespace Drupal\Tests\block_visibility_groups\FunctionalJavascript;
use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
/**
* Tests the module with Javascript interactions.
*
* @group block_visibility_groups
*/
class BlockVisibilityGroupsTest extends WebDriverTestBase {
/**
* {@inheritdoc}
*/
protected static $modules = [
'block',
'block_visibility_groups',
];
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
// Create and login with user who can administer blocks.
$this->drupalLogin($this->drupalCreateUser([
'administer blocks',
'administer block visibility groups',
]));
\Drupal::service('theme_installer')->install(['seven']);
}
/**
* Tests that the condition_group plugin can be properly serialized.
*
* The condition plugins are serialised when the form state is cached. To
* trigger that, we use an AJAX element in the block add route.
*/
public function testFormSerialization(): void {
$assert_session = $this->assertSession();
$this->drupalGet('admin/structure/block/add/system_powered_by_block');
$assert_session->optionExists('Region', 'Left sidebar');
$assert_session->selectExists('Theme')->selectOption('Seven');
$assert_session->assertWaitOnAjaxRequest();
$assert_session->optionNotExists('Region', 'Left sidebar');
$assert_session->selectExists('Theme')->selectOption('Stark');
$assert_session->assertWaitOnAjaxRequest();
$assert_session->optionExists('Region', 'Left sidebar');
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment