Skip to content
Snippets Groups Projects
Verified Commit 7cf9fb43 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3340159 by robert-arias, ooa33, acbramley, smustgrave, Chi, mikelutz,...

Issue #3340159 by robert-arias, ooa33, acbramley, smustgrave, Chi, mikelutz, quietone: Prevent empty block_content info fields from causing php deprecation notices when placing blocks with no label.
parent 82df75eb
No related branches found
No related tags found
28 merge requests!11131[10.4.x-only-DO-NOT-MERGE]: Issue ##2842525 Ajax attached to Views exposed filter form does not trigger callbacks,!9470[10.3.x-only-DO-NOT-MERGE]: #3331771 Fix file_get_contents(): Passing null to parameter,!8540Issue #3457061: Bootstrap Modal dialog Not closing after 10.3.0 Update,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8373Issue #3427374 by danflanagan8, Vighneshh: taxonomy_tid ViewsArgumentDefault...,!7526Expose roles in response,!7352Draft: Resolve #3203489 "Set filename as",!3878Removed unused condition head title for views,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3133core/modules/system/css/components/hidden.module.css,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2794Issue #3100732: Allow specifying `meta` data on JSON:API objects,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493
Pipeline #132597 canceled
Pipeline: drupal

#132600

    ......@@ -49,7 +49,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
    /** @var \Drupal\block_content\Entity\BlockContent $block_content */
    foreach ($block_contents as $block_content) {
    $this->derivatives[$block_content->uuid()] = $base_plugin_definition;
    $this->derivatives[$block_content->uuid()]['admin_label'] = $block_content->label();
    $this->derivatives[$block_content->uuid()]['admin_label'] = $block_content->label() ?? ($block_content->type->entity->label() . ': ' . $block_content->id());
    $this->derivatives[$block_content->uuid()]['config_dependencies']['content'] = [
    $block_content->getConfigDependencyName(),
    ];
    ......
    ......@@ -4,6 +4,7 @@
    use Drupal\block_content\Entity\BlockContent;
    use Drupal\block_content\Entity\BlockContentType;
    use Drupal\block_content\Plugin\Derivative\BlockContent as DerivativeBlockContent;
    use Drupal\Component\Plugin\PluginBase;
    use Drupal\KernelTests\KernelTestBase;
    ......@@ -19,6 +20,32 @@ class BlockContentDeriverTest extends KernelTestBase {
    */
    protected static $modules = ['block', 'block_content', 'system', 'user'];
    /**
    * The definition array of the base plugin.
    *
    * @var array
    */
    protected $baseDefinition = [
    'id' => 'block_content',
    'provider' => 'block_content',
    'class' => '\Drupal\block_content\Plugin\Block\BlockContentBlock',
    'deriver' => '\Drupal\block_content\Plugin\Derivative\BlockContent',
    ];
    /**
    * The block content storage.
    *
    * @var \Drupal\Core\Entity\EntityStorageInterface
    */
    protected $blockContentStorage;
    /**
    * The tested block content derivative class.
    *
    * @var \Drupal\block_content\Plugin\Derivative\BlockContent
    */
    protected $blockContentDerivative;
    /**
    * {@inheritdoc}
    */
    ......@@ -26,6 +53,9 @@ protected function setUp(): void {
    parent::setUp();
    $this->installEntitySchema('user');
    $this->installEntitySchema('block_content');
    $this->blockContentStorage = \Drupal::entityTypeManager()->getStorage('block_content');
    $this->blockContentDerivative = new DerivativeBlockContent($this->blockContentStorage);
    }
    /**
    ......@@ -62,4 +92,31 @@ public function testReusableBlocksOnlyAreDerived() {
    $this->assertFalse($block_manager->hasDefinition($plugin_id));
    }
    /**
    * Tests the admin labels of derivative definitions.
    */
    public function testGetDerivativeDefinitionsAdminLabels(): void {
    $blockContentType = BlockContentType::create([
    'id' => 'basic',
    'label' => 'Basic Block',
    ]);
    $blockContentType->save();
    $blockContentWithLabel = BlockContent::create([
    'info' => 'Basic prototype',
    'type' => 'basic',
    ]);
    $blockContentWithLabel->save();
    $blockContentNoLabel = BlockContent::create([
    'type' => 'basic',
    ]);
    $blockContentNoLabel->save();
    $blockPluginManager = \Drupal::service('plugin.manager.block');
    $plugin = $blockPluginManager->createInstance('block_content:' . $blockContentWithLabel->uuid());
    $this->assertEquals('Basic prototype', $plugin->getPluginDefinition()['admin_label']);
    $plugin = $blockPluginManager->createInstance('block_content:' . $blockContentNoLabel->uuid());
    $this->assertEquals('Basic Block: ' . $blockContentNoLabel->id(), $plugin->getPluginDefinition()['admin_label']);
    }
    }
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment