Commit 51369601 authored by Stephen Lucero's avatar Stephen Lucero
Browse files

Issue #3308892 by slucero, jordanpagewhite: New Block Forms Prompt for Pattern Update

parent 5718b9bc
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -292,8 +292,24 @@ class PatternkitBlock extends BlockBase implements ContainerFactoryPluginInterfa

      // Fall back to the plugin pattern definition if necessary.
      if (!$pattern) {
        $pattern = is_array($plugin['pattern']) ? $this->patternStorage->create($plugin['pattern']) : $plugin['pattern'];
        if (is_array($plugin['pattern'])) {
          $pattern = $this->patternStorage->create($plugin['pattern']);
        }
        elseif ($plugin['pattern'] instanceof PatternInterface) {
          $pattern = $plugin['pattern'];
        }
        else {
          $pattern_id = DerivativePatternkitBlock::derivativeToAssetId($this->getDerivativeId());
          $pattern = $this->patternRepository->getPattern($pattern_id, TRUE);
        }

        // Since this wasn't loaded from a targeted revision, ensure the bundled
        // schema is loaded.
        if (!$pattern->isBundled()) {
          $pattern = $this->patternRepository->getPattern($pattern->getAssetId(), TRUE);
        }
      }

      $pattern_id = $pattern->getAssetId();
    }
    catch (\Exception $exception) {
+11 −5
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ class SchemaUpdateTest extends PatternkitBrowserTestBase {
    $assert = $this->assertSession();
    $page = $this->getSession()->getPage();

    $pattern_name = '[Patternkit] Example with Reference';

    $account = $this->drupalCreateUser([
      'access administration pages',
      'configure any layout',
@@ -73,16 +75,20 @@ class SchemaUpdateTest extends PatternkitBrowserTestBase {
    // Override the Node layout and place a patternkit block.
    $this->drupalGet('node/1/layout');
    $page->clickLink('Add block');
    $assert->linkExists('[Patternkit] Example');
    $page->clickLink('[Patternkit] Example');
    $assert->linkExists($pattern_name);
    $page->clickLink($pattern_name);
    // Confirm the block doesn't initially prompt for updating.
    $assert->pageTextNotContains('Update pattern schema and template from');
    // Fill in the hidden fields manually since fillField() won't find hidden
    // fields.
    $page->find('css', '#schema_instance_config')
      ->setValue(json_encode([
        'text' => 'Pattern block title',
        'nested_reference' => [
          'formatted_text' => 'Pattern block body',
          'image_url' => '',
          'hidden' => 'Hidden text',
        ],
      ]));
    $page->pressButton('Add block');
    $page->pressButton('Save layout');