Skip to content
Snippets Groups Projects
Verified Commit ae6dff1e authored by Dave Long's avatar Dave Long
Browse files

Issue #3488664 by phenaproxima: The PlaceBlock config action breaks when...

Issue #3488664 by phenaproxima: The PlaceBlock config action breaks when placing a block in an empty region

(cherry picked from commit 43717fbb)
parent c59127f7
No related branches found
No related tags found
27 merge requests!12079Issue #3523476 by matthiasm11: Add empty check on operator,!12024Fix: DocBlock comment for return value of Drupal\Core\Database\Connection::transactionManager(),!11974Draft: Issue #3495165 by catch, joeyroth, berdir, texas-bronius: Better warning...,!11934Issue #3520997: DefaultLazyPluginCollection unnecessarily instantiates plugins when sorting collection,!11887Issue #3520065: The migrate Row class API is incomplete,!11636Draft: Issue #3515643 by macsim: fieldNameExists method is inconsistent,!11515Issue #3480419 by mondrake, smustgrave, catch: Method...,!11380Issue #3490698 by catch, spokje: Bump MINIMUM_STABILITY back to 'stable' when...,!11281Use Drupal Core Leadership terminology in MAINTAINERS.txt,!11239Issue #3507548: Allow workspace changes listing to show all items, without a pager,!11238Fix issue #3051797,!11213Issue #3506743 by tomislav.matokovic: Increasing the color contrast for the navigation block title against the background of the navigation sidebar to at least 4.5:1,!11147Draft: Try to avoid manually setting required cache contexts,!11108Issue #3490298 by nicxvan: Profiles can be missed in OOP hooks,!11093Drupal on MongoDB 11.1.x,!11017Issue #3502540: Add date filter for moderated content.,!11009Issue #3486972 migrate feed icon,!10999Cleaning up Taxonomy hooks and updating baseline.,!10977Issue #3501457: Fix path used in a A11y Test Admin,!10881Issue #3489329 by mfb, casey: symfony/http-foundation commit 32310ff breaks PathValidator,!10570Issue #3494197: Convert Twig engine hooks,!10567Issue #3494154: Index is not added if entity doesn't support revisions,!10548Revert "Issue #3478621 by catch, longwave, nicxvan: Add filecache to OOP hook attribute parsing",!10404Margin has been added,!10391Issue #3485117 by nexusnovaz, godotislate, nicxvan: Fix return type on...,!10388Issue #3485117 by nexusnovaz, godotislate, nicxvan: Fix return type on...,!10376Issue #3485117 by nexusnovaz, godotislate, nicxvan: Fix return type on...
Pipeline #347039 canceled
Pipeline: drupal

#347041

    ...@@ -73,15 +73,17 @@ public function apply(string $configName, mixed $value): void { ...@@ -73,15 +73,17 @@ public function apply(string $configName, mixed $value): void {
    'theme' => $theme, 'theme' => $theme,
    'region' => $value['region'], 'region' => $value['region'],
    ]); ]);
    // Sort the blocks by weight. Don't use \Drupal\block\Entity\Block::sort() if ($blocks) {
    // here because it seems to be intended to sort blocks in the UI, where // Sort the blocks by weight. Don't use \Drupal\block\Entity\Block::sort()
    // we really just want to get the weights right in this situation. // here because it seems to be intended to sort blocks in the UI, where
    uasort($blocks, fn (BlockInterface $a, BlockInterface $b) => $a->getWeight() <=> $b->getWeight()); // we really just want to get the weights right in this situation.
    uasort($blocks, fn (BlockInterface $a, BlockInterface $b) => $a->getWeight() <=> $b->getWeight());
    $value['weight'] = match ($value['position']) { $value['weight'] = match ($value['position']) {
    'first' => reset($blocks)->getWeight() - 1, 'first' => reset($blocks)->getWeight() - 1,
    'last' => end($blocks)->getWeight() + 1, 'last' => end($blocks)->getWeight() + 1,
    }; };
    }
    } }
    // Remove values that are not valid properties of block entities. // Remove values that are not valid properties of block entities.
    unset($value['position'], $value['default_region']); unset($value['position'], $value['default_region']);
    ......
    ...@@ -180,4 +180,28 @@ public function testPlaceBlockAtPosition(): void { ...@@ -180,4 +180,28 @@ public function testPlaceBlockAtPosition(): void {
    $this->assertSame('last', end($blocks)); $this->assertSame('last', end($blocks));
    } }
    /**
    * Tests using the PlaceBlock action in an empty region.
    */
    public function testPlaceBlockInEmptyRegion(): void {
    /** @var \Drupal\Core\Entity\Query\QueryInterface $query */
    $query = $this->container->get(EntityTypeManagerInterface::class)
    ->getStorage('block')
    ->getQuery()
    ->count()
    ->condition('theme', 'olivero')
    ->condition('region', 'footer_top');
    $this->assertSame(0, $query->execute());
    // Place a block in that region.
    $this->configActionManager->applyAction('placeBlockInDefaultTheme', 'block.block.test', [
    'plugin' => 'system_powered_by_block',
    'region' => [
    'olivero' => 'footer_top',
    ],
    'position' => 'first',
    ]);
    $this->assertSame(1, $query->execute());
    }
    } }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment