From f630e01bf3427cbf362b10b0029322545e2ae7cf Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 7 Apr 2022 16:36:23 +0200 Subject: [PATCH 01/35] OEL-1425: Use imageValueObject on oe_whitelabel. --- .../oe_whitelabel_paragraphs.module | 11 ++--------- .../templates/node--oe-sc-event--teaser.html.twig | 5 +---- .../templates/node--oe-sc-news--teaser.html.twig | 5 +---- 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module b/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module index e8a17b93..822085a3 100644 --- a/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module +++ b/modules/oe_whitelabel_paragraphs/oe_whitelabel_paragraphs.module @@ -217,15 +217,8 @@ function oe_whitelabel_preprocess_paragraph__oe_list_item_block(array &$variable foreach ($variables['paragraph']->get('field_oe_paragraphs') as $card_paragraph_item) { /** @var \Drupal\paragraphs\ParagraphInterface $card_paragraph */ $card_paragraph = $card_paragraph_item->entity; - - /** @var \Drupal\file\Plugin\Field\FieldType\FileFieldItemList $card_image_items */ - $card_image_items = $card_paragraph->get('field_oe_image'); - /** @var \Drupal\file\FileInterface|null $card_image_file */ - $card_image_file = $card_image_items->entity; - $card_image = $card_image_file ? [ - 'path' => file_url_transform_relative(file_create_url($card_image_file->getFileUri())), - 'alt' => $card_image_items->alt, - ] : []; + $card_image_item = $card_paragraph->get('field_oe_image')->first(); + $card_image = $card_image_item ? ImageValueObject::fromImageItem($card_image_item) : NULL; // Prepare the metas if available. $card_badges = []; diff --git a/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--teaser.html.twig b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--teaser.html.twig index 8f5f2799..debd2d3e 100755 --- a/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--teaser.html.twig +++ b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--teaser.html.twig @@ -13,10 +13,7 @@ variant: 'search', title: _title, text: content.oe_summary, - image: image ? { - path: image.src, - alt: image.alt, - }, + image: image, meta: [ content.oe_sc_event_dates|field_value, ], diff --git a/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--teaser.html.twig b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--teaser.html.twig index 4d547492..3556131a 100644 --- a/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--teaser.html.twig +++ b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--teaser.html.twig @@ -13,10 +13,7 @@ variant: 'search', title: _title, text: content.oe_summary, - image: image ? { - path: image.src, - alt: image.alt, - }, + image: image, meta: [ content.oe_publication_date|field_value ], -- GitLab From a6c5ca6aa6a6abc9a242ae77bd82631b48780fd8 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 7 Apr 2022 17:37:54 +0200 Subject: [PATCH 02/35] OEL-1425: Use the last oe_bootstrap_theme release. --- composer.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/composer.json b/composer.json index d18da6d1..c7d747b6 100644 --- a/composer.json +++ b/composer.json @@ -81,6 +81,11 @@ } } }, + "patches": { + "openeuropa/oe_bootstrap_theme": { + "latest": "https://github.com/openeuropa/oe_bootstrap_theme/compare/1.0.0-alpha8..OEL-1425.diff" + } + }, "drupal-scaffold": { "locations": { "web-root": "./build" -- GitLab From 2169d77291bb9e5e5061be147f9c7c71ee418a1e Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Mon, 11 Apr 2022 17:12:05 +0200 Subject: [PATCH 03/35] OEL-1425: Update diff patch with the latest oe_bt 1.x. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c7d747b6..a14382ea 100644 --- a/composer.json +++ b/composer.json @@ -83,7 +83,7 @@ }, "patches": { "openeuropa/oe_bootstrap_theme": { - "latest": "https://github.com/openeuropa/oe_bootstrap_theme/compare/1.0.0-alpha8..OEL-1425.diff" + "latest": "https://github.com/openeuropa/oe_bootstrap_theme/compare/1.0.0-alpha8..1.x.diff" } }, "drupal-scaffold": { -- GitLab From 284a05d42a12a59021772d72d771f77b078a0b9e Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 00:28:37 +0200 Subject: [PATCH 04/35] OEL-1227: Code style, comments and minor refactor in tests. Changes: - Reorder imports. - Change line breaks and blank lines. - Change doc comments on test methods. - Change inline comments. - Change order of assertions a little. Rationale for inline comments and line breaks: - When rendering the full page, inline comments are somewhat helpful, but not too many. - Blank lines are nice for structuring content. - The teaser view mode is simple enough that we don't need inline comments. - The existing comments in teaser view mode were wrong anyway, because they mentioned "content banner". --- .../src/Functional/ContentEventRenderTest.php | 28 +++++++++------- .../src/Functional/ContentNewsRenderTest.php | 32 +++++++++---------- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index d07596e6..06976ab0 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -4,11 +4,11 @@ declare(strict_types = 1); namespace Drupal\Tests\oe_whitelabel\Functional; -use Symfony\Component\DomCrawler\Crawler; -use Drupal\Tests\media\Traits\MediaTypeCreationTrait; -use Drupal\media\Entity\Media; use Drupal\file\Entity\File; +use Drupal\media\Entity\Media; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; use Drupal\Tests\TestFileCreationTrait; +use Symfony\Component\DomCrawler\Crawler; /** * Tests that the Event content type renders correctly. @@ -95,7 +95,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { } /** - * Tests that the Event page renders correctly in full display. + * Tests the event rendered in 'Full content' view mode. */ public function testEventRenderingFull(): void { // Build node full view. @@ -104,12 +104,15 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); - // Assert content banner title. + // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); + + // Assert content banner title. $this->assertEquals( 'Test event node', trim($content_banner->filter('.card-title')->text()) ); + // Assert content banner image. $image = $content_banner->filter('img'); $this->assertCount(1, $image); @@ -118,20 +121,24 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { 'image-test.png', trim($image->attr('src')) ); - $this->assertEquals('Starter Image test alt', + $this->assertEquals( + 'Starter Image test alt', $image->attr('alt') ); + // Assert content banner summary. $this->assertEquals( 'http://www.example.org is a web page', trim($content_banner->filter('.oe-sc-event__oe-summary')->text()) ); - // Assert inpage-navigation. + + // Assert in-page navigation title. $this->assertEquals( 'Page content', trim($crawler->filter('nav.bcl-inpage-navigation > h5')->text()) ); - // Assert inpage-navigation. + + // Assert in-page navigation links. $inpage_links = $crawler->filter('nav.bcl-inpage-navigation > ul'); $this->assertCount(2, $inpage_links->filter('li')); $this->assertEquals( @@ -142,11 +149,10 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { 'Documents', trim($inpage_links->filter('li:nth-of-type(2)')->text()) ); - } /** - * Tests that the Event page renders correctly in teaser display. + * Tests the event rendered in 'Teaser' view mode. */ public function testEventRenderingTeaser(): void { // Build node teaser view. @@ -155,12 +161,10 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); - // Assert content banner title. $this->assertEquals( 'Test event node', trim($crawler->filter('h5.card-title')->text()) ); - // Assert content banner image. $image = $crawler->filter('img'); $this->assertCount(1, $image); $this->assertCount(1, $image->filter('.card-img-top')); diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 34497412..35af75c5 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -4,11 +4,11 @@ declare(strict_types = 1); namespace Drupal\Tests\oe_whitelabel\Functional; -use Symfony\Component\DomCrawler\Crawler; -use Drupal\Tests\media\Traits\MediaTypeCreationTrait; -use Drupal\media\Entity\Media; use Drupal\file\Entity\File; +use Drupal\media\Entity\Media; +use Drupal\Tests\media\Traits\MediaTypeCreationTrait; use Drupal\Tests\TestFileCreationTrait; +use Symfony\Component\DomCrawler\Crawler; /** * Tests that the News content type renders correctly. @@ -76,7 +76,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { } /** - * Tests that the News page renders correctly in full display. + * Tests the news rendered in 'Full content' view mode. */ public function testNewsRenderingFull(): void { // Build node full view. @@ -85,12 +85,9 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); - // Assert content banner title. + // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); - $this->assertEquals( - 'Test news node', - trim($content_banner->filter('.card-title')->text()) - ); + // Assert content banner image. $image = $content_banner->filter('img'); $this->assertCount(1, $image); @@ -102,17 +99,22 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { $this->assertEquals('Starter Image test alt', $image->attr('alt') ); - // Assert content banner publication date. + + // Assert content banner content elements. + $this->assertEquals( + 'Test news node', + trim($content_banner->filter('.card-title')->text()) + ); $this->assertEquals( '09 February 2022', trim($content_banner->filter('.card-body > div.my-4')->text()) ); - // Assert content banner summary. $this->assertEquals( 'http://www.example.org is a web page', trim($content_banner->filter('.oe-sc-news__oe-summary')->text()) ); - // Assert the news content. + + // Assert the news body text. $this->assertEquals( 'News body', trim($crawler->filter('.oe-sc-news__body')->text()) @@ -120,7 +122,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { } /** - * Tests that the News page renders correctly in teaser display. + * Tests the news rendered in 'Teaser' view mode. */ public function testNewsRenderingTeaser(): void { // Build node teaser view. @@ -129,12 +131,10 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); - // Assert content banner title. $this->assertEquals( 'Test news node', trim($crawler->filter('h5.card-title')->text()) ); - // Assert content banner image. $image = $crawler->filter('img'); $this->assertCount(1, $image); $this->assertCount(1, $image->filter('.card-img-top')); @@ -142,12 +142,10 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { 'image-test.png', trim($image->attr('src')) ); - // Assert content banner content. $this->assertEquals( 'http://www.example.org is a web page', trim($crawler->filter('div.card-text')->text()) ); - // Assert content banner publication date. $this->assertEquals( '09 February 2022', trim($crawler->filter('div.card-body > div > span.text-muted')->text()) -- GitLab From ffc1a2bd2da9ee5833267de49d65eeaf56b635a2 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 00:25:02 +0200 Subject: [PATCH 05/35] OEL-1227: Use https links in test, to pacify inspection tools. --- tests/src/Functional/ContentEventRenderTest.php | 4 ++-- tests/src/Functional/ContentNewsRenderTest.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 06976ab0..c641692c 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -79,7 +79,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { ->create([ 'type' => 'oe_sc_event', 'title' => 'Test event node', - 'oe_summary' => 'http://www.example.org is a web page', + 'oe_summary' => 'https://www.example.org is a web page', 'body' => 'Event body', 'oe_sc_event_dates' => [ 'value' => '2022-02-09T20:00:00', @@ -128,7 +128,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { // Assert content banner summary. $this->assertEquals( - 'http://www.example.org is a web page', + 'https://www.example.org is a web page', trim($content_banner->filter('.oe-sc-event__oe-summary')->text()) ); diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 35af75c5..9d4fb93c 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -62,7 +62,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { ->create([ 'type' => 'oe_sc_news', 'title' => 'Test news node', - 'oe_summary' => 'http://www.example.org is a web page', + 'oe_summary' => 'https://www.example.org is a web page', 'body' => 'News body', 'oe_publication_date' => [ 'value' => '2022-02-09', @@ -110,7 +110,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { trim($content_banner->filter('.card-body > div.my-4')->text()) ); $this->assertEquals( - 'http://www.example.org is a web page', + 'https://www.example.org is a web page', trim($content_banner->filter('.oe-sc-news__oe-summary')->text()) ); @@ -143,7 +143,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { trim($image->attr('src')) ); $this->assertEquals( - 'http://www.example.org is a web page', + 'https://www.example.org is a web page', trim($crawler->filter('div.card-text')->text()) ); $this->assertEquals( -- GitLab From 67147155868e1c1a00eeb9d6c3b009e36233da7b Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 00:19:29 +0200 Subject: [PATCH 06/35] OEL-1227: Also assert event body text. --- tests/src/Functional/ContentEventRenderTest.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index c641692c..8b874c7f 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -149,6 +149,12 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { 'Documents', trim($inpage_links->filter('li:nth-of-type(2)')->text()) ); + + // Assert body text. + $this->assertSame( + 'Event body', + $crawler->filter('#oe-content-body p')->text() + ); } /** -- GitLab From b0786ce29e2eb0d156dd4a5ae7c33d9e56647ffe Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Mon, 28 Mar 2022 16:02:03 +0200 Subject: [PATCH 07/35] OEL-1227: Make 'oe_whitelabel' the default theme in test. --- .../Functional/WhitelabelBrowserTestBase.php | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/tests/src/Functional/WhitelabelBrowserTestBase.php b/tests/src/Functional/WhitelabelBrowserTestBase.php index 7aae37c3..6a554862 100644 --- a/tests/src/Functional/WhitelabelBrowserTestBase.php +++ b/tests/src/Functional/WhitelabelBrowserTestBase.php @@ -14,24 +14,6 @@ abstract class WhitelabelBrowserTestBase extends BrowserTestBase { /** * {@inheritdoc} */ - protected $defaultTheme = 'stark'; - - /** - * {@inheritdoc} - */ - protected function setUp(): void { - parent::setUp(); - - // Enable and set OpenEuropa Theme as default. - \Drupal::service('theme_installer')->install(['oe_whitelabel']); - \Drupal::configFactory() - ->getEditable('system.theme') - ->set('default', 'oe_whitelabel') - ->save(); - - // Rebuild the ui_pattern definitions to collect the ones provided by - // oe_whitelabel itself. - \Drupal::service('plugin.manager.ui_patterns')->clearCachedDefinitions(); - } + protected $defaultTheme = 'oe_whitelabel'; } -- GitLab From b97b1784a4853768b21eeb792b19b4e8918df1fd Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Mon, 28 Mar 2022 23:23:51 +0200 Subject: [PATCH 08/35] OEL-1227: Set up sparql in functional tests, to prevent trouble with blocks. Why? We are going to enable 'block' module as a dependency of oe_whitelabel_helper. As a consequence, all block placements from config/optional will be installed in the test. At least one of them requires sparql. Changes: - Set up sparql in base test class. - Let CorporateHeaderLogosTest also inherit from the base class. --- tests/src/Functional/CorporateHeaderLogosTest.php | 8 +------- tests/src/Functional/WhitelabelBrowserTestBase.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/tests/src/Functional/CorporateHeaderLogosTest.php b/tests/src/Functional/CorporateHeaderLogosTest.php index 593aabc6..5a024044 100644 --- a/tests/src/Functional/CorporateHeaderLogosTest.php +++ b/tests/src/Functional/CorporateHeaderLogosTest.php @@ -5,17 +5,11 @@ declare(strict_types = 1); namespace Drupal\Tests\oe_whitelabel\Functional; use Drupal\language\Entity\ConfigurableLanguage; -use Drupal\Tests\BrowserTestBase; /** * Tests that corporate logos are displayed correctly. */ -class CorporateHeaderLogosTest extends BrowserTestBase { - - /** - * {@inheritdoc} - */ - protected $defaultTheme = 'oe_whitelabel'; +class CorporateHeaderLogosTest extends WhitelabelBrowserTestBase { /** * {@inheritdoc} diff --git a/tests/src/Functional/WhitelabelBrowserTestBase.php b/tests/src/Functional/WhitelabelBrowserTestBase.php index 6a554862..fad016c4 100644 --- a/tests/src/Functional/WhitelabelBrowserTestBase.php +++ b/tests/src/Functional/WhitelabelBrowserTestBase.php @@ -5,15 +5,28 @@ declare(strict_types = 1); namespace Drupal\Tests\oe_whitelabel\Functional; use Drupal\Tests\BrowserTestBase; +use Drupal\Tests\sparql_entity_storage\Traits\SparqlConnectionTrait; /** * Base class for testing content types. */ abstract class WhitelabelBrowserTestBase extends BrowserTestBase { + use SparqlConnectionTrait; + /** * {@inheritdoc} */ protected $defaultTheme = 'oe_whitelabel'; + /** + * {@inheritdoc} + */ + protected function setUp() { + parent::setUp(); + + // Without sparql, some blocks will cause problems. + $this->setUpSparql(); + } + } -- GitLab From fd0a395f0271a4368a8fd0e594ba1f24457d7416 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 21:57:11 +0100 Subject: [PATCH 09/35] OEL-1227: Test full pages. --- tests/src/Functional/ContentEventRenderTest.php | 14 +++++++------- tests/src/Functional/ContentNewsRenderTest.php | 13 ++++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 8b874c7f..d5d9d906 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -95,14 +95,14 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { } /** - * Tests the event rendered in 'Full content' view mode. + * Tests the event page. */ - public function testEventRenderingFull(): void { - // Build node full view. - $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); - $build = $builder->view($this->node, 'full'); - $render = $this->container->get('renderer')->renderRoot($build); - $crawler = new Crawler((string) $render); + public function testEventPage(): void { + $this->drupalGet('node/' . $this->node->id()); + + /** @var \Symfony\Component\BrowserKit\AbstractBrowser $client */ + $client = $this->getSession()->getDriver()->getClient(); + $crawler = $client->getCrawler(); // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 9d4fb93c..7f057d60 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -76,14 +76,13 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { } /** - * Tests the news rendered in 'Full content' view mode. + * Tests the news page. */ - public function testNewsRenderingFull(): void { - // Build node full view. - $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); - $build = $builder->view($this->node, 'full'); - $render = $this->container->get('renderer')->renderRoot($build); - $crawler = new Crawler((string) $render); + public function testNewsPage(): void { + $this->drupalGet('node/' . $this->node->id()); + /** @var \Symfony\Component\BrowserKit\AbstractBrowser $client */ + $client = $this->getSession()->getDriver()->getClient(); + $crawler = $client->getCrawler(); // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); -- GitLab From d6ed36cb2a7b7fc0bb9f112e2c29eaa2febf42b6 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 18:02:47 +0100 Subject: [PATCH 10/35] OEL-1227: Create 'oe_w_content_banner' view mode. --- .../core.entity_view_mode.node.oe_w_content_banner.yml | 9 +++++++++ .../oe_whitelabel_helper/oe_whitelabel_helper.info.yml | 5 +++++ 2 files changed, 14 insertions(+) create mode 100644 modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml diff --git a/modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml b/modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml new file mode 100644 index 00000000..f9fd090f --- /dev/null +++ b/modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml @@ -0,0 +1,9 @@ +langcode: en +status: true +dependencies: + module: + - node +id: node.oe_w_content_banner +label: 'Content banner' +targetEntityType: node +cache: true diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml index 91e08098..cf14230e 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml @@ -9,3 +9,8 @@ dependencies: - openeuropa:oe_corporate_blocks 'interface translation project': oe_whitelabel_helper + +config_devel: + optional: + # A view mode should not depend on a theme, so it is exported in a module. + - core.entity_view_mode.node.oe_w_content_banner -- GitLab From 5e3fefba7d869d22112ce986c3314e62b719e344 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 18:07:59 +0100 Subject: [PATCH 11/35] OEL-1227: Add the 'banner' region. --- oe_whitelabel.info.yml | 1 + templates/overrides/page/page.html.twig | 1 + 2 files changed, 2 insertions(+) diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index c3e080e8..be757cfe 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -23,6 +23,7 @@ regions: header_top: Header top header_left: Header left header_right: Header right + banner: Banner header: Header breadcrumbs: Breadcrumbs sidebar_left: Sidebar diff --git a/templates/overrides/page/page.html.twig b/templates/overrides/page/page.html.twig index 3c2d749f..deddc36e 100644 --- a/templates/overrides/page/page.html.twig +++ b/templates/overrides/page/page.html.twig @@ -104,6 +104,7 @@ </header> {% endblock %} <main> + {{ page.banner }} <div class="container {{ page.header ? 'mt-2': 'mt-5' }}"> <div class="row"> {% if page.header %} -- GitLab From 6479f0f6c2aac6d07d33700430d36f2618b30e73 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 17:57:43 +0100 Subject: [PATCH 12/35] OEL-1227: Create and place the ContentBannerBlock. --- ...ock.block.oe_whitelabel_content_banner.yml | 21 ++++++++ .../oe_whitelabel_helper.info.yml | 1 + .../src/Plugin/Block/ContentBannerBlock.php | 49 +++++++++++++++++++ oe_whitelabel.info.yml | 1 + 4 files changed, 72 insertions(+) create mode 100644 config/optional/block.block.oe_whitelabel_content_banner.yml create mode 100644 modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php diff --git a/config/optional/block.block.oe_whitelabel_content_banner.yml b/config/optional/block.block.oe_whitelabel_content_banner.yml new file mode 100644 index 00000000..f5af5337 --- /dev/null +++ b/config/optional/block.block.oe_whitelabel_content_banner.yml @@ -0,0 +1,21 @@ +langcode: en +status: true +dependencies: + module: + - oe_whitelabel_helper + theme: + - oe_whitelabel +id: oe_whitelabel_content_banner +theme: oe_whitelabel +region: banner +weight: -6 +provider: null +plugin: oe_w_content_banner +settings: + id: oe_w_content_banner + label: 'Content banner' + label_display: '0' + provider: oe_whitelabel_helper + context_mapping: + node: '@node.node_route_context:node' +visibility: { } diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml index cf14230e..448ee59c 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml @@ -5,6 +5,7 @@ package: OpenEuropa Whitelabel Theme core_version_requirement: ^9.2 dependencies: + - drupal:node - oe_bootstrap_theme:oe_bootstrap_theme_helper - openeuropa:oe_corporate_blocks diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php new file mode 100644 index 00000000..ec255b23 --- /dev/null +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -0,0 +1,49 @@ +<?php + +declare(strict_types = 1); + +namespace Drupal\oe_whitelabel_helper\Plugin\Block; + +use Drupal\Core\Access\AccessResult; +use Drupal\Core\Block\BlockBase; +use Drupal\Core\Session\AccountInterface; + +/** + * Provides a view mode block. + * + * @Block( + * id = "oe_w_content_banner", + * admin_label = @Translation("Content banner"), + * context_definitions = { + * "node" = @ContextDefinition("entity:node", label = @Translation("Node")) + * }, + * ) + */ +class ContentBannerBlock extends BlockBase { + + /** + * {@inheritdoc} + */ + public function blockAccess(AccountInterface $account): AccessResult { + /** @var \Drupal\node\NodeInterface $node */ + $node = $this->getContextValue('node'); + + /** @var \Drupal\Core\Entity\EntityViewModeInterface|null $view_mode_object */ + $view_mode_object = \Drupal::entityTypeManager() + ->getStorage('entity_view_display') + ->load('node.' . $node->bundle() . '.oe_w_content_banner'); + + return AccessResult::allowedIf($view_mode_object !== NULL); + } + + /** + * {@inheritdoc} + */ + public function build(): array { + /** @var \Drupal\Core\Entity\EntityInterface $entity */ + $entity = $this->getContextValue('node'); + $view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity->getEntityTypeId()); + return $view_builder->view($entity, 'oe_w_content_banner'); + } + +} diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index be757cfe..d704bb53 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -38,6 +38,7 @@ config_devel: optional: - block.block.oe_whitelabel_branding - block.block.oe_whitelabel_breadcrumbs + - block.block.oe_whitelabel_content_banner - block.block.oe_whitelabel_ec_corporate_footer - block.block.oe_whitelabel_eu_corporate_footer - block.block.oe_whitelabel_eulogin -- GitLab From 1497e28a982e2018d37696c4485dcbbf822d26e0 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 18:05:15 +0100 Subject: [PATCH 13/35] OEL-1227: Noise in teaser view mode for 'oe_sc_event'. --- .../core.entity_view_display.node.oe_sc_event.teaser.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml index 009b8c67..62339844 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.teaser.yml @@ -5,8 +5,8 @@ dependencies: - core.entity_view_mode.node.teaser - field.field.node.oe_sc_event.body - field.field.node.oe_sc_event.oe_documents - - field.field.node.oe_sc_event.oe_sc_event_dates - field.field.node.oe_sc_event.oe_featured_media + - field.field.node.oe_sc_event.oe_sc_event_dates - field.field.node.oe_sc_event.oe_sc_event_location - field.field.node.oe_sc_event.oe_summary - node.type.oe_sc_event @@ -46,6 +46,11 @@ content: region: content hidden: body: true + langcode: true links: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true oe_documents: true oe_featured_media: true -- GitLab From f09f21af4c028f318dd15fd4447f925447e4fe7e Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 21:53:38 +0200 Subject: [PATCH 14/35] OEL-1227: Example node as return value instead of object property. --- .../src/Functional/ContentEventRenderTest.php | 23 ++++++++----------- .../src/Functional/ContentNewsRenderTest.php | 23 ++++++++----------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index d5d9d906..a0a98b1d 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -6,6 +6,7 @@ namespace Drupal\Tests\oe_whitelabel\Functional; use Drupal\file\Entity\File; use Drupal\media\Entity\Media; +use Drupal\node\NodeInterface; use Drupal\Tests\media\Traits\MediaTypeCreationTrait; use Drupal\Tests\TestFileCreationTrait; use Symfony\Component\DomCrawler\Crawler; @@ -26,18 +27,12 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { ]; /** - * A node to be rendered in diferent display views. + * Creates an example event node. * - * @var \Drupal\node\NodeInterface + * @return \Drupal\node\NodeInterface + * Event node. */ - protected $node; - - /** - * {@inheritdoc} - */ - protected function setUp(): void { - parent::setUp(); - + protected function createExampleEvent(): NodeInterface { // Create a sample media entity to be embedded. File::create([ 'uri' => $this->getTestFiles('image')[0]->uri, @@ -91,14 +86,15 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { $node->set('oe_documents', [$media_document]); $node->set('oe_featured_media', [$media_image]); $node->save(); - $this->node = $node; + return $node; } /** * Tests the event page. */ public function testEventPage(): void { - $this->drupalGet('node/' . $this->node->id()); + $node = $this->createExampleEvent(); + $this->drupalGet('node/' . $node->id()); /** @var \Symfony\Component\BrowserKit\AbstractBrowser $client */ $client = $this->getSession()->getDriver()->getClient(); @@ -161,9 +157,10 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * Tests the event rendered in 'Teaser' view mode. */ public function testEventRenderingTeaser(): void { + $node = $this->createExampleEvent(); // Build node teaser view. $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); - $build = $builder->view($this->node, 'teaser'); + $build = $builder->view($node, 'teaser'); $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 7f057d60..66db8ca3 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -6,6 +6,7 @@ namespace Drupal\Tests\oe_whitelabel\Functional; use Drupal\file\Entity\File; use Drupal\media\Entity\Media; +use Drupal\node\NodeInterface; use Drupal\Tests\media\Traits\MediaTypeCreationTrait; use Drupal\Tests\TestFileCreationTrait; use Symfony\Component\DomCrawler\Crawler; @@ -26,18 +27,12 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { ]; /** - * A node to be rendered in different display views. + * Creates an example news node. * - * @var \Drupal\node\NodeInterface + * @return \Drupal\node\NodeInterface + * News node. */ - protected $node; - - /** - * {@inheritdoc} - */ - protected function setUp(): void { - parent::setUp(); - + protected function createExampleNews(): NodeInterface { // Create a sample image media entity to be embedded. File::create([ 'uri' => $this->getTestFiles('image')[0]->uri, @@ -72,14 +67,15 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { ]); $node->set('oe_featured_media', [$media_image]); $node->save(); - $this->node = $node; + return $node; } /** * Tests the news page. */ public function testNewsPage(): void { - $this->drupalGet('node/' . $this->node->id()); + $node = $this->createExampleNews(); + $this->drupalGet('node/' . $node->id()); /** @var \Symfony\Component\BrowserKit\AbstractBrowser $client */ $client = $this->getSession()->getDriver()->getClient(); $crawler = $client->getCrawler(); @@ -124,9 +120,10 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { * Tests the news rendered in 'Teaser' view mode. */ public function testNewsRenderingTeaser(): void { + $node = $this->createExampleNews(); // Build node teaser view. $builder = \Drupal::entityTypeManager()->getViewBuilder('node'); - $build = $builder->view($this->node, 'teaser'); + $build = $builder->view($node, 'teaser'); $render = $this->container->get('renderer')->renderRoot($build); $crawler = new Crawler((string) $render); -- GitLab From e2ead1ea94a4d2a294e7fd97a4e5d6d507155075 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 21:55:46 +0200 Subject: [PATCH 15/35] OEL-1227: Enable block module in tests. --- tests/src/Functional/ContentEventRenderTest.php | 1 + tests/src/Functional/ContentNewsRenderTest.php | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index a0a98b1d..6469afe1 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -23,6 +23,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { * {@inheritdoc} */ public static $modules = [ + 'block', 'oe_whitelabel_starter_event', ]; diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 66db8ca3..377dd46a 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -23,6 +23,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { * {@inheritdoc} */ protected static $modules = [ + 'block', 'oe_whitelabel_starter_news', ]; -- GitLab From e85d9c06eef02328b85f6455c5d4058d06c437d1 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 21:56:18 +0200 Subject: [PATCH 16/35] OEL-1227: Assert that content banner is found in page, for better reporting on failure. --- tests/src/Functional/ContentEventRenderTest.php | 1 + tests/src/Functional/ContentNewsRenderTest.php | 1 + 2 files changed, 2 insertions(+) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 6469afe1..0bd7bfbc 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -103,6 +103,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); + $this->assertSame(1, $content_banner->count(), 'Content banner found.'); // Assert content banner title. $this->assertEquals( diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 377dd46a..96ae0923 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -83,6 +83,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); + $this->assertSame(1, $content_banner->count(), 'Content banner found.'); // Assert content banner image. $image = $content_banner->filter('img'); -- GitLab From 4d10e9d8f53742b76b74cede508be11ebad68247 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 18:04:53 +0100 Subject: [PATCH 17/35] OEL-1227: Configure and theme view modes for 'oe_sc_event', moving fields into content banner. --- ...ity_view_display.node.oe_sc_event.full.yml | 26 +++------- ...y.node.oe_sc_event.oe_w_content_banner.yml | 47 +++++++++++++++++++ .../oe_whitelabel_starter_event.info.yml | 1 + .../oe_whitelabel_starter_event.module | 20 ++++++-- .../node--oe-sc-event--full.html.twig | 19 ++------ ...oe-sc-event--oe-w-content-banner.html.twig | 14 ++++++ 6 files changed, 88 insertions(+), 39 deletions(-) create mode 100644 modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.oe_w_content_banner.yml create mode 100755 modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--oe-w-content-banner.html.twig diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml index a8b91042..6ad2e19b 100755 --- a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.full.yml @@ -12,7 +12,6 @@ dependencies: - node.type.oe_sc_event module: - datetime_range - - oe_content_featured_media_field - oe_whitelabel_helper - text - user @@ -26,12 +25,12 @@ content: label: above settings: { } third_party_settings: { } - weight: 1 + weight: 0 region: content links: settings: { } third_party_settings: { } - weight: 7 + weight: 4 region: content oe_documents: type: entity_reference_entity_view @@ -40,15 +39,7 @@ content: view_mode: default link: true third_party_settings: { } - weight: 6 - region: content - oe_featured_media: - type: oe_featured_media_label - label: above - settings: - link: true - third_party_settings: { } - weight: 8 + weight: 3 region: content oe_sc_event_dates: type: daterange_default @@ -58,7 +49,7 @@ content: format_type: oe_whitelabel_starter_event_date separator: to third_party_settings: { } - weight: 4 + weight: 1 region: content oe_sc_event_location: type: oe_whitelabel_helper_address_inline @@ -66,13 +57,6 @@ content: settings: delimiter: ', ' third_party_settings: { } - weight: 5 - region: content - oe_summary: - type: text_default - label: hidden - settings: { } - third_party_settings: { } weight: 2 region: content hidden: @@ -81,3 +65,5 @@ hidden: oe_content_legacy_link: true oe_content_navigation_title: true oe_content_short_title: true + oe_featured_media: true + oe_summary: true diff --git a/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.oe_w_content_banner.yml b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.oe_w_content_banner.yml new file mode 100644 index 00000000..f6d0cd2a --- /dev/null +++ b/modules/oe_whitelabel_starter_event/config/install/core.entity_view_display.node.oe_sc_event.oe_w_content_banner.yml @@ -0,0 +1,47 @@ +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.oe_w_content_banner + - field.field.node.oe_sc_event.body + - field.field.node.oe_sc_event.oe_documents + - field.field.node.oe_sc_event.oe_featured_media + - field.field.node.oe_sc_event.oe_sc_event_dates + - field.field.node.oe_sc_event.oe_sc_event_location + - field.field.node.oe_sc_event.oe_summary + - node.type.oe_sc_event + module: + - oe_content_featured_media_field + - text + - user +id: node.oe_sc_event.oe_w_content_banner +targetEntityType: node +bundle: oe_sc_event +mode: oe_w_content_banner +content: + oe_featured_media: + type: oe_featured_media_label + label: hidden + settings: + link: true + third_party_settings: { } + weight: 1 + region: content + oe_summary: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + body: true + langcode: true + links: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true + oe_documents: true + oe_sc_event_dates: true + oe_sc_event_location: true diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml index ce2617f0..2b18cf02 100755 --- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml +++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.info.yml @@ -12,4 +12,5 @@ config_devel: install: - core.date_format.oe_whitelabel_starter_event_date - core.entity_view_display.node.oe_sc_event.full + - core.entity_view_display.node.oe_sc_event.oe_w_content_banner - core.entity_view_display.node.oe_sc_event.teaser diff --git a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.module b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.module index 7e9200f5..b1143375 100755 --- a/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.module +++ b/modules/oe_whitelabel_starter_event/oe_whitelabel_starter_event.module @@ -17,14 +17,24 @@ use Drupal\Component\Utility\Html; /** * Implements template_preprocess_node() for the Event node type. */ -function oe_whitelabel_starter_event_preprocess_node__oe_sc_event(&$variables) { - if ($variables['view_mode'] !== 'full' && $variables['view_mode'] !== 'teaser') { - return; - } - _oe_whitelabel_starter_event_preprocess_featured_media($variables); +function oe_whitelabel_starter_event_preprocess_node__oe_sc_event__full(&$variables) { _oe_whitelabel_starter_event_preprocess_inpage_nav($variables); } +/** + * Implements template_preprocess_node() for the Event node type. + */ +function oe_whitelabel_starter_event_preprocess_node__oe_sc_event__oe_w_content_banner(&$variables) { + _oe_whitelabel_starter_event_preprocess_featured_media($variables); +} + +/** + * Implements template_preprocess_node() for the Event node type. + */ +function oe_whitelabel_starter_event_preprocess_node__oe_sc_event__teaser(&$variables) { + _oe_whitelabel_starter_event_preprocess_featured_media($variables); +} + /** * Helper function to preprocess the Featured media field. * diff --git a/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--full.html.twig b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--full.html.twig index faecb1a7..f7766176 100755 --- a/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--full.html.twig +++ b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--full.html.twig @@ -45,19 +45,10 @@ {% endset %} <article{{attributes}}> - {{ pattern('content_banner', { - background: 'gray', - title: label, - content: content.oe_summary, - image: image, - attributes: create_attribute().addClass(['ps-0']), + {{ pattern('inpage_navigation', { + title: 'Page content', + links: inpage_navigation_links, + content: inpage_navigation_fields, + full_layout: true, }) }} - <div class="mt-md-4-75 mt-4"> - {{ pattern('inpage_navigation', { - title: 'Page content', - links: inpage_navigation_links, - content: inpage_navigation_fields, - full_layout: true, - }) }} - </div> </article> diff --git a/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--oe-w-content-banner.html.twig b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--oe-w-content-banner.html.twig new file mode 100755 index 00000000..40436ebb --- /dev/null +++ b/modules/oe_whitelabel_starter_event/templates/node--oe-sc-event--oe-w-content-banner.html.twig @@ -0,0 +1,14 @@ +{# +/** + * @file + * Event content banner display. + */ +#} +<div{{attributes}}> + {{ pattern('content_banner', { + background: 'gray', + title: label, + content: content.oe_summary, + image: image, + }) }} +</div> -- GitLab From 31bd19071af1d39320fa114f571cab43dae70c73 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 25 Mar 2022 18:30:20 +0100 Subject: [PATCH 18/35] OEL-1227: Configure and theme view modes for 'oe_sc_news', moving fields into content banner. --- ...tity_view_display.node.oe_sc_news.full.yml | 33 +++----------- ...ay.node.oe_sc_news.oe_w_content_banner.yml | 44 +++++++++++++++++++ .../oe_whitelabel_starter_news.info.yml | 1 + .../oe_whitelabel_starter_news.module | 2 +- .../node--oe-sc-news--full.html.twig | 25 ++--------- ...-oe-sc-news--oe-w-content-banner.html.twig | 24 ++++++++++ 6 files changed, 78 insertions(+), 51 deletions(-) create mode 100644 modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.oe_w_content_banner.yml create mode 100644 modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--oe-w-content-banner.html.twig diff --git a/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.full.yml b/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.full.yml index df0a5c9d..c79b5a1c 100644 --- a/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.full.yml +++ b/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.full.yml @@ -9,8 +9,6 @@ dependencies: - field.field.node.oe_sc_news.oe_summary - node.type.oe_sc_news module: - - datetime - - oe_content_featured_media_field - text - user id: node.oe_sc_news.full @@ -23,36 +21,12 @@ content: label: hidden settings: { } third_party_settings: { } - weight: 12 + weight: 0 region: content links: settings: { } third_party_settings: { } - weight: 14 - region: content - oe_featured_media: - type: oe_featured_media_label - label: above - settings: - link: true - third_party_settings: { } - weight: 15 - region: content - oe_publication_date: - type: datetime_default - label: hidden - settings: - timezone_override: '' - format_type: oe_whitelabel_starter_news_date - third_party_settings: { } - weight: 13 - region: content - oe_summary: - type: text_default - label: hidden - settings: { } - third_party_settings: { } - weight: 11 + weight: 1 region: content hidden: langcode: true @@ -60,4 +34,7 @@ hidden: oe_content_legacy_link: true oe_content_navigation_title: true oe_content_short_title: true + oe_featured_media: true + oe_publication_date: true + oe_summary: true search_api_excerpt: true diff --git a/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.oe_w_content_banner.yml b/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.oe_w_content_banner.yml new file mode 100644 index 00000000..2eb3b134 --- /dev/null +++ b/modules/oe_whitelabel_starter_news/config/install/core.entity_view_display.node.oe_sc_news.oe_w_content_banner.yml @@ -0,0 +1,44 @@ +langcode: en +status: true +dependencies: + config: + - core.entity_view_mode.node.oe_w_content_banner + - field.field.node.oe_sc_news.body + - field.field.node.oe_sc_news.oe_featured_media + - field.field.node.oe_sc_news.oe_publication_date + - field.field.node.oe_sc_news.oe_summary + - node.type.oe_sc_news + module: + - datetime + - text + - user +id: node.oe_sc_news.oe_w_content_banner +targetEntityType: node +bundle: oe_sc_news +mode: oe_w_content_banner +content: + oe_publication_date: + type: datetime_default + label: hidden + settings: + timezone_override: '' + format_type: oe_whitelabel_starter_news_date + third_party_settings: { } + weight: 1 + region: content + oe_summary: + type: text_default + label: hidden + settings: { } + third_party_settings: { } + weight: 0 + region: content +hidden: + body: true + langcode: true + links: true + oe_content_content_owner: true + oe_content_legacy_link: true + oe_content_navigation_title: true + oe_content_short_title: true + oe_featured_media: true diff --git a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml index dc47e64b..2a50f9cf 100644 --- a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml +++ b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.info.yml @@ -12,4 +12,5 @@ config_devel: install: - core.date_format.oe_whitelabel_starter_news_date - core.entity_view_display.node.oe_sc_news.full + - core.entity_view_display.node.oe_sc_news.oe_w_content_banner - core.entity_view_display.node.oe_sc_news.teaser diff --git a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.module b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.module index 4af48a40..bd95418a 100644 --- a/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.module +++ b/modules/oe_whitelabel_starter_news/oe_whitelabel_starter_news.module @@ -17,7 +17,7 @@ use Drupal\oe_bootstrap_theme\ValueObject\ImageValueObject; * Implements template_preprocess_node() for the News node type. */ function oe_whitelabel_starter_news_preprocess_node__oe_sc_news(&$variables) { - if ($variables['view_mode'] !== 'full' && $variables['view_mode'] !== 'teaser') { + if ($variables['view_mode'] !== 'oe_w_content_banner' && $variables['view_mode'] !== 'teaser') { return; } diff --git a/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--full.html.twig b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--full.html.twig index 9b72f8e2..45d7d8e0 100644 --- a/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--full.html.twig +++ b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--full.html.twig @@ -5,29 +5,10 @@ */ #} -{% if not node.oe_publication_date.isEmpty() %} - {% set _meta = [] %} - {% set _news_publication_date %} - {{ content.oe_publication_date|field_value }} - {% endset %} - {% set _meta = _meta|merge([content.oe_publication_date]) %} -{% endif %} - <article{{attributes}}> - {{ pattern('content_banner', { - background: 'gray', - title: label, - content: content.oe_summary, - image: image, - meta: _meta, - attributes: create_attribute().addClass(['ps-0']), - }) }} - - <div class="mt-md-4-75 mt-4"> - <div class="row"> - <div class="col-12 col-lg-10 col-xl-9 col-xxl-8 mb-4"> - {{ content.body }} - </div> + <div class="row"> + <div class="col-12 col-lg-10 col-xl-9 col-xxl-8 mb-4"> + {{ content.body }} </div> </div> </article> diff --git a/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--oe-w-content-banner.html.twig b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--oe-w-content-banner.html.twig new file mode 100644 index 00000000..894f6606 --- /dev/null +++ b/modules/oe_whitelabel_starter_news/templates/node--oe-sc-news--oe-w-content-banner.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * News content banner display. + */ +#} + +{% if not node.oe_publication_date.isEmpty() %} + {% set _meta = [] %} + {% set _news_publication_date %} + {{ content.oe_publication_date|field_value }} + {% endset %} + {% set _meta = _meta|merge([content.oe_publication_date]) %} +{% endif %} + +<div{{attributes}}> + {{ pattern('content_banner', { + background: 'gray', + title: label, + content: content.oe_summary, + image: image, + meta: _meta, + }) }} +</div> -- GitLab From fba92453c88fde899a3e071112eff9915c471ad4 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 29 Mar 2022 22:34:14 +0200 Subject: [PATCH 19/35] OEL-1227: Set provider = 'node' in block definition, to force dependency. --- config/optional/block.block.oe_whitelabel_content_banner.yml | 4 ++-- .../src/Plugin/Block/ContentBannerBlock.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config/optional/block.block.oe_whitelabel_content_banner.yml b/config/optional/block.block.oe_whitelabel_content_banner.yml index f5af5337..e5e61005 100644 --- a/config/optional/block.block.oe_whitelabel_content_banner.yml +++ b/config/optional/block.block.oe_whitelabel_content_banner.yml @@ -2,7 +2,7 @@ langcode: en status: true dependencies: module: - - oe_whitelabel_helper + - node theme: - oe_whitelabel id: oe_whitelabel_content_banner @@ -15,7 +15,7 @@ settings: id: oe_w_content_banner label: 'Content banner' label_display: '0' - provider: oe_whitelabel_helper + provider: node context_mapping: node: '@node.node_route_context:node' visibility: { } diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php index ec255b23..03104656 100644 --- a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -17,6 +17,7 @@ use Drupal\Core\Session\AccountInterface; * context_definitions = { * "node" = @ContextDefinition("entity:node", label = @Translation("Node")) * }, + * provider = "node", * ) */ class ContentBannerBlock extends BlockBase { -- GitLab From de56962cb95ed769e0cfac320401d8e45887b604 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Sun, 10 Apr 2022 23:10:55 +0200 Subject: [PATCH 20/35] OEL-1227: Hard-code entity type = 'node' in content banner block. --- .../src/Plugin/Block/ContentBannerBlock.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php index 03104656..de6b8876 100644 --- a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -41,10 +41,10 @@ class ContentBannerBlock extends BlockBase { * {@inheritdoc} */ public function build(): array { - /** @var \Drupal\Core\Entity\EntityInterface $entity */ - $entity = $this->getContextValue('node'); - $view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity->getEntityTypeId()); - return $view_builder->view($entity, 'oe_w_content_banner'); + /** @var \Drupal\node\NodeInterface $node */ + $node = $this->getContextValue('node'); + $view_builder = \Drupal::entityTypeManager()->getViewBuilder('node'); + return $view_builder->view($node, 'oe_w_content_banner'); } } -- GitLab From a71013fb1d424db62bddd47653ee47d76ccdbe9b Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Sun, 10 Apr 2022 23:11:26 +0200 Subject: [PATCH 21/35] OEL-1227: Drop local variable, add line break. --- .../src/Plugin/Block/ContentBannerBlock.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php index de6b8876..c793f776 100644 --- a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -43,8 +43,9 @@ class ContentBannerBlock extends BlockBase { public function build(): array { /** @var \Drupal\node\NodeInterface $node */ $node = $this->getContextValue('node'); - $view_builder = \Drupal::entityTypeManager()->getViewBuilder('node'); - return $view_builder->view($node, 'oe_w_content_banner'); + return \Drupal::entityTypeManager() + ->getViewBuilder('node') + ->view($node, 'oe_w_content_banner'); } } -- GitLab From d459b76f22cdebc58aff3f999c51223cae692d47 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Sun, 10 Apr 2022 23:08:50 +0200 Subject: [PATCH 22/35] OEL-1227: Use dependency injection in ContentBannerBlock. --- .../src/Plugin/Block/ContentBannerBlock.php | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php index c793f776..cb790b63 100644 --- a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -6,7 +6,10 @@ namespace Drupal\oe_whitelabel_helper\Plugin\Block; use Drupal\Core\Access\AccessResult; use Drupal\Core\Block\BlockBase; +use Drupal\Core\Entity\EntityTypeManagerInterface; +use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Session\AccountInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a view mode block. @@ -20,7 +23,48 @@ use Drupal\Core\Session\AccountInterface; * provider = "node", * ) */ -class ContentBannerBlock extends BlockBase { +class ContentBannerBlock extends BlockBase implements ContainerFactoryPluginInterface { + + /** + * Entity type manager. + * + * @var \Drupal\Core\Entity\EntityTypeManagerInterface + */ + private EntityTypeManagerInterface $entityTypeManager; + + /** + * Constructor. + * + * @param array $configuration + * Plugin configuration. + * @param string $plugin_id + * Plugin id. + * @param array $plugin_definition + * Plugin definition. + * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager + * Entity type manager. + */ + public function __construct( + array $configuration, + string $plugin_id, + array $plugin_definition, + EntityTypeManagerInterface $entity_type_manager + ) { + parent::__construct($configuration, $plugin_id, $plugin_definition); + $this->entityTypeManager = $entity_type_manager; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition): self { + return new self( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity_type.manager'), + ); + } /** * {@inheritdoc} @@ -30,7 +74,7 @@ class ContentBannerBlock extends BlockBase { $node = $this->getContextValue('node'); /** @var \Drupal\Core\Entity\EntityViewModeInterface|null $view_mode_object */ - $view_mode_object = \Drupal::entityTypeManager() + $view_mode_object = $this->entityTypeManager ->getStorage('entity_view_display') ->load('node.' . $node->bundle() . '.oe_w_content_banner'); @@ -43,7 +87,7 @@ class ContentBannerBlock extends BlockBase { public function build(): array { /** @var \Drupal\node\NodeInterface $node */ $node = $this->getContextValue('node'); - return \Drupal::entityTypeManager() + return $this->entityTypeManager ->getViewBuilder('node') ->view($node, 'oe_w_content_banner'); } -- GitLab From aa14f11b3ce004a3c3c990f55d9b6b7ae2bc2158 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Sun, 10 Apr 2022 23:09:17 +0200 Subject: [PATCH 23/35] OEL-1227: Check node view access in content banner block. --- .../src/Plugin/Block/ContentBannerBlock.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php index cb790b63..8a728416 100644 --- a/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php +++ b/modules/oe_whitelabel_helper/src/Plugin/Block/ContentBannerBlock.php @@ -78,7 +78,8 @@ class ContentBannerBlock extends BlockBase implements ContainerFactoryPluginInte ->getStorage('entity_view_display') ->load('node.' . $node->bundle() . '.oe_w_content_banner'); - return AccessResult::allowedIf($view_mode_object !== NULL); + return AccessResult::allowedIf($view_mode_object !== NULL) + ->andIf($node->access('view', $account, TRUE)); } /** -- GitLab From dce44418f668bff78e6eb9efc13723d210bad6fc Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Tue, 12 Apr 2022 19:37:51 +0200 Subject: [PATCH 24/35] OEL-1227: Rename theme region 'banner' -> 'hero'. --- config/optional/block.block.oe_whitelabel_content_banner.yml | 2 +- oe_whitelabel.info.yml | 2 +- templates/overrides/page/page.html.twig | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/optional/block.block.oe_whitelabel_content_banner.yml b/config/optional/block.block.oe_whitelabel_content_banner.yml index e5e61005..a7739a82 100644 --- a/config/optional/block.block.oe_whitelabel_content_banner.yml +++ b/config/optional/block.block.oe_whitelabel_content_banner.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_content_banner theme: oe_whitelabel -region: banner +region: hero weight: -6 provider: null plugin: oe_w_content_banner diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index d704bb53..9ef9fd56 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -23,7 +23,7 @@ regions: header_top: Header top header_left: Header left header_right: Header right - banner: Banner + hero: 'Hero (full width)' header: Header breadcrumbs: Breadcrumbs sidebar_left: Sidebar diff --git a/templates/overrides/page/page.html.twig b/templates/overrides/page/page.html.twig index deddc36e..15f4f253 100644 --- a/templates/overrides/page/page.html.twig +++ b/templates/overrides/page/page.html.twig @@ -104,7 +104,7 @@ </header> {% endblock %} <main> - {{ page.banner }} + {{ page.hero }} <div class="container {{ page.header ? 'mt-2': 'mt-5' }}"> <div class="row"> {% if page.header %} -- GitLab From 4a5fbc0f850e0c70528e10ad1c12afc03d6aa567 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Thu, 14 Apr 2022 13:21:03 +0200 Subject: [PATCH 25/35] OEL-1227: Drop assertion message, and use assertCount(). Firstly, the assertion message should have been inverted: See https://www.drupal.org/project/coding_standards/issues/2057905#comment-9470963 Secondly, we avoid assertion messages when possible. People can look up the line number on fail. --- tests/src/Functional/ContentEventRenderTest.php | 2 +- tests/src/Functional/ContentNewsRenderTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/Functional/ContentEventRenderTest.php b/tests/src/Functional/ContentEventRenderTest.php index 0bd7bfbc..9163263d 100644 --- a/tests/src/Functional/ContentEventRenderTest.php +++ b/tests/src/Functional/ContentEventRenderTest.php @@ -103,7 +103,7 @@ class ContentEventRenderTest extends WhitelabelBrowserTestBase { // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); - $this->assertSame(1, $content_banner->count(), 'Content banner found.'); + $this->assertCount(1, $content_banner); // Assert content banner title. $this->assertEquals( diff --git a/tests/src/Functional/ContentNewsRenderTest.php b/tests/src/Functional/ContentNewsRenderTest.php index 96ae0923..ae0eef5d 100644 --- a/tests/src/Functional/ContentNewsRenderTest.php +++ b/tests/src/Functional/ContentNewsRenderTest.php @@ -83,7 +83,7 @@ class ContentNewsRenderTest extends WhitelabelBrowserTestBase { // Select the content banner element. $content_banner = $crawler->filter('.bcl-content-banner'); - $this->assertSame(1, $content_banner->count(), 'Content banner found.'); + $this->assertCount(1, $content_banner); // Assert content banner image. $image = $content_banner->filter('img'); -- GitLab From 7e542dd18791581f99eb3d2b7489ad2d2aa4aa58 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Thu, 14 Apr 2022 13:29:56 +0200 Subject: [PATCH 26/35] OEL-1227: Drop comment in info file. --- modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml index 448ee59c..6fed7556 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml @@ -13,5 +13,4 @@ dependencies: config_devel: optional: - # A view mode should not depend on a theme, so it is exported in a module. - core.entity_view_mode.node.oe_w_content_banner -- GitLab From 24abe538b810868cd6e56662ac6c9f8ec285aef0 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Thu, 14 Apr 2022 13:56:13 +0200 Subject: [PATCH 27/35] OEL-1227: Move view mode config from config/optional to config/install, because other configs depend on it. --- .../core.entity_view_mode.node.oe_w_content_banner.yml | 0 modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename modules/oe_whitelabel_helper/config/{optional => install}/core.entity_view_mode.node.oe_w_content_banner.yml (100%) diff --git a/modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml b/modules/oe_whitelabel_helper/config/install/core.entity_view_mode.node.oe_w_content_banner.yml similarity index 100% rename from modules/oe_whitelabel_helper/config/optional/core.entity_view_mode.node.oe_w_content_banner.yml rename to modules/oe_whitelabel_helper/config/install/core.entity_view_mode.node.oe_w_content_banner.yml diff --git a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml index 6fed7556..3eb3f1ff 100644 --- a/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml +++ b/modules/oe_whitelabel_helper/oe_whitelabel_helper.info.yml @@ -12,5 +12,5 @@ dependencies: 'interface translation project': oe_whitelabel_helper config_devel: - optional: + install: - core.entity_view_mode.node.oe_w_content_banner -- GitLab From 7d9c3fbe4a80d9f906eaa83cc3fdd4371baaeb8e Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 19 Apr 2022 17:24:07 +0200 Subject: [PATCH 28/35] OEL-1453: Place blocks in the right regions on config. --- config/optional/block.block.oe_whitelabel_eulogin.yml | 2 +- config/optional/block.block.oe_whitelabel_language_switcher.yml | 2 +- config/optional/block.block.oe_whitelabel_local_actions.yml | 2 +- config/optional/block.block.oe_whitelabel_local_tasks.yml | 2 +- config/optional/block.block.oe_whitelabel_main_navigation.yml | 2 +- config/optional/block.block.oe_whitelabel_messages.yml | 2 +- config/optional/block.block.oe_whitelabel_search_form.yml | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config/optional/block.block.oe_whitelabel_eulogin.yml b/config/optional/block.block.oe_whitelabel_eulogin.yml index 80d9e261..339e2699 100644 --- a/config/optional/block.block.oe_whitelabel_eulogin.yml +++ b/config/optional/block.block.oe_whitelabel_eulogin.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_eulogin theme: oe_whitelabel -region: navbar_right +region: header_top weight: -4 provider: null plugin: oe_authentication_login_block diff --git a/config/optional/block.block.oe_whitelabel_language_switcher.yml b/config/optional/block.block.oe_whitelabel_language_switcher.yml index b8b46125..e118db63 100644 --- a/config/optional/block.block.oe_whitelabel_language_switcher.yml +++ b/config/optional/block.block.oe_whitelabel_language_switcher.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_language_switcher theme: oe_whitelabel -region: navbar_right +region: header_top weight: -5 provider: null plugin: 'language_block:language_interface' diff --git a/config/optional/block.block.oe_whitelabel_local_actions.yml b/config/optional/block.block.oe_whitelabel_local_actions.yml index 094fbea4..0fff8fbf 100644 --- a/config/optional/block.block.oe_whitelabel_local_actions.yml +++ b/config/optional/block.block.oe_whitelabel_local_actions.yml @@ -5,7 +5,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_local_actions theme: oe_whitelabel -region: content +region: highlighted weight: -4 provider: null plugin: local_actions_block diff --git a/config/optional/block.block.oe_whitelabel_local_tasks.yml b/config/optional/block.block.oe_whitelabel_local_tasks.yml index 7d547811..ecee83ba 100644 --- a/config/optional/block.block.oe_whitelabel_local_tasks.yml +++ b/config/optional/block.block.oe_whitelabel_local_tasks.yml @@ -5,7 +5,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_local_tasks theme: oe_whitelabel -region: content +region: highlighted weight: -5 provider: null plugin: local_tasks_block diff --git a/config/optional/block.block.oe_whitelabel_main_navigation.yml b/config/optional/block.block.oe_whitelabel_main_navigation.yml index 9494eb72..ed39f8ba 100755 --- a/config/optional/block.block.oe_whitelabel_main_navigation.yml +++ b/config/optional/block.block.oe_whitelabel_main_navigation.yml @@ -9,7 +9,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_main_navigation theme: oe_whitelabel -region: header_left +region: navigation_left weight: 0 provider: null plugin: 'system_menu_block:main' diff --git a/config/optional/block.block.oe_whitelabel_messages.yml b/config/optional/block.block.oe_whitelabel_messages.yml index cf87516d..f21a18c2 100644 --- a/config/optional/block.block.oe_whitelabel_messages.yml +++ b/config/optional/block.block.oe_whitelabel_messages.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_messages theme: oe_whitelabel -region: content +region: highlighted weight: -6 provider: null plugin: system_messages_block diff --git a/config/optional/block.block.oe_whitelabel_search_form.yml b/config/optional/block.block.oe_whitelabel_search_form.yml index 22437b3a..aad75c89 100644 --- a/config/optional/block.block.oe_whitelabel_search_form.yml +++ b/config/optional/block.block.oe_whitelabel_search_form.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_search_form theme: oe_whitelabel -region: header_right +region: navigation_right weight: 0 provider: null plugin: whitelabel_search_block -- GitLab From 7d98b9f328557338ab3e1178df552ee55e8a341f Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 19 Apr 2022 17:24:45 +0200 Subject: [PATCH 29/35] OEL-1453: Blocks refactor. --- oe_whitelabel.info.yml | 24 ++++++++++++------------ templates/overrides/page/page.html.twig | 20 +++++++++++--------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index 9ef9fd56..f5f4d6e8 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -18,19 +18,19 @@ ckeditor_stylesheets: - assets/css/oe-bcl-default.min.css regions: - navbar_branding: Navbar branding - navbar_right: Navbar right - header_top: Header top - header_left: Header left - header_right: Header right + navbar_branding: 'Navbar branding' + header_top: 'Header top' + navigation_left: 'Navigation left' + navigation_right: 'Navigation right' hero: 'Hero (full width)' - header: Header - breadcrumbs: Breadcrumbs - sidebar_left: Sidebar - content_top: Content top - content: Content - page_bottom: Page bottom - footer: Footer + header: 'Header' + breadcrumbs: 'Breadcrumbs' + highlighted: 'Highlighted' + sidebar_left: 'Sidebar' + content_top: 'Content top' + content: 'Content' + page_bottom: 'Page bottom' + footer: 'Footer' config_devel: install: diff --git a/templates/overrides/page/page.html.twig b/templates/overrides/page/page.html.twig index 15f4f253..95a53596 100644 --- a/templates/overrides/page/page.html.twig +++ b/templates/overrides/page/page.html.twig @@ -30,10 +30,9 @@ * Regions: * - page.navbar_branding: Items for the navbar brand region (logo). * - page.navbar_left: Items for the navbar left region (primary menu). - * - page.navbar_right: Items for the navbar right region. - * - page.header_top: Items for the navbar right region. - * - page.header_left: Items for the navbar right region. - * - page.header_right: Items for the navbar right region. + * - page.header_top: Items for the header top region. + * - page.navigation_left: Items for the navbar right region. + * - page.navigation_right: Items for the navbar right region. * - page.header: Items for the header region. * - page.sidebar_left: Items for the sidebar left region. * - page.sidebar_right: Items for the sidebar right region. @@ -75,7 +74,7 @@ {% block head %} {{ pattern('navbar', { navigation: corporate_logos, - right: page.navbar_right, + right: page.header_top, color_scheme: 'light', background: false, attributes: create_attribute().addClass(['w-100', 'shadow-sm']), @@ -87,8 +86,8 @@ {# Navbar. #} {% block navbar %} {{ pattern('navbar', { - navigation: page.header_left, - right: page.header_right, + navigation: page.navigation_left, + right: page.navigation_right, color_scheme: 'dark', background: false, expanded_breakpoint: 'lg', @@ -101,14 +100,17 @@ {{ page.breadcrumbs }} {% endblock %} </div> + {% if page.header %} + {{ page.header }} + {% endif %} </header> {% endblock %} <main> {{ page.hero }} <div class="container {{ page.header ? 'mt-2': 'mt-5' }}"> <div class="row"> - {% if page.header %} - {{ page.header }} + {% if page.highlighted %} + {{ page.highlighted }} {% endif %} {% if page.sidebar_left %} -- GitLab From 51c39071975a6a429b7822a0d737ed95b28d2d10 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Tue, 19 Apr 2022 19:04:40 +0200 Subject: [PATCH 30/35] OEL-1453: Remove page_bottom region. --- oe_whitelabel.info.yml | 1 - templates/overrides/page/page.html.twig | 1 - 2 files changed, 2 deletions(-) diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index f5f4d6e8..c45b3fc7 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -29,7 +29,6 @@ regions: sidebar_left: 'Sidebar' content_top: 'Content top' content: 'Content' - page_bottom: 'Page bottom' footer: 'Footer' config_devel: diff --git a/templates/overrides/page/page.html.twig b/templates/overrides/page/page.html.twig index 95a53596..0594631a 100644 --- a/templates/overrides/page/page.html.twig +++ b/templates/overrides/page/page.html.twig @@ -37,7 +37,6 @@ * - page.sidebar_left: Items for the sidebar left region. * - page.sidebar_right: Items for the sidebar right region. * - page.content: The main content of the current page. - * - page.page_bottom: The content of the current page. * - page.footer: Items for the footer region. * * @see template_preprocess_page() -- GitLab From cd88ba801730823b8cf2ab74473851a9c7afcd4c Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 21 Apr 2022 12:56:52 +0200 Subject: [PATCH 31/35] OEL-1453: Rename navbar branding to header branding. --- config/optional/block.block.oe_whitelabel_branding.yml | 2 +- oe_whitelabel.info.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/optional/block.block.oe_whitelabel_branding.yml b/config/optional/block.block.oe_whitelabel_branding.yml index e860d619..6b8c0884 100644 --- a/config/optional/block.block.oe_whitelabel_branding.yml +++ b/config/optional/block.block.oe_whitelabel_branding.yml @@ -7,7 +7,7 @@ dependencies: - oe_whitelabel id: oe_whitelabel_branding theme: oe_whitelabel -region: navbar_branding +region: header_branding weight: -2 provider: null plugin: system_branding_block diff --git a/oe_whitelabel.info.yml b/oe_whitelabel.info.yml index c45b3fc7..1e46bc1a 100644 --- a/oe_whitelabel.info.yml +++ b/oe_whitelabel.info.yml @@ -18,7 +18,7 @@ ckeditor_stylesheets: - assets/css/oe-bcl-default.min.css regions: - navbar_branding: 'Navbar branding' + header_branding: 'Header branding' header_top: 'Header top' navigation_left: 'Navigation left' navigation_right: 'Navigation right' -- GitLab From 5f2fda31c2bd53a9b38d366943d82463574c71e7 Mon Sep 17 00:00:00 2001 From: escuriola <escuriola@gmail.com> Date: Thu, 21 Apr 2022 12:57:17 +0200 Subject: [PATCH 32/35] OEL-1453: Update page docblock with the current blocks. --- templates/overrides/page/page.html.twig | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/templates/overrides/page/page.html.twig b/templates/overrides/page/page.html.twig index 0594631a..cd47a91a 100644 --- a/templates/overrides/page/page.html.twig +++ b/templates/overrides/page/page.html.twig @@ -28,14 +28,16 @@ * comment/reply/12345). * * Regions: - * - page.navbar_branding: Items for the navbar brand region (logo). - * - page.navbar_left: Items for the navbar left region (primary menu). + * - page.header_branding: Items for the header branding region (logo). * - page.header_top: Items for the header top region. - * - page.navigation_left: Items for the navbar right region. - * - page.navigation_right: Items for the navbar right region. + * - page.navigation_left: Items for the navigation right region. + * - page.navigation_right: Items for the navigation right region. + * - page.hero: Items for the hero region. * - page.header: Items for the header region. + * - page.breadcrumbs: Items for the breadcrumbs region. + * - page.highlighted: Items for the highlighted region. * - page.sidebar_left: Items for the sidebar left region. - * - page.sidebar_right: Items for the sidebar right region. + * - page.content_top: Items for the top content. * - page.content: The main content of the current page. * - page.footer: Items for the footer region. * @@ -80,7 +82,7 @@ }) }} {% endblock %} - {{ page.navbar_branding }} + {{ page.header_branding }} {# Navbar. #} {% block navbar %} -- GitLab From 7a4a92a7f3a82dabf45de970d6c144d3b73ba0fb Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Thu, 14 Apr 2022 22:50:32 +0200 Subject: [PATCH 33/35] OEL-1416: Use latest pre-release for oe_bootstrap_theme 1.x. --- composer.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/composer.json b/composer.json index a14382ea..7a9c0425 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "cweagans/composer-patches": "^1.7", "drupal/core": "^9.2", "drupal/twig_field_value": "^2.0", - "openeuropa/oe_bootstrap_theme": "1.0.0-alpha8" + "openeuropa/oe_bootstrap_theme": "0.1.202204221756" }, "require-dev": { "composer/installers": "^1.11", @@ -81,11 +81,6 @@ } } }, - "patches": { - "openeuropa/oe_bootstrap_theme": { - "latest": "https://github.com/openeuropa/oe_bootstrap_theme/compare/1.0.0-alpha8..1.x.diff" - } - }, "drupal-scaffold": { "locations": { "web-root": "./build" -- GitLab From 352cb9286fbae36cfff0c5398e8e8b7144ec1749 Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 15 Apr 2022 16:15:56 +0200 Subject: [PATCH 34/35] OEL-1416: Fix footer block tests for new version of BCL. --- tests/src/Kernel/FooterBlockTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/src/Kernel/FooterBlockTest.php b/tests/src/Kernel/FooterBlockTest.php index 1374dbe2..b7b122b0 100644 --- a/tests/src/Kernel/FooterBlockTest.php +++ b/tests/src/Kernel/FooterBlockTest.php @@ -66,7 +66,7 @@ class FooterBlockTest extends SparqlKernelTestBase { $this->assertCount(1, $borderedSections); $sectionTitles = $crawler->filter('p.fw-bold.mb-2'); $this->assertCount(2, $sectionTitles); - $sectionLinks = $crawler->filter('div.col-12.col-lg-4:nth-child(2) a.standalone.d-block.mb-1'); + $sectionLinks = $crawler->filter('div.col-12.col-lg-4:nth-child(2) .mb-1 a.standalone'); $this->assertCount(3, $sectionLinks); } @@ -102,7 +102,7 @@ class FooterBlockTest extends SparqlKernelTestBase { $this->assertCount(1, $borderedSections); $sectionTitles = $crawler->filter('p.fw-bold.mb-2'); $this->assertCount(5, $sectionTitles); - $sectionLinks = $crawler->filter('div.col-12.col-lg-4:nth-child(2) a.standalone.d-block.mb-1'); + $sectionLinks = $crawler->filter('div.col-12.col-lg-4:nth-child(2) .mb-1 a.standalone'); $this->assertCount(10, $sectionLinks); } -- GitLab From d032759c4952db1988d2473a8c8dfe9b292b4c5d Mon Sep 17 00:00:00 2001 From: Andreas Hennings <andreas@dqxtech.net> Date: Fri, 22 Apr 2022 17:58:44 +0200 Subject: [PATCH 35/35] OEL-1416: Fix 'unsafe repository' message in drone. --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index 3d2855f4..105c3b95 100644 --- a/.drone.yml +++ b/.drone.yml @@ -94,6 +94,7 @@ pipeline: before-release: image: registry.fpfis.eu/fpfis/httpd-php:${PHP_VERSION}-ci commands: + - git config --global --add safe.directory /test/oe_whitelabel - apt-get update - apt-get install zip - ./vendor/bin/run release:create-archive --tag=${DRONE_TAG} -- GitLab